Designing Elixir Systems with OTP (Pragprog)

I have finally finished the book. With 30 to 60 minutes per day, 2-3 times a week, it took me =~ 6 months to finish it, with all the code samples, the DB, dialyzer and really making an effort to understand as much as I can.

It took me so long to finish this, that the slogan for the book “Do Fun Things with Big Loud Wildebeests” actually changed to Worker bees while I was reading it!

Overall I liked the layered architecture in the book. I know Bruce is a fan of layers and even though I am not sure I agree with some of the decisions taken the book explains itself in a way that helps me understand why certain decisions were made - for the authors, development is a series of trade-offs, a fact they make very clear.

The part I enjoyed the most though (I believe this is mainly from James) was the decoupling of the DB. They create a new project inside the main project of the book. At first it looks like non-sene: why not use another GitHub Repo or an Umbrella app? But after that, they actually explain all the differences and all the benefits of each approach an I can only say I became better by reading and understanding them all. Genius solution!

It also solves a problem I’ve had for years in Elixir now - to find a standardized way of solving persistence in Elixir (something I have really missed in other books).

The also pays some attention to tests, although they don’t follow TDD. I’d say it is still worth a look, specially for the integration tests on chapter 9 with timers.

Overall I would recommend this for anyone doing backend. If you feel you are comfortable with Elixir and GenServers, and your main struggles are architecture and decoupling, I would definitely recommend this !

8 Likes