Spend long enough as a consultant and you’re quickly disabused of the notion that there is a “right way” or a “perfect choice” in technology. It is always a matter of trade-offs. The tech stack is often the least salient factor in that bargain. Squishy people factors usually assert themselves at the forefront, followed by the hard-resource problem of deciding between what you want and what you can afford.
Past the people and money problems, I have wandered my way through many programming languages. I will happily run my mouth about how annoying JavaScript is because—well—it is objectively very annoying. I can’t deny it’s popular, and people have built very impressive things with it. Nor can I deny that, in some cases, it’s the right choice. But with only so much time, I always stuck more to DevOps, data pipelines, APIs, and other back-end work.
I certainly wasn’t alone. Over time, a natural split between front-end and back-end formed. You do have those day-walkers who traverse the full-stack, but most of us learned to stick to our lane. Not that we couldn’t understand one another or learn the ways of the other side, just that we each had our primary interests.
My first pull to Elixir I owe to the estimable Mr. Simpson, whom I suspected might be telling me tall tales of magic. I’m a rather jaded technologist, having wrecked my ship on the sirens’ shore one too many times. I was skeptical. Then came, for me, a kind of era-defining presentation: “The Soul of Erlang and Elixir” by Saša Jurić.
I wanted to believe.
While I continued with the jobs at hand, I kept up with José Valim and Chris McCord’s extremely impressive work in their keynotes throughout the years. Phoenix LiveView was the final hook that convinced me I had to make the switch. Being able to build a dynamic user interface all in one language tore down the wall between the East and the West in my mind.
So when I got a green field moment, I went all in. Turns out, like most
technology, it isn’t really magic when you get to know it. The waters are
deceptively deep in places because the BEAM that powers all the *magic*
is
decidedly different than most language runtimes. Elixir & Phoenix LiveView are
the closest thing to actual magic that I’ve experienced in my career.
- The soul of the runtime Elixir sits on is built to be maintainable, fault-tolerant, and scalable both vertically and horizontally.
- Phoenix LiveView gives me tools to reason about user interfaces in a mostly server-side manner. I really can’t overemphasize how powerful this is. There are a lot of other frameworks adopting this approach.
- The ecosystem is broad and growing. Whether it is an embedded project with Nerves or an AI project with Nx, there is probably someone leveraging this stack to do something insanely cool.
- The community is awesome. Elixir Conf is a blast.
- Documentation is first-class, top-notch.
- The language is evolving - I really began to enjoy some of Python’s explorations into typing, and José Valim has been slowly shepherding some pretty amazing work in this area.
Circling back to those trade-offs: these tools concentrate on what matters most—the humans doing the work and the budget that keeps them moving. Once you’re ramped up, full-stack development stops feeling like a super-human stunt. The runtime equips you with battle-tested features—automatic crash recovery, in-memory persistence, and a lot more—so you can ship resilient systems without breaking the bank.
Also, I really relish any opportunity to talk shit about JavaScript and how little of it I have to write 😈.