In this blog post, we share our interview with Dennis Tel, an Elixir developer for Betty Blocks. He recently made the transition from a Ruby on Rails developer to an Elixir developer. While previously coding with Elixir as a hobby, he was able to turn his hobby into a career.
I come from a design background, but I always worked on front-end and Rails development on the side. About 5 years ago I decided to focus solely on development. After working at a few agencies and a big data startup, I wanted something different and having experimented with Elixir for two years, I knew that was what I wanted to pursue in my career.
I read about it on a forum. I was building a livestream / livechat platform for a group of freelance journalists at the time and I was trying to figure out how to add websockets to a Rails application. Someone who commented in the forum, had the same problem and recommended Elixir because it is similar to Ruby.
From what I've seen, having just a little programming experience will make it easier to learn Elixir than having a lot of Object Oriented Programming experience. You have to ‘unlearn’ fewer things that you are inclined to carry over from other programming languages. Letting go of inheritance as a composition mechanism is a good example of this.
For developers starting with Elixir I would recommend to start with an open mind. Even though Elixir looks similar to Ruby on the surface, it is very different and builds on the knowledge and experience of the Erlang and Clojure community. Try to do things the Elixir way™ because this will help you "get" the Elixir mindset, and get the most out of the language and it's community. This will probably require some rewiring in your brain to adopt different paradigms, but I'm guessing that is probably what is driving you to Elixir in the first place.
Elixir is built on top of Erlang and leverages Erlang and the BEAM virtual machine. So sometimes your code crashes or produces errors and you don't get an Elixir error, but an Erlang error. So far I've found Erlang errors to be cryptic and harder to understand, so this is something I would like to see improved. Honestly, I can't think of anything else…
There are a few things I do. One is listening to the Elixir Fountain podcasts on Soundcloud and reading articles during my commute. The challenges we have at Betty Blocks require us to look more into the OTP platform that Erlang provides because we are dealing more and more with concurrency and distribution of our system.
Something I would like to do is splitting our Elixir application up into an umbrella application (multiple smaller applications). That said, I've also become more and more interested in the human side of programming: maintainability and mentoring. Growing a codebase in such a way that it remains maintainable, flexible, scalable but also accessible for new, inexperienced Elixir developers is a challenge that is starting to appeal to me more and more.
Not yet, but I've been toying with the idea of creating an Elixir library that allows you connect to the replication stream of a MySQL database, providing you with an event stream of all the changes that are being made. I hope to get started on this soon!