On "Why Elixir?"

To be clear, I’m not suggesting that libraries are bad. All other things being equal (or similar enough), it’s of course better to have the library available than to not have it :slight_smile:. My position is that as a backend developer I get some important benefits from BEAM that I personally value more than the amount of available libraries, and that even with the lack of libraries, the end solution often seems significantly simpler to me.

To reiterate, I worked on a couple of systems that were implemented completely in a single BEAM language, without anything else used on the side. With many other languages I’d need to run multiple OS processes (i.e. microservices) tied together with other 3rd party tools such as Redis, message queue, reverse proxy, cronjob. This is a huge amount of technical complexity that is rarely, if ever, mentioned when comparing languages.

In my view, ecosystem can always be grown on top of good foundations, but it doesn’t work the other way around. You can’t fix some fundamental deficiencies at the runtime layer, like no support for fault-tolerance or stable latency, by adding more libraries. You can only work around such deficiencies outside of the language, e.g. by going down the microservices path, maybe reaching for k8s to assist you with that. This can certainly work, but I’d argue that it’s much harder than hand-coding a couple of REST or GraphQL requests and interpreting the responses :slight_smile:

In particular, when it comes to manually integrating with a 3rd party service, my experience is not very extensive, but in the few cases I had it was relatively straightforward and didn’t require any advanced knowledge of BEAM. It boiled down to reading the API docs, picking an http client library, issuing the requests, and interpreting the responses. I’d usually need to invoke only a couple of different actions, so it wasn’t a lot of work. I agree that this is still far from perfect, and that it can seem unsurmountable to junior, but I don’t think it’s rocket science :slight_smile:

There’s definitely a lot of room for improvement. Things can and should be simpler, but we can gradually get to that point, given time and effort. Which is why in general I place more value at the foundational layer (in this case BEAM) than at the ecosystem.

15 Likes