So, [Elixir][ex] is pretty cool. A week surely isn’t enough to learn it with any depth, but it has been an absolute joy to write Elixir these last few days. I was able to play with modules, functions, recursion, automated testing, and more. Since Elixir is quite different from other languages, I spent a lot of time reading about it than I did while learning TypeScript in week one.

Elixir Logo

All in all, I’d estimate that I spent 5 to 10 hours learning about and writing Elixir code over the last week. I didn’t get too far with the language, but I did get familiar with the syntax and a few of the language’s features. As I wrote after the first week with TypeScript, a week is just enough to get up to speed in a language, but not enough to learn it deeply. My time spent with Elixir was a refreshing experience in a very different language.

Functional, Pattern Matching, Different

Elixir is a very different from the languages I use every day. Sure, C# is getting more and more functional with every release, but it will always be a predominatntly object oriented language. All the syntatic sugar in the world won’t change its pedigree. Changing up the programming styles you use is a great exercise for the mind. It may be a challenge, but it’s rewarding and a lot of fun with the right mindset. Language features like pattern matching and robust use of recursion are just a couple of the interesting things Elixir forced me to ponder this week.

Further Learning Plans

I will become at least a passable Elixir developer in 2018. In order to do that, I will work through each of the books listed in the resources section. In the process of working through Programming Phoenix I hope to release at least one web application that relies on Elixir. The best way to learn a technology or language is to release something using. I want to release something built with Elixir and Phoenix.

Resources

I was able to pull from a number of resources over the course of the week. Even though I used so many sources, I barely scratched the surface of what Elixir can do.

Elixir in Action by Sasa Juric. This is a great introduction to the language. I will come back to this text again in the coming months to dig back into the language once I’m done with the Five Languages in Five Weeks experiment.
Programming Elixir 1.3 by Dave Thomas. This was my primary source throughout the week. I got about a third of the way through. It’s well written and has a high signal to noise ratio.
Programming Phoenix by Chris McCord, Bruce Tate, and Jose Valim. I didn’t get into this one but will definitely get to it at some point. In a perfect world I’d release at least one application in the next year that relies on Phoenix.
[Elixir School][exs] - This is a website that was hugely valuable to me. It covers the basics of Elixir and has code examples for each concept. It’s really well done.
Getting Started with Elixir by Nate Taylor on Pluralsight. I actually completed this course over the summer. It’s a nice introduction to the language and shows off what Elixir can do.

Quick Final Thoughts

Elixir may never become the most popular programming language in the world, but it will definitely leave its on the future of programming. By leveraging the power of Erlang, Elixir opens up an amazing bag of features. The multiprocess, fault tolerant nature of code running on the Erlang VM is very unique. Elixir makes Erlang more accessible by giving it a Ruby-like syntax and opens up these ideas to more developers. As developers get more familiar with these concepts they will surely be brought into other languages. Assuming I’ve mastered them by then, I can’t wait until the features start trickling down and I get to use them everywhere.