Why did STORD choose Elixir?
A top 5 question from candidates is ‘Why did you choose Elixir?' To answer this question, I was able to dig up the email that our CTO sent to the team in January 2020.
A top 5 question from candidates is ‘Why did you choose Elixir?' To answer this question, I was able to dig up the email that our CTO sent to the team in January 2020, the same month we decided to kick off a new greenfield effort to construct our Cloud Supply Chain platform that STORD continues to build upon today.
Here it is...
========================
From: Jacob Boudreau
Date: Jan 15, 2020
To: Stord Engineering
Hey Team,
As you may all know, with the new work to build out a Cloud Supply Chain platform, we opened the possibility of using another language and framework besides Ruby and Rails. Over the past couple of weeks, I have been weighing this decision heavily to determine our path forward.
After a significant amount of review of possible language choices for the next adventure in STORD’s future, I have concluded we will move forward with Elixir (+ the Phoenix framework) for the work of building out the Cloud Supply Chain.
This decision came after hearing a multitude of thoughts and inputs from a variety of individuals (including several of you!), exploring ecosystems of a variety of languages and frameworks, looking at language and framework trends from various surveys and reports over the prior 5 years (including Octoverse, StackOverflow, IEEE, and others), and personally experimenting with the languages and frameworks. These languages and frameworks included: Ruby/Ruby on Rails, Python, Go and various associated frameworks (Go-kit, Martini, Gin), Javascript and Node, Typescript and Node, and Elixir and Phoenix.
There were a variety of takeaways, but the some of the reasoning for moving forward with Elixir are briefly jotted below:
- Scalability - The models of concurrency and built-in distribution mechanisms of Erlang, that Elixir is built on, allow for significant scalability.
- Flexibility - Elixir is a versatile language — practical for web applications (with the Phoenix framework), for real-time systems, and for embedded systems (with Nerves).
- Short-term and Long-term Productivity (On-going developer happiness) - Elixir was created by a member of the Rails core team (José Valim) and brings with it some of the syntactical pleasantries of Ruby (and Phoenix carries similarities to Rails and follows an MVC structure), but differently than Ruby some of its inherent paradigms force a simpler, cleaner, explicit code base.
- Optimized for Distributed Systems - Elixir is built on-top of Erlang which was purpose built for massive, fault-tolerant, distributed systems.
- Paradigms - Elixir drives towards modular, self-contained code and Domain Driven Design with various paradigms and capabilities it employs.
While the above were some of the various reasons I believe Elixir will work well for us, I would be remiss to not mention that those are by no means indicative that Elixir is the safest choice. Arguably all other languages explored would be safer from an ecosystems/wide-scale adoption perspective. However, given the space to optimize for the next 5-10 years while balancing immediate quick iteration, I believe Elixir will put us in a strong technical position irrespective of relative positioning to other languages. I see us building strength in the paradigms and benefits of Elixir becoming an underlying technical advantage of STORD.
I wanted to provide notice as early as the decision was final to provide everyone time to explore Elixir and Phoenix; in the meantime, please don't hesitate to message me with any questions on the decision. Given that this will be new territory for basically the entire team, I want to ensure everyone's equipped with the context and knowledge to succeed. We will ensure the provision of material / resources to help each of you quickly ramp in this new space.
Excited for us to excel and accelerate into building a leading industry platform to lead the paradigm shift to the Cloud Supply Chain.
Onward,
Jacob