Over the past three weeks, I’ve been learning Elixir and Phoenix (a web framework for Elixir) as part of a prototype I’m putting together with some colleagues at work. Here are the resources that have been most helpful to me as someone new to the language.
An obvious starting point is the Getting Started guide on the Elixir homepage. Taking a few hours to work through the information on basic types, pattern matching, and other features of Elixir was really valuable. As I’ve gotten deeper into the application we’re building, I find myself referring to these guides daily.
A colleague of mine was kind enough to lend me his copy of Programming Elixir, which I would recommend reading as a next step after perusing the introductory guides. The writing and examples are clear, and doing the exercises has helped me practice some functional programming practices that are new to me.
I’ve also completed a few of the Elixir exercises on Exercism. These have been useful to do since I can compare how my answers in Elixir might differ from how I solved the same problems in another language. They’ve also provided me a good opportunity to sort through a lot of error messages for me to resolve. Elixir’s errors are usually very useful and make debugging less painful.
Of course, there are plenty of other resources out there. Since Elixir is relatively new, there aren’t quite as many answers on Stack Overflow as there are for more established languages, but the ones that I’ve found have been very strong. For more resources, check out the Awesome Elixir GitHub repo.
The web framework we’ve been using is called Phoenix. It should look familiar if you have some Rails experience, but it’s worth remembering that Phoenix is not Rails. If you’re new to Phoenix, the best starting point is watching Chris McCord’s conference talk “Phoenix – a framework for the modern web”. From there, go through the Phoenix guides and try creating a simple Phoenix application. The tooling surrounding Phoenix and Elixir is really nice. We’ve been impressed with how productive we can be with Phoenix even as newcomers to the framework and to the Elixir language more generally.
Talking with other developers about how Elixir differs from other languages has helped me understand some concepts more deeply. Sharing insights about how to code in a functional style has helped our team code in a way that is consistent across the entire application.
I’m looking forward to learning Elixir more deeply. I have much more to learn about metaprogramming and testing in Elixir, for example. As our project grows in complexity, I’m looking forward to learning more about
Supervisor, OTP, and other ways to improve the resiliency and performance of our API. It may be cliché to say, but Elixir has made me think differently about programming. If you haven’t tried the language out already, it’s worth getting acquainted with.