When learning, what order of books did you start with?

My suggestion is a more “dynamic ordering”:

  1. Programming Elixir 1.3 (November 2016)
  2. Designing for Scalability with Erlang/OTP (June 2016)
  3. Programming Phoenix 1.3 (June 2018)
  4. Programming Phoenix (April 2016)
    4*) The Little Elixir & OTP Guidebook (September 2016)
    5*) Elixir in Action (June 2015)
    5*) Elixir in Action 2e (2018 (>=Q2))

(1) You already started this, so keep going. (I got to Ch20 on the v1.2 edition)

(2) Given your statement of wanting to build a web app with Phoenix a Phoenix book should be right here. But Programming Phoenix deals with 1.1.6 and ideally you’d want to catch the 1.3 edition - and you personally put it at the end of your list. Given that you have expressed a strong interest in OTP I’d put DSEO here (so far I made it to Chapter 9, implementing the examples in Elixir). The example application is a Base Station Controller.

Chapter 2 has a whirlwind tour of Erlang which should be enough to get you going (by that point in time I had FPE and CPE under my belt) however if you need an additional reference consult LYSE if you get stuck.

Progressing through the initial chapters in the book find the equivalent portions of the relevant Elixir official documentation - for example GenServer for “Chapter 4 Generic Servers”. That way you’ll acquire up to date Elixir knowledge.

Drawing parallels for the deployment chapters becomes a bit more difficult because some of the nitty gritty being discussed is being managed for the most part by mix (though the book discusses rebar3 a little later on) and distillery in Elixir.

Note that Chapter 6 discusses gen_fsm which has since been deprecated in favour of gen_statem - so dig through the Erlang documentation and use gen_statem instead (there isn’t an Elixir equivalent anyway).

In Chapter 7 Event Handlers stick to Erlang so that you know how gen_event works (Elixir’s GenEvent has been deprecated - though Logger will still use gen_event).

(3) Programming Phoenix 1.3 in this position is kind of a floater. You kind of want to wait for the 1.3 edition. But don’t wait for the final release and get in on it as the beta becomes available (and give any feedback if you can on the PragProg forum). For the beta the book will become available in pieces - so you can switch to your other main resource in the any gaps that you may experience.

(4*) Given that you are committed to DSEO I think that this one may be kind of optional (I own it but haven’t read it). There have been some interesting changes in Elixir’s OTP since the book’s release in September 2016 so I think that DSEO + official Elixir documentation will give you more up to date knowledge. But if you find DSEO a bit heavy going it is certainly an option to switch to this to get some more background first. And it’s also an option to skim through this after completing DSEO.

(5*) The primary reason this is last is because it is the oldest book (Elixir 1.0.x/Erlang 17.x) AND because there may be a new edition in the second half of 2018. In some ways I prefer it to Programming Elixir 1.3 because it feels like “learning to use Elixir the Erlang/BEAM way”. As such it gets faster to the point; you are being introduced to the concurrency primitives by chapter 5, GenServer by Chapter 6, and in Chapter 11 you are piecing together a web server from cowboy, plug, httpoison, etc.

Again this book could be a good option to switch to if you find DSEO a bit hard going early on.

Now there may be a MEAP and that would be an excellent opportunity to get in on the updated content when it becomes available (in bits and pieces) while you have another study resource to return to/work through.

6 Likes