To say that technology is a moving target is a vast understatement. It can seem daunting to keep up with, and at the same time, it can feel very risky to move to the latest tech that could just be a fad. In the roughly 25 years since I wrote my first line of code, I’ve probably written production code in over 15 different languages. Looking ahead into the remaining 30 years of my career (hopefully), I’m certain I’ll learn several more.
There are many ways in which the world of development has changed in the past 15 years, and for SmartLogic, the biggest change was the popularity, power and success that came from Ruby on Rails. For many companies, Rails allowed them to quickly launch their ideas, and then rapidly iterate through business needs, pivots, and challenges.
The web is not that young anymore; we’ve been writing Ruby on Rails applications for over a decade at this point. While Rails is still a great framework and we still write in it all the time, over the past few years we’ve become increasingly convinced that there’s a new and better way — and that language is Elixir.
Why Developers Love Elixir
Now I know that many of you, like me, probably have a bit of “new shiny” fatigue — new languages emerge all of the time, and it can be hard to tell the worthwhile opportunities from the ones that are a waste of time. At SmartLogic, we’re convinced that Elixir is the real deal, and we’ve made the switch; almost all of our new projects run in Elixir.
Elixir is a new language built on an old language. It was first released in the fall of 2014, and it runs on the Erlang virtual machine, called the BEAM. Erlang is best known as the language that was designed to run telephone infrastructure; as such, some of its virtues include incredibly high fault tolerance and stability as well as massive scalability. These properties make it an excellent tool for solving many of the problems we come across in the modern web. Elixir gives us the power of Erlang but with a syntax and tooling that is more familiar to those with a Ruby and web-based programming background.
Elixir is gaining popularity with many businesses, and it is becoming a competitive edge for building complex systems with the demanding needs of today’s web environment. Recently announced sponsor of ElixirConf, PepsiCo eCommerce, declares: “We view Elixir – which is a core part of our software stack – as a nimble and reliable building block for powering critical business solutions.”
There are many in the Elixir community who spent years in the Rails community, and it is common to hear from them that Elixir and Phoenix feels today as Rails did back in its exciting early days. What sets Elixir apart from Rails, however, is its ability to do so much right out of the box. Elixir brings the solid fundamentals of the Erlang VM and OTP (the Open Telecom Platform) to web development, allowing for highly concurrent and fault tolerant applications.
So, with an impressive pedigree and a lot of hype, why did SmartLogic embrace Elixir, and why do we choose it more than anything else as part of our go-to development stack?
I could rattle off features, and I will: pattern matching, the pipe operator, actor based process model, and built in support with Phoenix for Web Socket Channels.
These are all well and good, but what do they mean? Altogether, they mean that we have a toolset that is perfect for data-driven applications. Most modern web applications are just that, data driven. The application’s flow is a function of the data: data provided by external systems, data provided by the user, and data that is computed. Elixir’s functional programming, Erlang’s solid foundation and the power and ease of use of Phoenix combine to create a great environment for building today’s web applications.
The Business Case for Elixir
When choosing a stack, there is way more to consider than a set of flashy features. Technology stack decisions have real world consequences, and those consequences usually affect the bottom line. What makes Elixir the right choice financially? At SmartLogic, we find that Elixir helps our clients and ourselves by lowering several costs in several ways.
First, the language is stable and won’t change drastically on the developers while they are building your application. There is an extremely short list of language functions that will be removed in version 2.0, and there is no timeline for that change. Building on a stable language is a cost savings as we are focused on building systems, not tracking the moving target of the language itself.
Another immediate cost savings compared to some popular languages comes from resource utilization and fault-tolerance. We’ve found that our Elixir systems use far less computing resources than other systems, and the fault-tolerant nature of Elixir helps minimize support costs. The multi-process model of Erlang is perfect for servicing individual web requests, and then having fast and complete garbage collection as the Erlang process terminates.
The final major selling point for Elixir is the developer friendly syntax and functional programming. For a developer keeping relevant aspects of an application in their head, modules of functions are easier to consider, refactor and test, than objects with complex relationships and side effects. Building an application from functions alone is fast, easy to maintain, and provides a clear path to adding new features as a project progresses.
On top of all those benefits, with Elixir, you are sure to attract the best staff. Staffing is almost always a company’s greatest cost, and the reality of the job market is that developers can be selective about their opportunities. It benefits your company to be using the technology that is attracting the best and brightest. Even if you are unable to find developers that know Elixir, you are sure to find many that want to learn it. At SmartLogic we’ve found that developers of all skill levels can learn and become productive with Elixir very quickly. Elixir has a wonderful ecosystem of resources — plenty of which are free — to help your team come up-to-speed.
We first started building production applications in Elixir in 2015, and we’ve just kept going from there. While we still have a number of Rails applications in production and Rails is still the best option for some use-cases, Elixir has so many benefits that it is our preferred language for new projects. We’ve had tremendous success both with building projects that we maintain and building and handing off Elixir projects to clients’ developers; Elixir is fast and fun to learn, especially for developers who are familiar with Rails. If you’re building web applications and you haven’t given Elixir a look, we highly recommend that you check it out.
If you’re interested in learning more, check out the Elixir website, listen to the SmartSoftware podcast, stop by the monthly Elixir/Erlang meetup at SmartLogic HQ in Canton, or reach out to our team; we love to host lunch and learns and we’d be happy to help your team get started learning Elixir.-30-