Why use elixir?

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.

Lower costs/Scalable

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:

Beating the Averages

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.

Paul Graham

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” [1]

Revenge of the Nerds – Paul Graham.

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.

Paul Graham

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.

Architecture

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

Real time

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.

Front-end

It can even simplify your front end in some cases: Phoenix’s LiveView: Client side elixir at last

 

Final thoughts

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:

The Hundred-Year language – Paul Graham

Ten companies that use Elixir in production

Why Pinterest just open-sourced new tools for the Elixir programming language

Notes

[1] The python paradox explains this phenomenon.


Leave a Reply

Your email address will not be published. Required fields are marked *