spoiler alert: It's Elixir
First, the negatives
Elixir isn't a perfect language by any means. Here are some drawbacks of the language:
- The static type checker (aka dialyzer) error messages are difficult to understand
- The actor model and OTP don't have the best APIs, and they can be difficult to grasp at first
- The tooling around the language (such as third-party libraries) is not as complete as say, Ruby, Python, or Java. (This is improving, however)
I have been programming in Elixir as a hobbyist since 2016, and professionally for a year and a half.
I know it better than I know any other language.
This means that I will more likely be most productive with Elixir compared to other languages.
The Elixir language is simple and straight-forward. The build tools just work (I have spent entirely too much time trying to get IntelliJ to use the right JVM for Java projects)
Mix is really cool, testing (including DocTests) are built-in as a language feature.
Phoenix itself is readily familiar to anyone who has built MVC applications.
Seriously, if you haven't check out the 15 minute Twitter clone demo that Chris McCord does.
Phoenix gives you a lot of features out of the box.
Elixir has been used by several organizations to increase traffic. (See Discord, BleacherReport, and others)
Are my app going to have that much traffic? Well, not yet (and probably never), but a lot of this you get for free with the way Elixir concurrency and the Phoenix Framework work.
For all these reasons, Elixir is my language of choice for side projects and random hacking.