We get it, you [insert programming language].

left-pad seems to have ignited an entire raging debate over the merits of JavaScript and it’s ecosystem, to the point where meandering shitposts are now hitting major news outlets. Cool! You did it, you rebel. Fuck JavaScript, am I right?

These silly kids and their toy frameworks! Who cares about ergonomics and usability, anyway? You can just slap jQuery on a page, and boom- hot dripping loads of usability, and you didn’t even have to open your terminal. Nice. Fucking ship that shit.

The way people have been talking about JS/NPM lately completely blows my mind. It’s like going to Wrigley Field and watching a baseball game, where afterwards you said baseball was stupid because you couldn’t figure out how to eat a hot dog.

That’s what you sound like, when you whine about how complicated it is to write a ‘web app’, like it was some kind of affront to your engineering sensibilities. Get over yourselves. Want to build a website? Do it. Do it the way you know how. Render shit on the server. Who cares? Build things.

Want to build something in JavaScript? Awesome! There’s a damn good reason that the web is the best place to launch a product because you can build on the work other people have done to get your shit out the door faster.

Countless posts dot the web of programmer circles kicking up a ruckus about why JavaScript is bad. The reason you are frustrated and give up is because you expect some kind of free lunch or that the way that React/Angular/Ember decided to nullify some dependency isn’t how you did it with jQuery and BY FUCKING GOD this will not stand!

Maybe just for a second you get off of your high horse and stop writing thinkposts about how a paradigm doesn’t work for how you see the world. Just once accept that a whole team is writing software so that you can make stuff, faster, and has a pretty good idea of what they’re doing.

It’s not like jQuery stopped existing. Ember still depends on it, in fact. Who is demanding that you write your next website in React? The internet police? Is somebody slamming through your door while you’re hacking on your project and demand that you immediately start up a new react project within five minutes or else you’ll be shot?

Programming on the web is a love affair. A torrid, moist, and sticky pile of interlocked orgies of dependencies. The only difference between what it was like in 2005 and 2016 is that we’ve managed to isolate that insanity to NPM, which is a labor of love from a few people and is run entirely for free for most of it’s life. One developer who had a shitty day and made a series of moronic decisions on how to handle a situation ended up breaking a bunch of continuous integration builds.

That meant nobody was able to deploy for a few hours and suddenly Medium and every po-dunk, out of date, illicit or default themed WordPress blog comes to life spewing the dumbest and entitlement-rife vitriol over the very thing that they’re using to spew it.

So yeah. Whatever. Go back to throwing JavaScript files into your header. Do it. Did you ship something? Cool, now keep going. As Jed Bartlett said, “Give me the next 10 words. Give me 10 after that, I’ll drop out of the race right now.”

The reason tools like Ember, React, and Angular exist and are becoming popular is that for the first time in the entire history of the internet there is a standard starting to take shape of how it should be done. React and Ember are two slices of the same coin. Their approach between components are implemented differently, but at a deeper level, the approach at a design level is very similar. You can’t go wrong with either.

Yes, one has tools that sound silly like “flux”, “reflux”, and “immutable”. Yes, functional programming is beginning to become back into vogue. That’s fine. Ember does basically all of what react can do, and packages everything up with the build tools to back it up and make it painless.

In fact, open up your favorite terminal window, and copy and paste “npm install -g ember-cli && ember init foo && cd foo && ember server” into it. There. Have a coffee. You did it. You’re done. Go to localhost:4200 and poke it if you don’t believe me. There’s no fiddling with babel (unless you want to), no messing around with packages or libraries (unless you want to) and there’s no magic behind the scenes of how it all works together, unless you want to continue being ignorant of how programming on the web evolved over the last decade. [1]. All you need is node and bower installed.

Now do the same for a Rails project. Do the same for a Django project. do the same for a Phoenix project. They’re all fingernail-busting annoying in their own way but they work.

Backbone doesn’t cut it anymore. ES6 can be used today; things like modules, lambdas, async/await, and countless more that back in the ’00s was almost impossible to imagine. Is it slightly harder to get started? Yes, because we began to build tools that made it easier to be ambitious. Is it slightly more complex than doing it with require.js or jQuery? Of course it is.

apt-get made things easier to work with for C developers and *nix users ages ago. Red Hat has rpms and CentOS had yum. They’re all terrible. Gentoo has emerge, and it’s insufferable. Python has easy-install AND pip, plus two versions. Ruby has gems, and every ruby developer hates them. Even .NET, for god sakes, has NuGet. Elixir has Hex. iOS has cocoa-pods. Go literally uses Github as a package manager. Are you seriously going to tell me that using GitHub is less insane than using npm?

I don’t want to go back to the 00’s. Programming is hard, complex, and rewarding. But whenever you sit down to program, you’ll only get two of those results at a time.

1 — I ❤ React. I just ❤ Ember more. Have you seen the top of Erik Bryn’s magnificent dome?

Show your support

Clapping shows how much you appreciated Landon Noss’s story.