Anyone can take any language / ecosystem and shit all over it.
Dmitri Farkov

JavaScript cannot be fixed!

As others have noted, the fundamental problem with web development is that JavaScript is a broken language. The intractably long list of problems is well-known. There are only two possible things you can do about it: either eliminate those problems from the language or avoid the problems altogether.

How can you eliminate the problems? You can’t. ECMA will never make breaking changes to JavaScript.

How can you avoid the problems? You have to develop the self-discipline to avoid using the problematic features of JavaScript. Basically, this means strict re-education of the world’s JavaScript developers.

This is a monumental task, an impossible challenge. Go ahead–try to come up with a re-education strategy that has a reasonable likelihood of success. You can’t. (Yes, I’m aware of Douglas Crockford’s book. Even his book is insufficient to re-educate all JavaScripters.)

We are forever stuck with JavaScript’s insane semantics. The only way to avoid JavaScript’s problems is to avoid using JavaScript. This means using an alternative language, a “transpiled” language, such as Amber or Dart or ClojureScript or GopherJS or any of a gazillion other alternatives.

As long as David Flanagan’s standard bearer, “JavaScript: The Definitive Guide,” continues to teach people all of JavaScript’s ugly features, we have a problem here.

And what is ECMA doing about this? They just keep piling on new features, as if this is a solution. Adding all of these fancy new features to JavaScript amounts to putting lipstick on a pig.

The other issue is that SPA development is inherently more complicated than writing regular web applications. (Others have written about this, so I won’t regurgitate.) Why take on such complexity for so little return?

Of course, a valid case can be made for writing a SPA in some instances, and that’s fine. But why is everyone glomming onto SPA like lemmings? Why does every web application have to be SPA?

My personal feeling is that if adopting Angular or Backbone or React means having to use JavaScript, then thanks, but no thanks. The choice of programming language is vitally important to the web development process, and I’d rather use something that is not a veritable minefield.

Enjoy this video: