I think there are several great reasons to use Node.js.<p>First, JavaScript is a darned good language. It has some quirks, and some down right awful parts. But they are easily avoided, and often can be automatically detected by static analysis tools like JSLint, JSHint, etc.<p>Lexically scoped anonymous functions, closures, first-class functions, immediately invoked function expressions, object literals, dynamic objects, are all magical once you twist your brain into really understand how to program in that paradigm.<p>And yes, other programming languages have combinations of these features and maybe implement them better. But if you look at the other most popular programming languages (<a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" rel="nofollow">http://www.tiobe.com/index.php/content/paperinfo/tpci/index....</a>) JavaScript is really it for this sort of dynamic, functional-esque style programming.<p>And popularity matters when you are looking for support, documentation, or libraries to interact with other systems.<p>Secondly, asynchronous event driven programming is a truly powerful model. And while you can do event driven programming in any language. Node.js treats it as a first class citizen, with it's standard lib implemented as non-blocking with callbacks.<p>But what really makes Node.js so awesome is the marriage of it's dynamic nature with the event driven model. They just work so well together. Passing functions as callbacks for events just works so elegantly compared to how'd you have to do that in other languages. Building out constructs like promises or event emitters is trivial because JavaScript is so flexible.<p>I think Node.js gets shoehorned into doing a lot of work where maybe it doesn't make sense. I still use Perl/Python for CLI scripts. But for distributed network applications, Node.js makes solving a lot of problems way easier.