Elixir Developer - Dennis Tel


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.

Can you give a brief description of your background?

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.

What about Elixir appeals to you and why did you decide to start learning it?

I personally like the simplicity and explicitness of the language. It's easy to follow the flow of a program because (almost) nothing is hidden from you. These two properties help me with the maintainability of my code. I've found this challenging in languages like Ruby and Javascript, which require a lot more discipline from you as a developer and the rest of your team. I decided to learn Elixir because I hit limitations in Ruby when trying to run things concurrently, which is a lot simpler in Elixir. The syntax was also familiar and a lot of people from the Ruby community were flocking to Elixir so it felt like a logical shift for me.

Where did you first hear about Elixir?

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.

What background does one need to learn Elixir?

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.

What would you recommend to a Ruby (or any other) developer who wants to specialize in Elixir?

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.

Are there aspects of Elixir you don’t like or you would like to change?

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…

Within your current company, how do you expand your Elixir knowledge?

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.

What kind of project do you hope to accomplish in 2 years?

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.

Do you currently work on any hobby project? If yes, please specify

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!