In my opinion, instead of searching for alternative we should use good programming languages that are extremely refactor-friendly and legacy-resistant.
That's why I love ELM as a front-end langauge (and hope to see a successor ROC succeed).
For back-end, that's why I love Rust, Haskell etc. All languages that are closer to Pure, FP. Because I can leave codebase to other devs and still know that it's not gonna turn into something which I've seen happening to Python, PHP and other OOP language codebases.
Nope, it's not really about the language - any mainstream language/platform can be used well or badly depending on who's guiding the design of the app (assuming somebody is, instead of falling into the "agile means no design up front" cult). You can create an elegantly structured, maintainable app in python, node, rails, .net or you can create a big ball of mud. Perhaps apps in Elm, Rust, Haskell et al have a bias towards better design because they themselves attract an elitist crowd who think more consciously about these things. If Haskell ever caught on enough to have an "eternal September" moment then the world would be littered with shitty codebases of pseudo-pure-functional code that somehow broke all the idioms that are supposed to make the language great.
I once had a client who'd had a shiny but disorganized MVP developed on .NET, and of course as the org tried to scale and ramp up new features, the devs had to fight more and more against the design (or lack of it in some parts, or overly complex over-design in other parts). At some point he met some dude at a networking event who had built a successful business on a Node codebase, and became convinced that we should rewrite from the ground up in Node because our performance problems were all the platform's fault. Wrong wrong wrong. But it's much easier to believe a sales pitch than to do the hard work of learning what good, performant design in your chosen language/framework looks like.
Who knows whether Haskellers are better, on average, at designing software. As a Haskeller I'd like to think they are! But I really have no idea. What I do know is that _I_ can design better software in Haskell than in Python, and I put that down to qualities of the language.
Help, I've seen bad elixir. Ecto queries spanning dozens of tables with the performance grinding to a halt as load increased, with models and logic so intertwined that you had little hope of untangling the ball of string so you could refactor and scale the database.
You can make bad things in any language. I like Go for the same reasons you like FP. And there too, people can do strange and unmaintainable things
That's why I love ELM as a front-end langauge (and hope to see a successor ROC succeed).
For back-end, that's why I love Rust, Haskell etc. All languages that are closer to Pure, FP. Because I can leave codebase to other devs and still know that it's not gonna turn into something which I've seen happening to Python, PHP and other OOP language codebases.