Since 1988 When I’m dead.
This post has received a tremendous amount of outcry against my claiming a “victor” in the war between programming languages. While I admit, my title may have been intended to spark controversy and may be “click-baity”, I do still want to emphasize that this post is not about how JS is the “best” language.
It is simply about the sheer territory it has covered and the ways in which it has allowed the once-simple front-end dev to do so much more. It’s a versatility I have truly grown to love in my career and one I feel obligated to encourage.
In the world of programming, there was a war waged long ago. Since the advent of the computer, scientists have been searching for the perfect programming language. One after the other, a new language was created to accommodate some purpose. And with that new language came a new era of technology, a bolstering community, a million libraries and open-source contributions, and — inevitably — a new limitation. Since the ancient days of assembly programming to the Java Applets and Flash Abominations (and I was a Flash developer at one point…) that dominated the web for so long, we have seen languages come and go for no reason more than that their usefulness had worn out.
The world moved in a different direction…
And that once shiny, new language was now old-hat, with developers dwindling and a new kid on the block starting to make some noise.
This post is about Node.
And we really need to start distinguishing that. Because Node is something else. It is not just a language. It is an ecosystem.
And that is what this post is about.
Well, not entirely. I’m not going to go into detail on the million and a half reasons the ecosystem is the most innovative facilitator of open-source collaboration the world has ever seen. No, that’s a topic for another day. For now, I’m just going illustrate how Node has already won the age-old war for the perfect language by traversing five key territories of modern-era programming:
React, Angular, Vue
React, Angular, & Vue are easily the most important front-end frameworks in existence today. Collectively, Facebook, Google, and the FOSS community have developed mind-blowingly efficient tools for developing interactive user-interfaces.
As a result, practically everything you do on the web today is served up by a highly-interactive, aesthetically pleasing, and easy-to-use interface. And these frameworks have been made possible entirely because of the Node ecosystem, which you already knew.
This is the age of the UI.
The age where front-end developers no longer shy away from building complex, single-page web applications and full-fledged suites of software. Where I was once a web developer, I am now a software developer.
And like that… Node won the web.
Not only is this section going to illuminate the mobile successes of Node, but it is also going to make another crucial point:
Node is cross-platform.
And not just in the, “Oh, cool it works on my phone!” kind of way. Not even in the, “Whoa, my phone, tablet, laptop, and TV can all use YouTube!” kind of way.
Node is cross-platform in the most important way possible. It is truly cross-platform for developers. The people that actually build that “oh, cool” and “whoa” stuff mentioned above frackin’ LOVE this.
React Native is just one example of a framework developed in the Node ecosystem that bridges the gap between front-end development and mobile app development in a way that no other frameworks have before.
The biggest strain on developing for mobile has always been the pull of the web. However, with React Native and the Node ecosystem, a developer can build literally one application that is compatible with the web, iOS, & Android. No other language offers this kind of versatility.
And like that… Node won mobile.
Of course, not everything happens on the web. Desktop applications are also crucially important to the way we operate in today’s technologically-dependent world.
But why should we treat the desktop any different when the web is now capable of serving up fully-functional applications?
And so, Electron was born.
Thanks to Cheng Zhao & Github, a framework was created that is changing the face of desktop computing. Not only has Electron added desktop application development to the web developer’s already growing repertoire, but it has done so in a way that is wholly cross-OS compatible.
While Windows is still the most pervasive OS today, Mac has been on a steady rise for 15 years, and more and more developers are switching to Linux every day (as I just did). In addition, little toys like the Raspberry Pi are causing Linux to pop up in more than just a few previously Windows-or-Mac-only households. I think you can see why cross-OS development is such a huge advantage… and this is just the start.
Now we’ve got the web, mobile, and desktop fully covered by the Node ecosystem. One skill-set that is capable of building the same UI in all of these places.
And like that… Node won desktop.
I don’t want to get into an exposé here about the countless packages available on NPM (Node Package Manager) that facilitate back-end development, so instead, I’m only going to mention ExpressJS, and this is to make one simple, but profound point:
Node was built for the back-end.
And — as with several examples above — this dramatic simplification of code sharing and reuse has had some remarkable side-effects.
One such side-effect is server-siderendering.
Did you catch that?
What do those two things have in common?
Very different people, back-end & front-end developers…
But no longer!
Thanks to Node, we are now able to assemble complex user-interfaces on the server-side before a user’s browser ever needs to render a thing. This is why the web is so snappy nowadays. Because Node has erased the boundary between back-end and front-end.
And like that… Node won back-end.
We like our language the way it is(n’t); versionally-fragmented, transpiler-dependent, cross-platform, bleeding-edge, ever-evolving, and going where no language has gone before.
Like game development!
And while Unity did recently announce they’ll be dropping UnityScript support, I’m still going to say:
OK, maybe not. But it’s not the 12th round, yet, is it?
Veni, Vidi, Vici
I don’t know when the conquests will cease, but Node is on a rampage. It is toppling one development conundrum after another and paving the way for a world of software development where one language rules them all. I do feel I need to reiterate before trolls, though — in case it was overlooked:
Disagree? I’d love to hear about it in the comments.
Otherwise, please share a few claps and show your support for the world’s most innovative language!
Thank you for reading! Please don't hesitate to leave any feedback in the comments section below or if you prefer private communication you can also find a link to email me at the very top right corner of this page.
Craft CMS | Focused content management for web professionals
Sass: Syntactically Awesome Style Sheets
Stack Overflow - Where Developers Learn, Share, & Build Careers
Global Digital Asset Exchange - GDAX
Bootstrap · The world's most popular mobile-first and responsive front-end framework.
Raspberry Pi - Teach, Learn, and Make with Raspberry Pi
Build software better, together
Phoenix Home Services
Google Cloud Computing, Hosting Services & APIs | Google Cloud Platform
Etsy.com | Shop for anything from creative people everywhere
Adobe: Creative, marketing and document management solutions
Wikipedia, the free encyclopedia
webpack module bundler