Part 2: A brief history

Okay, so NodeJS isn’t perfect, what do you expect from a web browser language that was adapted for the server? Surely there must be benefits to offset these disadvantages, right? For me, that is a 2-part answer that requires going back in history...

2010

At the time, NodeJS did offer some distinct advantages over the competitors of its generation, specifically Ruby, PHP and Java. Node had a better model for async work & scalability than Ruby and PHP, and was far less verbose and complex than Java. It also had the added advantage of being Javascript at a time when JS SPAs came onto the scene (i.e. Backbone) and were revolutionizing the front-end. At that time, NodeJS was a reasonable option with exciting possibilities (MeteorJS anyone?).

2020

However, it’s not 2010 anymore. The main point of this series is to make the argument that for new projects in 2020 NodeJS should not be used for anything beyond the most trivial of applications. There are a few exceptions to this (server-side rendering React apps or building an API for an Electron app, for example), but otherwise there are far better and more mature alternatives available, which I will explain throughout this series.

Potential

NodeJS was a very cool experiment, I'll never argue that, and it struck a chord by being at the right place at the right time. Overall it is not a terrible choice when given all of the options available, but I just think that the best a NodeJS project can be is good, never great or exceptional, and it takes a tremendous amount of effort to even get it to 'good'. Your typical NodeJS project (if it is of any significant complexity) will likely be 'bad' to 'fair', and you'll need a team of very senior engineers that agree on a single paradigm to even have the chance of getting it to 'good'.

To end with the toxic relationship theme of this series, I'll use the classic quote "If you can't handle me at my worst you don't deserve me at my best". That quote isn't an exact analogy but I think you get the idea, more red flags...