Why should Elixir/Phoenix be the stack of choice?

Take a moment and imagine… Your friends/clients explain their idea and ask you for advice on building it. You see Elixir and Phoenix, perhaps LiveView being a good fit. What do you notice yourself sharing about and emphasizing most? Which advantages do you tend to highlight?

The question is intentionally broad: perhaps your friends shared about their startup idea, or your clients shared about building a new component to interact within an already large-scale distributed system. This exercise of imagination may land anywhere on the spectrum; you pick!

Bonus points if your friends/clients are less technical and your short pitch is tailored to them.

1 Like

I recently tried Nextjs and Remix to explore other stacks since I’ve been using Elixir and Phoenix since 2016.

You won’t find the dev UX you take for granted in Elixir and Phoenix.

Endless routing options, background jobs? Just install Squirrel and yadabadabadoo or just use AWS SQS. What about solid backend processes? Can I call those in some kind of repl? In Elixir I can just go iex -S mix phx.server and MyModule.foobar("test") and bada bing I’m all set. What about logging? Wait I need to decide and configure a logger? I also need to decide and configure what to output to? What about a nice ORM? Prisma looks good, set that whole thing up from scratch, I need to await, but special considerations need to be thought of when iterating through a collection? Promise.all vs for…of? I iterated an array and want to save it to the DB but it’s running out of connections? Why do I even need to think about this?

image

You get all this for free and robust and predictable in Phoenix and Elixir.

And with Liveview you get all that + a responsive modern web application.

I don’t see myself ever leaving Phoenix and Elixir. It’s really incredible what Jose and Chris have built on an arguably shoestring budget/team size.

5 Likes

There are numerous reasons, the number one reason for me is the ability to debug a live system using a remote shell.

5 Likes

To me it’s about the balance between productivity and performance.

Ruby on Rails has always been a good example of how you can get more done with less developers and in the end what matters for a project is the ability to create value for users/customers.

Phoenix comes with all of that productivity, almost unparalleled developer UX (top notch documentation, a mindset where expressive and clear code is preferred, tools like dialyzer/formatter/credo) and capabilities to go above and beyond with phoenix live view while having a great VM that enables a high scalability.

Most projects also doesn’t need the separation between frontend/backend that is very common these days. Building frontend/backend teams means the project most likely need at least 4 developers, whom are going to get caught in API-discussions, potentially tricky organization of synchronized releases and maintaining multiple repos. I’m so happy that those things are a thing of the past for me since we adopted elixir in my organization.

2 Likes

If someone is asking for advice, I’d say:

“Join the Boring Technology Club, use the stack that you’re most comfortable and productive with. Worry about the product more than the underlying technology.”

If this was me building something for a customer:

“Trust me with the technology choices, I will deliver.” (go on building it in Elixir).

4 Likes

For me the dealbreaker seems to be so far the lack of i18n and localization support. I was shocked when I had to select the tag for my previous question on this forum. i18n tag has 9 occurences (2 of those are my latest question) and language has like 14 or 17.

So, unless you know experienced Elixir/Phoenix programmers I wouldn’t chose Phoenix for multilanguage international projects. The documentation for the cldr library and most of the i18n things is very sparse and inconsistent. Very noticable downgrade when coming from Laravel.

So, the documentation could be better in my opinion.

2 Likes

Can’t compare with Laravel, but I had the opposite experience while setting up a multi-language webapp, adapted to my clients specific needs.
While not being super experienced in phoenix, I managed get all the nuts and bolts fairly quickly. Just my two cents, but wouldn’t discount phoenix on this domain.
But maybe you can share some insights on where the docs might be improved, or what Laravel has done better regarding i18n.

For example, the LiveView is completely missing from the Phoenix page menu in the left sidebar here: Phoenix — Phoenix v1.7.0-rc.0 (when you click on guides) which is weird because LiveView is currently the thing that attracts people to Phoenix the most, imo. I had to go back to Google search and search “liveview docs”.

Ah, I see your confusion. That’s because LiveView has its own project and documentation site (Phoenix.LiveView — Phoenix LiveView v0.18.3). You’ll get used to it, and how the more important packages relate to each other.

But in general, I absolutely adore the elixir documentation. But you have to give it some time (as in any new ecosystem you encounter), to get to know your way.