Introducing the basic layers of the application
If we plan to build a house, we will probably want to start with a very good base. We simply can't build the first and second floor if the base of the building is not solid.
However, with software, it is a bit different. We can start developing code without the existence of a good base. We call this brute-force-driven development. In this, we produce feature after feature without actually caring about the quality of our code. The result may work in the beginning, but in the long term, it consumes more time and probably money. It's well-known that software is nothing but building blocks placed on top of one another. If the lower layers of our program are poorly designed, then the whole solution will suffer because of this.
Let's think about our project—the social network that we want to build with Node.js. We start with a simple code like this one:
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content...