After ten years of web programming in Python (and JS, HTML/CSS, etc.), these days I’m learning the new Elixir language. While learning Ruby or some JavaScript library felt familiar and even easy, with Elixir I feel completely out of my comfort zone… but hey, that’s a great sign you are improving.

Elixir is not only a new language, but it’s also very different than the current mainstream ones, because it’s based on another paradigm: not “object-oriented” but ”functional” instead. This means you’ll need to write code in much different way that before. As Jose Valim say: “It looks like Ruby, but it’s not Ruby at all”.

The documentation it’s ok but very limited, so I would recommend going straight to the books. Luckily there are already several great books published. This is my ordered recommended list of books you should read to learn Elixir.

1st. Learn Functional Programming with Elixir (by Ulisses Almeida)

Learn Functional Programming with Elixir: New Foundations for a New World

This first book is a great introduction of both Elixir and the functional paradigm. While does not covers all of what Elixir can do, it gives you enough base knowledge to start and not be surprised by the weird/awesome parts of the language (like the fact that “=” is now pattern matching, not assignment and the consequences of that).

2nd. Programming Phoenix (by Chris McCord)

Programming Phoenix: Productive |> Reliable |> Fast

Eager to do web programming in Elixir? This book will introduce you to the Phoenix Framework (http://phoenixframework.org), by its creator himself. If you’re not in hurry you might want to just skim it and return to it later.

Sadly, this book it’s about Phoenix 1.0, and currently the framework it’s in a transition period. The new Phoenix 1.3 make some changes, specially to the structure of a new project and the philosophy behind it.

UPDATE: Programming Phoenix > 1.4 is (almost) out! You can buy a work in progress here.

3rd. What’s new in Ecto 2.1 (by the Plataformatec team)

A book disguised as a changelog

What’s this? A changelog? Not really… ok, maybe, but is also a book about the de-facto ORM (actually, just “RM”) of the Elixir ecosystem and one of the biggest component of Phoenix.

The changes in this second version of Ecto are so big — Phoenix 1.3 has changed as well because of it — that this book paint an almost complete picture of what Ecto can do.

Is not an introduction though, you should first read either its documentation or the chapter about in the Phoenix book.

4th. Programming Elixir ≥ 1.6 (by Dave Thomas)

Programming Elixir ≥ 1.6: Functional |> Concurrent |> Pragmatic |> Fun

Last, but not least, this is a in-deep and wide introduction to Elixir. From the basis to the most advanced concepts like OTP and macros.

When you get ready to really know the language, this’ll be the book for you.

If the name of the author sounds familiar, it might be because he co-authored the amazing “The Pragmatic Programmer” and many Ruby books… He also runs The Pragmatic Bookshelf publishing company.


That’s it! If you feel that I’ve missed something important or have a suggestion, please let me know.

I hope you become excited about Elixir as I am. Have a nice read!