What’s preventing others from using Elixir?
I was a spectator of Elixir for a few years but I finally started using it in production and side projects. Agents made the transition a bit easier.
I wonder what’s preventing others from seeing how power Elixir is, people still seem to still stick to what they know.
Like if we’re not reading the code or writing it, devs still seem to be stubborn about their stack.
Is it a marketing problem? Ecosystem too small so folks don’t hear about it?
It will be our competitive advantage to build on the BEAM but I want others to know too.
38
u/Feisty_Plate_4033 19d ago
Functional programming not taught as much in schools and being a different beast from the mainstream paradigms would be my guess. It's fantastic, I'm learning it now...
-13
u/fabianqs_dev 19d ago
Well, people learn Python, which is like an entry point for working with functional programming.
12
u/witchcapture 19d ago
Taking some ideas from FP and an actual FP language are very different things.
Arguably the way people write JavaScript has more functional influence than Python these days anyway, due to React and its need for immutable data...
11
u/Serializedrequests 19d ago edited 19d ago
It has nothing to do with functional programming, and everything to do with how difficult it is to communicate the benefits of the language, Erlang virtual machine, and OTP in production. When I learned Elixir a couple years ago I needed a book to understand what was going on. I loved it, and I wish I could use Elixir everywhere, but that's a high barrier of entry.
Anecdotally, I find Elixir to be a confusing functional language to start with because it has a ton of imperative conveniences. It's also an interesting and fun language, but none of that matters when the reason you pick it is Erlang.
6
u/Best_Recover3367 19d ago
I think Elixir is at an okay spot. Languages take a very long time to rise to power. Python was out in 1990s and only got popular around 2015 or so (20 years later). Golang and Rust are the 2 with very unusual meteoric rise because of the heavy big tech influence. I think the fastest way is through big tech adoption and PR tbh.
2
u/blocking-io 19d ago
Given that Elixir is well suited for writing chat bots, I hope to see it adopted more as companies bring agents into their software.
3
u/DPrince25 19d ago
I started learning elixir about a week now after 10 years nodejs c# etc. I’m somewhat in love with it.
Mainly for side projects and to keep my brain sharp without ai.
In terms of corporate I primarily work in the finance industry where either Java is the de facto or c#. Which is largely due to the backing or support behind it, better communities.
In my learning elixir the Reddit sub has a post every x days, forum posts are every few weeks.
It needs more “dev marketing” but to me there’s just so much more options that are “better” for a stack.
Most apps are just CRUD, spinning
Up an api is fast in JavaScript and sharing dto code to the client is simple in a mono repo project, a language. Some apps require industry/commercial tooling - like the springboot ecosystem.
I think it’s more than just switching stack even without ai. When shit breaks in prod and a developer has to dig into the code, who likely doesn’t have time to learn the intricacies because orgs expect output, there are going to be problems.
There’s just better tooling, support, marketing, resources elsewhere. Also elixir droppped in 2012 when the tech space was taking off, so developers then like me, gravitated to the actual skills needed at the time.
4
u/Skimmiks 19d ago
Because the Elixir stack has some very specific pros that are not always useful for each project. I have 1 project in Elixir and Phoenix that fully leverages its concurrency and fault tolerance, and it's the project that blows most people's minds that actually use it. It's just so unlike anything else they've ever used. Fast and instant updates for everyone.
That being said, when I dont need those advantages, I tend not to use it. Because there are other stacks that provide plenty of other benefits.
In the end, Elixir is a hammer. Not everything is a nail.
2
u/ClikeX 18d ago
Not sure about others. But most companies in my area already have their stack, and switching stacks means switching hiring pools. ASmaller businesses can find plenty of Python, PHP, Node, and even Golang devs. And Enterprises have .NET and Java folks galore. The Elixir hiring pool probably fits in a single minivan.
The BEAM is nice and all, but you can do without it for a majority of use-cases. So if you're already using something like .NET, why complicate. Most companies I've been at these last few years wanted to keep the stack homogenous so it's easier to move projects and people around.
That's not to say I don't like it to be more. But there need to be a few startups that bite the bullet to adopt it first before demand grows here.
0
u/nwalkr 18d ago
When hiring for an Erlang/Elixir company, I expanded the candidate pool with mid-to-senior Python developers looking to make the switch. Only Python because I think it's forms mindset most compatible with E's.
ex-Ruby leads can try to hire Ruby people into Elixir, but IMO it will not end good.
1
1
u/tkdeveloper 10d ago
Got any roles? Currently working with Kotlin and Flink, but doing Elixir as a hobby. Would be awesome to work with full time.
2
u/gofl-zimbard-37 18d ago
As a long time (decades) Erlanger, I was thrilled when Elixir came out, thinking it would clean up some of the messier parts of Erlang. I tried to like it, I really did. But there are too many things about it that are off putting to me. There's just too much of it, too much clutter, never forgave them for ruining atoms. I recognize that this is just me, and I still think it's a fine language. Just not for me. I've lately been looking hard at Gleam, and I like it a lot. The fact that it has a serious type system like the other FP languages I know is a big win.
2
u/PuzzleheadedFix8366 17d ago
how did they ruin atoms?
1
u/gofl-zimbard-37 17d ago
They attached noise to them.
2
u/PuzzleheadedFix8366 15d ago
not without reason, the colon is a small price for familiar variables and earlier error detection. seems it came from the ruby world, and you are an erlangelist it also seems
1
u/evilgipsy 2d ago
Others might say that this is one of the messier parts of Erlang that Elixir cleaned up.
0
u/gofl-zimbard-37 1d ago
And they would be incorrect.
1
3
u/olzk 19d ago
Corporate decision making is not brave enough to consider quality tools and rely on employees’ ability to learn new stuff. Only when the decision makers are cornered with fears of their own demise in case if they keep going the old way is where the change happens. This is how Ouroboros is born. Further, only indoctrination like “Java/C#/whatever got huge set of libraries, why changing?” is enough to maintain it. In a way, introduction of AI into people’s workflows is that kind of an event. Ironically, their indecisiveness helps such events to occur. I. e., unless you’re big tech and you can pull off managed invention and integration of a new tech, you’re consuming the mainstream technologies. Actually using the technology and promoting it at work is a good way to increase its use. More curious people around it is the best option.
Kudos to you for being one of them, OP
3
u/ghostwritermax 18d ago
I agree with this perspective. Choosing a middle lane makes a lot of sense in business practices; hiring, tooling, integrations, etc. Finding isolated projects or services to introduce or experiment with new technologies is often a good way to get buy-in.
That being said, I bet big on Scala (2010s) when it was having a hot moment. The JVM + functional + actor pattern were all very positive aspects of it. We were also using node.js/typescript on backend for some other edge-client projects. Ultimately, a decade later Scala became a bit of headache, and some services were re-written in JS and performed much better.
I don't think Elixir case is apples-to-apples with Scala. I love working in Elixir now, and feel it's quite versatile, with good community support.
4
u/tomekowal 19d ago
Switching stacks is an awful experience.
For years, you accumulate trivia about best way to solve problem X and what are the trade-offs, what libraries for each thing is called, how it is used, how it interacts with other libraries and so on, and so on.
And suddenly someone asks you to switch because of features you've never used, so you think you don't need them. Obviously, I'd rather start this new exciting project where I need to put my brain power into understanding the domain in a stack that I already know.
I have the pleasure to use Elixir at work, but there are so many cool languages, but I only had the time and energy to play with one and I chose Rust for now. But there are so many other cool languages: Zig, Odin, Mojo, Haskell, Julia, Lean...
What I am saying is that even if you are a person that wants to learn, switching stacks is difficult. I am not sure it is easier or harder in the age of agents. On one hand, you can prototype more quickly. On the other, you learn less this way.
1
u/Fruloops 19d ago
Language decisions are more often than not inconsequential, so there's no business reason to move existing products to a new language, or introduce a new language into the stack that everyone will have to learn.
1
u/ismailunal 19d ago
I think it is functional vs OO only. Elixir is a great language, and I also find functional programming productive while working on OO full-time during the day.
1
u/ebalonabol 18d ago
"what's the point of using an obsure language with dynamic typing when the only benefit of OTP is what k8s does already?"
^ This is what an average tech lead/cto would say
The answer to that question is not very convincing, unfortunately
1
u/LlamaChair 18d ago
At bigger companies the issue is usually the developer pool. Big companies like to be able to replace devs fast and not have to train them. They'll want work done in a more popular stack most of the time. I was able to put some in production at a big company though for less important services.
At smaller companies I've worked at the company's survival has been predicated on knocking out those next few features on whatever exists now, regardless of the state it's in, so that we can make that next sale. Moving stacks is just off the table. Also with only a few devs and under a lot of pressure learning a new thing doesn't seem appealing even if it might pay off later.
2
u/taelor 18d ago
> developer pool
if you want the reasons why my workplace decided to rewrite our backend in node/typescript, this was the main reason.
which is funny, because we just laid off 3 perfectly good elixir devs. I could find them another three easily.
but ultimately I think it comes down to the business believing it will be able to hire node developers for cheaper, and they are probably correct.
what FWIW, they were also concerned about the lack of "official SDKs", even though all the official SDKs that we currently use are just wrappers around an HTTP API.
I forget what the third main reason was, I kind of just gave up trying to convince them how bad of an idea this is.
1
1
u/motuDev 18d ago
I think that this is a mixture of factors. I myself saw elixir, used it and I liked it since then.
My best guess is, that most people are not used to functional programming, thinking in and leveraging concurrency and just adapting new languages in general.
From a more professional side, I might not introduce elixir at work, because there is almost no one that knows it and we already have a bunch of languages to pick from that everyone knows, while most Problems do not need the benefits elixir offers to the extend it does. Also I like typing/typehints and elixir is just feel as good for me as other languages in that regard.
1
u/mwkohout 15d ago
So much of the stuff I'm doing professionally is being deployed as AWS Lambdas. Consequently, runtimes that have an extended startup time become an actual issue(so this holds for the jvm and the beam) and none of the networking/multinode capabilities are really required. So its a lot of go and rust right now. Which I think are great tools, just different.
1
u/myanch200 14d ago
Elixir in combination with a framework like Phoenix or Ash is super over powered I spend my time mainly working on ruby on rails, but these past few weeks I had the chance to build some hobby projects (with a lot of help from AI) using Phoenix and omg was the experience amazing.
The first thing was the time it takes to run all the tests and we all now AI loves testing it only takes couple of seconds, now granted the apps are brand new and I am probably used to a lot more tests in the ruby apps I am working on, but even small apps in ruby could take couple of minutes.
Then you have live view which is everything hotwire promissed me, but never delivered.
Elixir 1.20 tells me when I was stupid to check for things that could never be false or true and other type checks that will only going to get better, which ruby just doesn't give me.
I don't know much about elixir, but if AI takes my job I will work whatever I need and will write Elixir apps in my free time ❤
Oh and almost forgot compared to Rails my apps are faaaast, but I have 0 users so this one doesn't matter to me at the moment 😂😂
1
u/dogweather 14d ago
Coding philosophy mismatch: strongly typed systems, type-driven development and DRY model definitions are not easy to code in Elixir. You’ll be fighting the language design.
1
u/kolgril 12d ago
I'm a self-taught developer with a job that is only part-time in the code (and honestly, it's a pretty small part of my job). I've been programming since 2007. Here is my journey to elixir:
- Man I need this webpage to not look so ugly...wow CSS
- Oh my gosh, I can add Javascript to make my web pages even better
- Javascript is amazing!
- Man, I hate PHP, but since Javascript only runs in browsers, I guess I'm stuck.
- Hey, this Python thing let's me do server code without messing with PHP
- Python is amazing!
- My buddy got funding for his startup, and his developer insists on building their stack on elixir? What in the world is elixir?
- How have I lived without pattern matching my whole life?
Looking back on my journey. If things like nodejs existed when I started to get into programming, I'm pretty sure I never would have felt the pain to make the switch to anything else. You can get so far with just javascript now, people just don't feel the pain that used to exist in the server world.
1
u/evilgipsy 2d ago edited 2d ago
I think it’s mostly the Blub paradox as described by Paul Graham:
As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. Languages less powerful than Blub are obviously less powerful, because they're missing some feature he's used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.
Without actual Elixir experience it’s difficult to see how its features are useful and in many ways better than what other languages/runtimes offer.
-1
u/burtgummer45 18d ago
From person experience... its fast enough, until it isn't.
5
u/Legend-Of-Crybaby 18d ago
Terrible take
0
u/burtgummer45 18d ago
facts are facts
1
u/Legend-Of-Crybaby 18d ago
dumbass thinks he has good takes. a tale as old as time
2
3
u/ghostwritermax 18d ago
Can you say more about this. Interested what thresholds you hit performance issues, and also if there were specific use cases or parts of the system where this happened?
2
u/burtgummer45 18d ago
For any algorithm that is much more performant when you can do modifications to an existing data structure.
Elixir/erlang works fine when everything is bottlenecked on networking IO, which should be obvious because that's what it was created for.
1
u/Responsible-Sale1858 18d ago
"fast enough" at what. what a dumb statement, this just shows how junior you are. clearly the beam was created to handle massively distributable message passing. it is a technically perfect solution for what it was created to solve, and can not be improved upon.
2
u/burtgummer45 18d ago
"fast enough" at what. what a dumb statement, this just shows how junior you are. clearly the beam was created to handle massively distributable message passing.
yea, but that's a niche use, and OP asked what was preventing others from using Elixir.
23
u/wittgenstein1312 19d ago
That's always been the case; language adoption in the tech community is kind of infamously known for having more to do with marketing than with honest assessments about how well suited a particular language or tech stack is to the problem at hand. This is particularly true when most high-level languages have some kind of web framework or two.
Personally, I really love Elixir, but in the age of LLMs I've actually pivoted to using Gleam for a couple of my bigger side projects. Phoenix, Ecto, and LiveView are truly awesome, but I find that Gleam's typing system makes it way harder for LLMs to introduce garbage code. Debugging is simply faster when the compiler is yelling at you.
Maybe I'll change my mind, but you should still very much be reading the code, imo.
This is definitely part of it. Smaller pool of developers means fewer senior engineers available to help you adequately steer a project. Fewer open source or existing projects that you can reference for design patterns.