I’ve been interested in Elixir since I first came across it in 2013 but didn’t start learning it properly until recently. So why am I learning it now and why do I think you should too?

Why should you learn it?

One of the reasons I think Rails was successful was it picked good abstractions for common tasks in the response/request orientated web. These abstractions added to Ruby’s metaprogramming power enabled developers to build certain classes of web applications very quickly.

I think Erlang/OTP has proven good abstractions for programming in a world of multiple cores, either within a single machine or grouped in a data center. These abstractions coupled with the metaprogramming that Elixir brings to the table will enable developers to build certain classes of distributed applications very quickly.

I don’t personally know exactly what classes of applications yet, that’s what I’m looking to figure out over the next while. You can already see in the Phoenix web app framework how easy it makes using websockets to talk to various clients and IMO it’s got the potential to handle both the request/response orientated web and the streaming / always connected one.

Why am I learning it?

I have the same feeling about Elixir in 2014 that I did about Ruby in 2004. This gut feeling is essentially why I’m putting the time into this. Back in 2004 I wanted an OO language with a syntax that I liked and I felt like Ruby matched how my brain liked to work.

Over the last few years I’ve wanted to pick up a functional language but I’ve never got on with Erlang, Lisp, or Haskell syntax. I’ve the same feeling about writing an Elixir module that I got when I wrote my first Ruby classes ten years ago.

When I started Ruby I didn’t have anything practical to use it for straight away. It’s the same with Elixir but I’m pretty sure something fun will come up!

Summary

Come to learn functional programming with immutable data structures and great syntax. Stay for the scalability, fault tolerance, extensibility, and the existing and growing ecosystem.

Resources

First is the Elixir Getting Started Guide. There’s also a number of books either out or in production:

There’s more on the Elixir Wiki so keep an eye on that.

I’ve also been reading some Erlang/OTP books and translating their examples into Elixir.

Finally I liked this answer to the question “What can I only do in Erlang?”