Previous post: What is Elixir? An Introduction
In this post we’ll see why elixir is worthwhile using.
We already know elixir it’s a solid choice to build distributed systems but why learn a language that isn’t popular? Or you may even wonder if most projects don’t even need to scale and the ones that do will surely have the money for devOps right?
Well most businesses don’t raise money from investors, so no, you should never plan for having loads of money, on the contrary you should plan to be as frugal as possible and then if you even get to raise money you’ll actually be in a better position to negotiate as your expenses are low.
Applications using elixir are able to server more users per server than in other languages, this means that you can spend less money in servers: Save money using elixir – The benefits of the technology, or you could think of it the other way, it’s more scalable.
Popularity and Productivity
One may think that using a popular language is an advantage. This comes from the notion that more is always better:
If we have more developers => We can do more work
If we have more resources => We can do more work
If we have more tools => We will get more accomplished
All of these can basically be reduced to:
More money => More accomplished
But that can’t be true, if companies with more money always won, then why startups succeed? Shouldn’t they always be killed by bigger companies?
Well in short terms startups deliver much faster. The point is that by using a much powerful language you can beat the competition. When I read these two posts all I could think about was elixir:
It must have seemed to our competitors that we had some kind of secret weapon that we were decoding their Enigma traffic or something. In fact we did have a secret weapon, but it was simpler than they realized. No one was leaking news of their features to us. We were just able to develop software faster than anyone thought possible.
Over and over I read in forums about programmers who use elixir/functional languages saying they won’t ever come back. So I started wondering why? I finally arrived to these conclusions: if experienced people are saying they would never come back to a mainstream(object-oriented) language, is because first they don’t have to(don’t have a problem finding a job), and second they must have seen the “light”. It would be like asking the caveman who escaped to comeback.
This and the fact that it hasn’t gone mainstream sorts of creates a cool dynamic in the community, where the average quality of programmers using elixir is higher, as long as elixir isn’t “popular” 
There are, of course, projects where the choice of programming language doesn’t matter much. As a rule, the more demanding the application, the more leverage you get from using a powerful language.
Taking into account that they were written in 2002, nowadays you could replace:
C++/Java => Python, for Python => Elixir
So just as python was ahead of java/c++ in 2002 in terms of productivity, nowadays Elixir is ahead of Python/Ruby.
Specially since all the things he mentions about Lisp (and more) apply to Elixir.
When the underlying technology is fundamentally different, you’re playing a whole different game, it’s the difference between kicking a ball out of the stadium playing baseball vs trying to do the same in a football match, we can do things in elixir that we will never be able to do (realistically) in other languages.
In the field of programming we always talk about abstracting things, and each time we go up a level of abstraction we can accomplish much more.
You can also develop a flexible architecture. Unlike [insert popular framework here], that sorts of makes you build a monolith architecture. With a flexible architecture you’re basically future proofing your codebase. However you want to change your systems you’ll be able to: Elixir in times of microservices
In elixir you can build real time features, like a chat app. Discord did it. This allows you to do things like: live notifications, or updates.
It can even simplify your front end in some cases: Phoenix’s LiveView: Client side elixir at last
Asking if you should learn elixir because your project is small is a relative question. It’s like me asking you if I should learn how to drive if I’m going to the store around the block. It depends on my future goals really, not just the current situation.
If on the other hand you’re already have systems in place you can take a look into: Elixir – Phoenix for Decision Makers
Posts I found while researching: