Found in 3 comments on Hacker News
plainOldText · 2020-01-27 · Original thread
If you really want to learn Elixir, you should learn enough Erlang prior, to get a better understanding of how Erlang/OTP all fits together. Thus, I would recommend the following structure:

1. Read Joe Armstrong's Book: Programming Erlang to learn the basics and the philosophy behind Erlang from one of its creators. [1]

2. Read Erlang and OTP in Action to learn more about the OTP (Open Telecom Platform), applications and gen_servers (which btw, you will find them all over).

3. Learn Elixir, perhaps from one of the books Elixir in Action [3] or Programming Elixir. [4]

4. Finally, start implementing your cool personal project.

Ah, one more thing: Elixir School is also a wonderful resource with tons of information and examples [5] and of course the official Elixir website with its excellent docs. [6]

–––

[1] https://www.amazon.com/Programming-Erlang-Concurrent-Pragmat...

[2] https://www.amazon.com/Erlang-OTP-Action-Martin-Logan/dp/193...

[3] https://www.amazon.com/Elixir-Action-Sa%C5%A1a-Juri-cacute/d...

[4] https://www.amazon.com/Programming-Elixir-1-6-Functional-Con...

[5] https://elixirschool.com/

[6] https://elixir-lang.org/

Time-wise, it's hard to say. I went through Saša Jurić's Elixir in Action[1] before diving into Phoenix. But that's because I was coming from an object-oriented background (Ruby, some C#) and wanted a bit more exposure to functional programming.

Elixir is a fairly deep language, but you don't need to know it inside out to become productive with Phoenix. Obviously it depends on what type of app you want to develop, but you can probably piece together a simple CRUD app just by reading the official Phoenix guides. Everyone has a different style of learning though so it's hard to say beyond that. Ultimately, just like with Rails, knowing the language itself (i.e. Ruby) will be very helpful once you get beyond the basics.

Specifically, there were a few things that took a while for me to fully wrap my mind around. For example, data is immutable, so loops are written differently. Instead of a traditional for loop to loop over a collection, you would instead use recursion. So if you're like me and are used to reaching for a for loop or a while loop to iterate over collections, you'll need a bit of time to get used to some of Elixir's mechanisms.

[1]https://www.amazon.com/Elixir-Action-scaron-Juri-cacute/dp/1...

Fresh book recommendations delivered straight to your inbox every Thursday.