This is the kind of thing that I love about Elixir. As great as Phoenix is, realistically you are going to be equally productive in any web framework. Elixir is my favorite language because it gives you primitives that perfectly suit your needs for just about anything running on a socket, especially once you add in Plug.
Throwing together a prototype is instant, but the awesome part is how quickly you can turn that prototype into something useful. More concurrency? Done. Need to sock away some state somewhere you can easily find and deal with it? Easy. It's easy to write, easy to reason about, and gives you fantastic composable tools to put something great together. It doesn't feel like a codebase so much as an incredibly well managed and cohesive OS.
Learning curve is a little steep, because of the functional aspect. However, the benefit always was worth my time. Our tiny server runs blazing fast in production and picks off background jobs incredibly fast
I never really had trouble with that aspect with it, but I also never really mastered OO programming. The paradigm shift is probably tough, but I sucked enough beforehand that I didn't have to deal with it.
Most people might have experience with functional-ish features like HoFs and lambdas in imperative langages but Elixir, through Erlang, is much more of the package: immutable structures and bindings, expressions-oriented, patterns, limited support for iteration. It’s not pure or anything, but it’s closer to OCaml than it is C# or Javascript.
“I’ve used Array#map” doesn’t mean you know functional programming.
Yes sir. People would have fun doing .entryList() or map.each do {} end which seems trivial but however with something as functional as Elixir, we can only achieve this with the Enum module for example. There is no iteration but only a bunch of methods from which to choose based on your requirement
Throwing together a prototype is instant, but the awesome part is how quickly you can turn that prototype into something useful. More concurrency? Done. Need to sock away some state somewhere you can easily find and deal with it? Easy. It's easy to write, easy to reason about, and gives you fantastic composable tools to put something great together. It doesn't feel like a codebase so much as an incredibly well managed and cohesive OS.