What would you do if you find a tool with significantly more features than the one you are already comfortable working with?
This series has the goal to generate thought-provoking content. The intention is not to provide a correct/incorrect approach or point of view, but rather to offer an uncomfortable question so you need to really go deep in your mind to understand why you are making some decisions, and which are the motivations behind them.
Another goal is to share knowledge, personal experiences, and discoveries, as well as receiving them from the community, with the aim to generate a healthy space for discussion about the questions presented.
So I started to read their blog posts about Elixir and search which features it has, and I discovered another tool: Erlang, and after this point, I truly started to enter the rabbit hole 🐇 💊, and probably with no return 😄.
I read several articles  about Elixir and Erlang, and I was really amazed by how many robust features the Erlang platform has.
Obs: after that event, I started to search several other programming languages to be the main one for my backend development: I read about Go, Rust, Clojure, Haskell, but the one that catch me was Elixir/Erlang, although I truly want to play with Rust in the future.
This comparison  made by Saša Jurić really got my attention:
This table is from the book Elixir in Action from Saša Jurić.
⚠️ Don't drink too much Kool-Aid ⚠️
In the same tweet, we had some really valid contestations about the previous image, with some also valid answers from Saša as well. I would like to replicate such conversation here since I do believe it should be eternalized due to its pragmatic content:
"Well...don't reroll Redis, use Postgres, and you'd still use upstart (it just won't get that far nearly as often)." - Jim Gray
"Also RabbitMQ is kinda handy if you're doing a lot of background jobs (which is written in Erlang)." - Jim Gray
"Also don't reroll nginx either, WTF, I know Erlang is cool and all but don't one-off stuff that already works well..." - Jim Gray
"That pic is a true story, and Erlang sufficed for the needs in that case." - Saša Jurić
"I never said it's a full-blown replacement for every case" - Saša Jurić
"But if the needs are simpler, Erlang will suffice, making the overall arch simpler." - Saša Jurić
"That's a simple solution for a simple problem, and you can always step outside later when you have real reasons." - Saša Jurić
Erlang brings a lot of power and minimalism at the same time to developers, and let them deal with tough topics, like concurrency, error handling/fault-tolerance, to name a few, in an elegant way, through the actor model, pattern matching and supervision trees, for example.
I remember to be really upset for being exposed to such tools "too late", and actually this is one of the reasons I'm writing this blog post: maybe I can be the one to at least inform another person that such technology exists and maybe it can change his/her plans, and consequentially change his/her life as it did with my own.
The impact of such discover changed my life, and now I feel that I truly found the path that aligns deeply with me: a journey to become a specialist in distributed systems engineering, and teach it to others in the most accessible, simple, and minimalist way.
Try to avoid Hype Driven Development as much as possible, but never close your mind to new technologies. If you find something that has real advantages in relation to what you use now, do not stay in the comfort zone. Start a new journey and conquer this new world!
If you are now interested in learning more about what made me change my career goals, and go towards the Erlang Ecosystem and distributed system engineering, I have some articles that I really encourage you to read, not for you to adopt Erlang, but to you have more information about what currently exists and in that way, you will be able to compare Erlang (and Elixir) with your current stack.
- First chapter of Elixir in Action obs: you can read the first chapter for free
- Erlang and the Web
- Why Elixir obs: read at least the Wrapping up section 😉
- dev-log elixir - obs: I actually consumed much more resources than what is registered there 😅
- Tweet from Elixir Tip: One of the best reasons to use Elixir/Erlang from Elixir in Action