Recently I’ve been spending a lot of my free time absorbing as much as I can about an exciting Functional Programming language called Elixir. For those of you that don’t know, Elixir is somewhat of a spiritual successor to Ruby, and therefore Phoenix (the web framework for Elixir) could be considered it’s Rails. Let’s take a look at my learning path and what you can do if you’re interested in becoming a proficient Elixir & Phoenix developer!
What is Elixir / Phoenix?
First things first, its important to understand what exactly Elixir is and what you can expect when you start exploring. Elixir is a backend Functional Programming language that has its own very unique syntax and style of coding. This is not your regular ol’ Object Oriented Programming language – far from it. In fact Elixir does not have objects at all. Relying heavily on Functional Programming, Elixir might feel somewhat off at first. An example would be that Elixir does not contain normal “loops” that you’ve come to rely on – but instead wants you to use recursion for things like that. From the JavaScript world, Underscore.js (or lodash.js) is a pretty good example of the kind of modules and development style at your disposal with Elixir.
Step 1 – Read up!
Before you can get your hands dirty you need to at least understand the language, its syntax and nuance, the many libraries and tools available, etc.
👍 Programming Elixir 1.3: Functional |> Concurrent |> Pragmatic |> Fun
By Dave Thomas
This is a fantastic book, and of the 4 that I list, by far the single most important and the one that gets my recommendation. The author’s approach is great, the practice exercises provided work really well to give you a better understanding and comfort level with the language (to the point that you’ve learned so far throughout the book) and are just the right level of challenging to not be frustrating.
Elixir in Action
By Saša Jurić
This is the 2nd book I read on Elixir. It is also a really good book and goes into great detail about the language and its syntax. I got a little more than halfway through before I switched to Programming Elixir 1.3 (above) and found that more things “clicked” and I worked through at a first pace with the latter book. That being said this is still a very good book on Elixir.
Introducing Elixir: Getting Started in Functional Programming
By Simon St. Laurent
This is actually a really small book so its a great way to quickly get up to speed on the language and syntax. I can’t say its the most exhaustive book, but for what it does it does pretty well. That is to say, it gets you up to speed pretty quickly. Still, this is 3rd on my list of recommendations.
Step 2 – Practice, practice, practice!
Now that you’ve got a good solid grasp of the language syntax and fundamentals, its time to go through the paces and really start to challenge yourself. Trust me, with any new language this is going to be the most painful part. You’re going to get stumped, you’re going to feel stupid, and it’s going to generally suck at first. Thats very common and understandable – you just need to stick with it and you will get better every day!
Do the practice exercises that are included with whichever book you decide to read. These are provided for a reason – and generally the author provides them in such a way that they gently introduce you to the concepts that were just covered so you’re not bogged down with trying to figure out too much at any give time.
Practice sites:
More Reading – Phoenix:
Programming Phoenix: Productive |> Reliable |> Fast
By Chris McCord
This is a fantastic book that very specifically covers Phoenix. This book is a must read if you’re planning on doing web development using Elixir. Of course read this book after you’ve read at least one of the books from the list above.
Videos / Online Training:
If books are not your thing, there is a ton of material available online in the form of videos and screencasts specifically dedicated to learning Elixir and/or Phoenix:
Step 3 – Meet other Elixir devs
Make sure you get out there and find a local Meetup for Elixir so you can start chatting up other developers that are experienced or just getting started like you! If you can’t find a local meetup specifically for Elixir, see if there is one for Erlang and if theres not – time to start a new Meetup group! 🤓
Step 4 – Just build something!
Equipped with this new found skill of Elixir its time to put yourself to task and actually just build something. Anything! Take a simple pet project (or 2, or 3) you’ve done in the past and rewrite it using Elixir (and Phoenix)! Find an existing open source project built using Elixir and study its source – contribute even!