Meet Mikk Kard, our Chief Engineer at Yolo Group. He is talking about Yolo's history and Elixir, and its advantage compared to other programming languages.
Why did Yolo choose Elixir?
There isn’t one best answer to all possible questions. Similarly, no one language or framework is the best choice in all situations. Therefore we have to start with establishing the context.
By 2014 we had five developers, and as a company, we were constantly pursuing different business ideas. We used Meteor.js - a bleeding-edge Node.js framework that allowed us to prototype quickly. Both the front-end and back-end were in the same codebase, and it was effortless to create reactive UIs.
At the end of 2014, we struck oil with the bitcoin-only online casino Bitcasino.io. The success meant that we had to quickly scale up our volumes in terms of customers we could serve on our sites and in terms of people in our engineering organization.
In a few years, we reached a situation where we had to maintain a mixture of Meteor.js-based back-end services and pure Node.js services that served GraphQL to fat React front-end applications. A lot of effort went into optimizing the services and playing detective for different anomalies that can come along if people actually use your products. With the React applications increasing in complexity, pushing changes through the whole stack became more time-consuming and inefficient.
Yearning back for those simpler times, we started looking around to see if some technology would help us regain a bit of the productivity and efficiency we lost along the way. At the time, there were legendary stories where Whatsapp used Erlang and Discord used Elixir to service enormous volumes using Beam VM that both languages compile to. That was enough to add Elixir to a shortlist of languages that we were considering.
After some trials, Elixir won us over. To summarize, these would be its strengths:
It is easy to produce business logic;
It is straightforward to think about business flows when applying functional programming;
Having a well-thought-out web framework in Phoenix allows us to keep the whole stack in the same language;
It is easy to write unit tests for both front-end and back-end logic;
We can spend less time dealing with scaling and more time with business logic;
Having some unexpected error for one customer doesn’t mean taking the whole service instantly down with it.
By now, Elixir and Phoenix have improved even more. On the annual Stackoverflow survey, they are reaching higher and higher places in the category of languages, and frameworks developers love to work with. The services we’ve written in Elixir require less maintenance and are easier to scale. The community is steadily growing, and so is the supply of developers looking for Elixir jobs and the number of companies choosing Elixir as their primary language.
Are we content?
There are no regrets about choosing Elixir, and we’re committed to the long haul. The biggest challenge with the language is the relative smallness of the community. It’s almost impossible to source Elixir devs locally. Therefore we are putting a massive effort into bringing diverse talent from all over the world to work with us and training already experienced engineers in Elixir.
Can anyone become an Elixir developer?
It is relatively easy to learn the language due to excellent documentation, tutorials, and books. Although functional programming gets less spotlight in formal education, it is easier to understand and get going than, for example, in object-oriented programming.
What types of companies and products require Elixir?
Considering BeamVM that Elixir runs on, and its origins in Erlang - anything where many messages require processing at scale would be the ideal fit. Think of RabbitMQ, Discord, or WhatsApp. If we take the rapid advancement of Phoenix and LiveView, you could have a strong argument for building any web application in Elixir that needs to be reactive or where server-side rendering makes sense. In addition, you have Nerves for embedded software and Nx for machine learning that widen easily applicable sectors even more.
Is Elixir a “future-proof” language?
No language is future-proof. With that said, if the community is lively and growing, incredible tools and frameworks are being built, and the language is fun to use, I don’t see why it shouldn’t stay with us for a long time.