Why I Refuse to Use Node

Node is a popular technology that seems to be taking the web industry by storm, and there are definitely some benefits. So why wouldn't a web developer be interested? I'm glad you asked. Time to get controversial, folks.

What is Node?

So of course, we should start with an explanation of what Node is for those who may not be in the know. Node is a technology that allows JavaScript to run on the server, not just in a client's browser. Traditionally, it does things like on-click events such as a drop-down menu or other neat features that add interactivity and life to a website. JavaScript is fun, powerful, and I'd go as far as to say criminally under-rated. Node only proves this even more. Now, there's no need to have another server-side language. We already have so many of them, PHP being the most common one of all (at least for smaller scale sites and applications), and then you have the enterprise-level languages like Java or C# that power some of the more powerful platforms.

So if there's no need, then why do it? Well, it comes down to convenience. Any website you build, you're almost certainly going to have JavaScript somewhere in your site. Having it run on the server as well gives you the added benefit of staying in one programming language all day, essentially. Though while I do understand the allure to this concept, I personally just don't find it all that useful, at least not enough to outweigh the numerous considerations that need to be made. Here's where the controversial part gets started.

It's immature

Node JS has only been around for about 9 years. I know this may sound like a lot, but it really isn't. And even if it was, the platform didn't explode upon inception. It took several years before Node really took off in popularity. So largely, this means the platform is untested when it comes to withstanding the test of time. I don't think it's too unreasonable to consider Node a 'fad' technology. That's not to say that it's bad, just that we don't have enough time to really collect an efficient amount of data to appropriately judge whether or not it's going to be as great as all the fanboys think. What we can do, however, is look at other technologies that are similar.

Ruby on Rails

This is another fad technology that, while it was extremely popular for a number of years, ultimately has started to fade into obscurity. It's still a solid platform, but a number of factors have started to cause this tech to slowly drop off. Twitter was originally built on this, which lead to the infamous "Fail Whale" issues. Ultimately, Twitter had to rebuild. And when they did, they reached for a tried-and-true industry giant: Java.

Python

This is an old language, and honestly one of my all-time favorites. Using the right additional tools, it can also be used in web development. And as a matter of fact, it has been extremely popular as well lately, despite its age. Frameworks like Django, Flask, and Pyramid enable you to write powerful websites much the way that Rails enables Ruby to do the same. But as much as I love the language, and as popular as it is, it has one too many assumptions for me to personally consider for anything web related other than maybe some daily cron jobs or something.

Now I have no way of predicting the future. For all I know, Node could be the next big thing and blow everything else out of the water. After all, and a good developer is always looking for new ways to improve their skill set, their applications, and really anything they have their name on. Even if you're not going to use a specific technology, it's never a bad idea to at the very least take a peak. You never know when you'll be exposed to a new way of organizing your code, a more efficient documentation method, or really anything that can make you a better developer.

It takes work to set up

JavaScript, Ruby, Python, Java, C#, they're all used for web applications. One thing they all undeniably have in common is that they rarely come pre-installed. Powerful as they are, they take work to set up. And this isn't an easy task that any developer can do without a little know-how. Setting up these environments take very specific dev-ops knowledge, all different from one another. Or, you can reach for another tried-and-true industry giant that doesn't have the extra baggage, good ol' PHP.

PHP get's a bad reputation because of how forgiving it can be, which has caused a lot of bad code to go out into the world. But the language has matured so much over it's lifetime. It runs an insane amount of websites, powers an equally insane number of online platforms like WordPress or Drupal, and most importantly of all, it was literally built specifically for websites. And the best part? It requires (basically) zero set up. If you're launching a website, I highly doubt you'll find a server that doesn't have PHP already installed and ready to go. Even if you have your own VPS like Digital Ocean and you're running a fresh install of Ubuntu, it's as easy as typing "sudo apt-get install lamp-server^" and you'll be up and running in a matter of seconds. No need for template engines or additional libraries. Just upload your site and go to town.

Wrapping it up

There are other things I could say, but I don't want this blog to be too much longer than it has to be. The important take away here is that Node is a powerful platform that has some undeniable benefits, but that doesn't mean that every developer should jump ship and dive in. Learn it, sure. I've spent a little bit of time playing with it to see what it's capable of. But I just don't know that I can say with any level of confidence that Node JS is going to do anything for me that PHP can't do, even without taking into consideration all the additional work and know how required to set up and maintain the web application for the entirety of its life cycle.