4 ms·
I can give you my point of view as a seasoned PHP / Symfony dev with a light Elixir experience. Pros : - Elixir is fun. It's hard to describe why, but it is.
by conradfr 7y ago
I can give you my point of view as a seasoned PHP / Symfony dev with a light Elixir experience.
Pros :
- Elixir is fun. It's hard to describe why, but it is. Piping is additive, so are genservers and supervisors (which lead to anti-patterns but still).
- Phoenix is well thought out, documentation is good. Plugs are so simple.
- Websocket support is great, obviously (and LiveView is a gift).
- Ecosystem is not that big, but mostly quality and the automatic hex docs is a great feature.
- Concurrency is obviously good and, most of all, only there when you need it (looking at you, Node).
- Speed.
- Coming from PHP, having the ability to easily run tasks outside the current request is so freeing and eliminates the need of many third party components.
- Testing is good.
- Mix is great.
Cons:
- I don't care about static vs dynamic types but I do miss the type hinting of PHP 7. Typespecs are helpful but not the same (and Dializer reports are not fun).
- As a follow up it's hard to beat the IDE support of popular languages. (the Elixir plugin for Jetbrains' IDEs is good though).
- Not anybody will like functional programming I guess (it did kick my butt at first)
- Phoenix doesn't provide that much. If I compare to Symfony (and I guess RoR, Django etc) it's really noticeable. Authorization/Authentication, Cache, Mails etc. Also I'm not a fan of the templating (again, compared to Symfony's Twig).
- Also Phoenix speed of development seems slower (I guess the team is small and also currently a lot of work goes on LiveView)
- What I would give to have the cross-build capability of languages like Go, or the simple deployment story of PHP etc.
- Obviously a smaller ecosystem and less support online (StackOverflow is not useful, better luck on the Elixir forum)
- Speed (for some things).
- I do miss the return keyword.
- I do miss constants (modules attributes are not a replacement).
- None of your colleagues want to use it (some people just hate VMs).