When you start your adventure with Elixir, you may wonder where to get the knowledge. In this article, I have prepared a list of books that may help you become an Elixir programmer or improve your career. This list has been split into different levels of skill. I hope you find something that fits your expectations.
An exciting position beyond the division is Adopting Elixir by Ben Marx, José Valim, and Bruce Tate. A highly recommended book for a newcomer who wants to understand not only the language but also business use cases in production applications.
The book focuses on understanding customer requirements and analyzing how they can meet them by implementing distributed applications. This item does not teach programming nor the language’s syntax but instead focuses on learning and understanding the idea. It also highlights common problems and business cases for Elixir usage.
A comprehensive introduction to the language is provided in Elixir in Action by Saša Jurić. In this book, it is possible to find the basics of the language, history, and motivation to create this language. Step-by-step, you can start your career with the examples and explanations presented in a very accessible way.
The book briefly describes the usage of Erlang VM and allows us to understand the general concepts of Elixir. As a beginner, you can try to follow the rules and patterns of Elixir in your code.
Another attractive proposition is Programming Elixir 1.6 by Dave Thomas. In this book, the author teaches functional programming without academic definitions. You will meet Elixir: a modern, functional, and concurrent language built on a robust Erlang VM machine.
Make sure you select a new version of the book updated with: new sections for the debugger, code formatter, Distillery, and protocols.
An exciting proposal emphasizing OTP and functional programming is The Little Elixir & OTP Guidebook created by Benjamin Tan Wei Hao. Learn about how OTP helps you build: scalable, fault-tolerant, and distributed applications through several fun examples. This one may be brief after reading previous books, but it is a different look at prior topics.
For more advanced developers, I recommend Programming Phoenix 1.4 created by Chris McCord, Bruce Tate and José Valim. This book will be an excellent description of the most popular framework for Elixir.
The book is a guide to the latest version of Phoenix. It also introduces end-to-end testing, database connection using Ecto (see next book too), and Channels support.
It is especially recommended for API developers expecting to build fast and reliable applications. It can also be interesting for Ruby Developers who decided to change a language because Phoenix framework was inspired by Ruby on Rails but adapted to the requirements and expectations of Elixir.
Ecto is the most popular solution used to communicate with the database. It defines some ORM for Elixir applications. Worth finding out more about Ecto thanks to Programming Ecto by Darin Wilson and Eric Meadows-Jönsson.
The book is especially recommended for more initiated developers interested in the way Ecto works, especially the emphasis on repos, queries, schemas, changesets, and transactions. It points out through examples how to use Ecto to make it effective, and that’s a huge advantage. Learning by example can speed up your understanding.
For decades, OTP has helped developers create incredibly robust, scalable applications with unparalleled uptime. Functional Web Development with Elixir, OTP, and Phoenix by Lance Halvorsen describes OTP in practice.
The book provides a different perspective on building an application. With OTP, you can use Channels instead of HTTP connections and model domain entities without an ORM or database. With this book, you can emphasize scalability through the use of OTP.
I recommend Metaprogramming Elixir created by Chris McCord to experts and people expecting more possibilities of using Elixir language. The author of the Phoenix framework guides you step-by-step through the world of macros.
You can learn an advanced approach to programming and using the language’s potential by using macros in your code. Extend Elixir with your first-class features, optimize performance, and create domain-specific languages.
As in one of the previous books, in Designing Elixir Systems with OTP by James Edward Gray II and Bruce Tate we also come across the world of OTP.
This item is recommended for experts who know how to code in Elixir. Now you will learn to think about it. Focus on learning how to divide layers and build applications clearly and wisely.
This book shows you how to go beyond simple programming to design, which means creating the right layers. The use of patterns that ensure our telephone systems’ reliability and speed can provide the previously unattainable potential of your work.
The list I have prepared is an overview of the Elixir books. I chose the items that I think are worth getting to know first. Divided by advancement so that you can choose what suits your current advancement.