i'll admit it. i'm actually rather impressed by the work going into node.js. There are new libraries and methodologies rolling out every week or so that address some basic shortcoming in a clever and interesting way.
Granted, there's no way in hell that i'd use only it to build a large scale, maintainable system, but i'm still impressed.
Now, before you angrily click on the comment link to write your screed about how i could be so blindingly ignorant, let me just say the following: "If you only use Javascript and Node.js to build a large scale system, you suck as an engineer."
There, that should help, shouldn't it?
Allow me to explain using something that's imposing itself on me. Recently, my wife (and to a slightly lesser extent, i) decided to have our bathrooms redone. i live in a 50+ year old ranch that was originally meant to be a "starter" home. That means it was built reasonably quicky and cheaply following one of four floorplans that probably took some architectural student a weekend to craft. There are some shortcomings that we've been addressing, but by and large, we're still very happy with the house.
It also means that we've hired construction folks to come in and work their various crafts in order to make an attractive, usable set of features that will last at least another 50 years without the same incidents i've already repaired.
In order to perform those destruction/construction tasks, they've brought in a number of tools. Some tools have served multiple purposes (like the impact drill doubles as a screwdriver and socket driver), others are fairly tightly constrained (like the tile cutter which only wet cuts tile). There has been some duplication of tools (hand saws vs. sawsall), and some tools were used in a somewhat disposable way. The project could have used just one set of tools and it might have worked, but somehow i don't believe it would have been terribly efficient to use a Dremel for everything.
That's kind of how i view programming. Each system has it's benefits and issues. Javascript is great because it is reasonably light weight and forces you to think in terms of small, cascading tasks. Python offers a fantastic glue for various libraries while also providing reasonably performant dynamic scripting. Java is godawful fast for threaded handling of IO. Perl is fabulous for handling text content and PHP is nifty as a simple view template language.
All of these tools can do more than that. Some folks have built incredibly complex solutions based off of using just one of these tools and other folks hate them for it. In practice.
Recently, i built a weekend goofball project that uses PHP as an API and View, Javascript as a client language and Sqlite as the data store. i'd have preferred using Python as the API, but my hosting provider makes that a pain in the butt, so i went the easier route for now. Eventually, i'll probably swap the API out for a python lib because that itch will be too big to scratch. If this project were to suddenly grow huge with tremendous demand, i can profile the slow bits and rework things without having to rewrite all of it.
i could have written it all in Javascript using Node.js on the backend and DHTML on the client, but… why? In order to do that, i'd have to set up a lot of extra things i don't need, fight a lot of issues i didn't have, and work on a lot of things that are not "build the goofball project".
i write code to solve problems. There are some that write code to answer challenges, and good for them. i try to keep up with the challenge folks because they may discover a new approach that works better than what i may know of, but generally, they don't. i'd like to think that occasionally the challenge folks might be interested in the "problem" side, but i know better than to demand that.
A good engineer knows what to do to keep an engine running. A good designer knows how to make something new. Both have their places, but know which place you feel most compelled by, and which one will get you paid.

