ES6 is Over-Engineering JavaScript

Don’t let acronym fool you. npm is more than node’s package manager; it’s the package manager for all of JavaScript.

It houses great big libraries like React, Electron and socket.io. It also contains itty-bitty snippets of code. Code so small you’d expect their behavior to be native to the language.

This has turned JavaScript into a language with a small, serviceable core and lots of useful extensions available in npm.

ES6 is expanding the core of JavaScript.

Not by adding things that currently don’t exist in the JavaScript + npm realm, but by introducing new ways to do things we could already accomplish before.

This seems like a very bad idea to me.

On a package level it’s perfectly fine to have overlap. Packages compete on API, implementation, performance and reliability. This is expected. Preferred even. Overlap in functions and syntax is totally ok. It creates fragmentation, but it is not compulsory. I can pick between lodash and underscore. I can choose neither. Everything is awesome.

On a language level, overlap is a problem. If there’s more than 3 ways of doing a thing, I must know all three and everyone I’m working with must know all three.

The more ways there are to do a basic thing, the more ways there’ll be to screw up. More pointless arguments over style, readability and execution. Syntactically correct versus better.

I feel JavaScript should have a simple API with a defined package manager where you can access code that allows you to do more.

Nothing I’ve seen about ES6 is impossible to accomplish in ES5. These changes really should have been packages officially blessed by the committee in charge of pushing JavaScript forward.

Imagine going on npm to look for a way to manipulate arrays and finding a package with a “recommended by the JavaScript Working Committee” badge.

Although this means a less-than-stellar standard library, I feel this might be a better way to progress JavaScript. Maybe I’m completely wrong. What do I know about making a language?

All I’m certain of is ES6 is over-engineering JavaScript. I really hope I’m wrong but I think this is a very bad thing.