I almost would believe that if I didn’t see plenty of toxic examples of people straight up trashing the syntax or bemoaning the lack of their favorite pet OOP feature. And loudly proclaiming Elixir is “trash” for not having it. I can and have taken loads of feedback that I used to better myself in this life but those kinds of people don’t seem interesting or useful in this regard.
For one reason or another – and I am very surprised by this – even having a very casual-friendly FP features like Elixir does (f.ex. immutability) gets people severely confused, almost helpless even. I am not sure what we can do except pack shop and say “okay boys, we are a Ruby now!”. Do you see any other way?
Eh, if you say so. They are difficult in different ways is what I’ve observed. The corporate stakeholder can listen to you for full 45 minutes, then bite off his cigar and then calmly say “Very nice, now please implement this or there’s no next funding series”.
If you are implying that they are more reasonable… I have my doubts.
Still, what would you change in Elixir?
My absolute top #1 with zero competition would be to start shoving static typing in Elixir as quicker as we can. In all my Elixir work, having to add more and more tests and carefully reason about return values and making sure we’re not operating on a string when we need an integer or a float, has been the chief problem.
But I am known to be unrealistically idealistic at times. So let’s dial this down.
I’d probably work hard – if I was paid to – on making Elixir less “raw”. There are many things in the ecosystem that are made perfectly to accommodate other libraries… but not always apps. Ecto and LiveView come to mind where one abstraction level up would make Elixir feel much less manual to be perfect for just quickly making apps.
I appreciate how Elixir carefully focuses on providing great building blocks. But… nobody is willing to put the work to make working parts of apps that can be reused, out of these building blocks (myself included). Everyone discovers and rediscovers the same lessons as they are building their app.
To me that feels wasteful and I would work to change it… though thinking further of it, why would I give shortcuts to greedy lazy people is another entire dimension in this multi-dimensional matrix. Feels like we’d go too far into the “automate myself out of the job” thing, too far for my taste. Maybe.
But yeah. Static typing. If Rust was not so verbose and wasn’t still figuring out ORMs and DataMappers and web frameworks, I’d probably be a long time regular Rust dev by now. Elixir has mature choices that, even with some flaws, are pretty much perfect at what they do.