There are many definitions of what makes a startup. Some emphasize its size, some innovation; yet the universal defining element of all startups is their rapid growth.
Companies like these have one common goal in mind – rapid growth. Everything else seems to be irrelevant, as these firms can even generate losses for years (a ride hailing giant comes to mind) – it’s not their goal to be profitable (yet). Because that’s the case, startups have a limited financial runway.
As such, engineering teams at startups need a language and an environment that will enable them to iterate quickly while keeping costs down.
In the world of rapid growth, there is one key term – Minimum Viable Product or MVP.
What is it? It is the creation of services or products with basic features with the purpose of gaining customers’ attention. As such, the more advanced features are supposed to be developed with time, and are therefore omitted. On top of that, it might happen that the product-market fit isn’t quite there for the product, which means the company will have to pivot.
Additionally, deployment to production is simple, due to the fact you don’t need to compile the codebase. You also don’t need to set up a separate web server, such as Apache. You upload the code, you spin up PM2 (production process manager; helps manage apps), and you’re pretty much good to go.
There are three main ways to scale an app:
It’s when you have each clone of the same app handle some of the work. It’s the easiest approach, and it’s highly effective
It’s the practice of breaking down an app to have multiple, smaller, apps that do the same job. The term is commonly associated with microservices.
It’s you want each clone of the app to handle only a part of the data, then you split the app. E.g. each clone would take care of users based on their location or language.
Back to Node.js – it is the king of scalability. The authors of the runtime heavily emphasize the capability of apps written in Node.js to grow. It’s the core feature of the piece of code, and even one of its heavily promoted features. On the project’s about page, in the first sentence, we can read that “ […] Node.js is designed to build scalable network applications.”
Utilizing all the resources of a single server is therefore easy as pie. The way it works is that it will split the main application among several related processes that will communicate with the main one using inter-process communication. If you are curious about how the messaging works exactly, head over to Node’s documentation.
Maintaining two separate teams is costly. Startups have many assets – though an excess of money is usually not one of them. As such, many new, rapidly growing companies opt-in to use Node.js on the back-end and on the front-end. The choice of Node.js is not subpar by any means at all.
This way, teams are smaller, more agile, and communicate better.
There is a game in the JS community. Pick a word and check if an npm package exists with a given name. Of course, not quite literally – the point being there that the breadth of packages is unprecedented, and extraordinary. For startups, this means that there is a safety net in terms of ready-made solutions. Components, libraries, packages, modules – whatever you need is there. In fact, in April 2020, there were more than 1.3 million of them!
The package manager makes the installation a breeze as well – both in local scenarios and in e.g. containers. In case you don’t fancy this particular solution – no worries. You have got Yarn, and pnpm at your disposal.
Node.js is blazingly fast, uses little resources, and is future proof. Is there ever any time when you don’t want to use it?
These are all highly specialized areas, though, therefore if you belong to the 95% of businesspeople, the language created by Brendan Eich is always going to be a good choice for startups.