6 Reason Why Node.js is Freaking Awesome.
Most of what I to do these is in Node and I think its a pretty good choice in so many cases for server-side development. Here's why:
One. Its JavaScript which is a rocking little language. It has dynamic typing, first class functions, scheme-like closures, a funky prototypal inheritance model and an eval() function - which all together make it an exciting, powerful, and productive language to work in on a daily basis.
Two. Its an enabler. There are many web developers from the front-end world who are amazing at CSS and HTML and can get by with enough JavaScript to make their UIs interactive - however they lack experience in the mainstream server-side technologies such as Ruby, Python, .Net, PHP etc., to build back-end support. This puts them at the mercy of other developers in their organisations to get any end-to-end interactions pumping along. Node gives them the power to now build the back-end of their front end experiences themselves.
Three. Its productive to develop in. Being an interpreted & dynamic language with an amazingly fast start up time, coupled with the richness of the evolving packaged libraries the test-edit-deploy cycle is like no other. I like nothing more than to hit save in my editor, see my terminal window jiggle as the node server picks up the changes and restarts, and my new functionality is ready to go before you can say ALT-TAB.
Four. Its fast. Due to it's single threaded async non-blocking cpu-bound nature it is very highly performant for tasks that fit into that category. Many aspects of a developers everyday fall into that category (granted, not all) and especially when you are working under a microservices architecture. Either way its a good place to start for a spike or prototype.
Five. Its single threaded. The positive effect this has on reducing both code complexity and race conditions is strangely reminiscent to me of the change Java brought to C++ in the 90s for me. The watercooler statement at the time was basically "Java, its like C++ just with only single inheritance and no memory allocation". So you can be more productive at the cost of expressivity & performance - which you don't need for many cases - or for prototyping.
I think the watercoolerism for Node is "Node, its easier than Ruby, .Net or PHP because it has a single-threaded back-end with very good performance but at the cost of cpu intensive loads, strong typing, and callback complexity".
Six. Strong community. Every web developer knows JavaScript because its basically the only language you can program a browser in. Which means it probably has largest user base of any language and hence lots of support, great libraries, and continually evolving tutorials.
So much to love. So little time.










