Elixir and Phoenix after two years
To add to the author&#x27;s experience, I spent 18 months of production time with Elixir and Phoenix.<p>As he says, the templates are compiled and are blindingly fast compared to Rails.<p>Pattern matching is really really nice when used in the right places (and you&#x27;ll miss it if you go back to Ruby); but it can be overused.  There&#x27;s a faction of Elixir folks who attempt to avoid all conditionals and instead seem to prefer multiple dispatch&#x2F;multi-methods to handle different cases.  That&#x27;s nice and very concise, because then you can simply call a function and let the pattern matching resolve which of the various implementations you&#x27;ve defined handle it.  The big downside here is, as a reader of the code, you have to basically mentally imagine what all cases are covered and what they mean.  Sometimes simply reading a switch statement or if&#x2F;else&#x2F;then is much clearer.<p>The super special magic is in the Erlang VM.  If you put more energy into learning it and its capabilities, and using it where appropriate, it can shape the structure of your greater system beyond just one webapp; and it can provide a lot of features without you having to cobble together many other (good but independent) solutions.<p>Lastly, single thread performance is basically a dog.  In my anecdotal experience, the same external service written with Elixir+Ecto was 25-50% as performant as a Python+SQLAlchemy program.  So the lesson there is, find ways to parallelize or otherwise scale your process if it is batch oriented and handling a large volume of data.<p>If you asked me today if I would prefer to use Elixir (and Phoenix) over Ruby and Rails, I would say yes... but honestly mostly just because it&#x27;s a new fascination with different tradeoffs and a better functional story.  Function is the past and the future, and it makes your life easier and simpler.  Elixir as a language... borrowed too much from Ruby and has too much syntax.  It is noisy in a Perl-like way, and perhaps there could be a more concise enhancement of Erlang which would get the job done and not have you spending time visually parsing code.