Collection of top articles reflecting the Zen of Elixir
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

The Zen of Elixir

Mastering Elixir is not easy. This project tries to collect the most inspiring resources about Elixir. It's not about teaching the basics, it's about the most important things that every Elixir programmer should know.

There're articles, talks etc.. covering various topics, but they can be hard to find as Elixir beginners. That's why this project is created. These resources are useful and inspiring even if you don't program in Elixir (yet).

(Check out awesome-elixir for a list of books, tools, forums etc.. for Elixir)


It's important to understand Erlang - not the syntax - if you want to be a master of Elixir. Learn to think in the BEAM way by reading Fred's great article.

Every book about FP have a section on tail recursion, but should we really always program in this style? More importantly, when in doubt, benchmark it!

Everyone is excited about "Erlang Process", but should you use them at all times? Do separate modules always need to associate with separate processes? This inspiring article from Saša Jurić shows the differences between functions/modules and processes and how you should leverage them for different concerns.

Interestingly, not long after this, in José's keynote at ElixirConf.EU 2017 he also talked about modules and processes (and data) being different parts which compose Elixir together.


Erlang and Elixir are considered as functional languages. However, it's not a goal. So what is the goal of Elixir? And how FP contributes to it? Read this to find out.

It can be confusing to understand rebinding of immutable variables in Elixir. Let José explain this for you :)

Elixir excels at scalability and maintainability, but how to achieve this? You should consider umbrella projects first for your great projects.

Elixir is dynamically typed, so tests are important. It's functional, so it's very different to write tests. Forget what you know and learn from this great post.

Be it rendering HTTP response, querying a database or even writing to a file, what you actually operate on are bytes. All your messages passed around in distributed Erlang clusters are bytes too. How can we send bytes more efficiently? Do we really need to build the entire response or query as one whole thing before sending it? Check out this excellent series to learn the "secrets" of sending bytes.


We believe Elixir should not be limited to Phoenix, but still keep this section considering its popularity.

Phoenix is just an application like other applications. So learn to think of Phoenix in this way from this talk.


Please provide a link and a summary describing why it's important knowledge for Elixir programmers.