Today I've read this article http://venturebeat.com/2012/01/07/building-consumer-apps-with-node/ and i find it a little disturbing. Node.js is a totally cool piece of technology and I'm loving it, but in this article node is embraced for the wrong reasons - let me be the advocatus diaboli:<p><i>It’s JavaScript!</i><p>Yes it's JavaScript, and as he said every developer knows a little JavaScript. But JavaScript has some bad parts http://www.youtube.com/watch?v=hQVTIJBZook and as a newbie JavaScript developer you can easily shoot yourself in the foot http://wtfjs.com/<p><i>Code re-use at every level: browser, back end & database</i><p>We at 9elements dream of all tier code re-usages for several years https://github.com/janv/kupo but in the wild I actually don't see it. Also, do you really want your super secret business logic shared with the client? Code re-use ain't easy, but someone has to do it. There are some great concepts like http://nowjs.com/ but I guess the status quo of JavaScript is not there yet. We need ES5+ in the browser to do the really good stuff.<p><i>Strong, responsive and enthusiastic community</i><p>Big part of the community is great! Some really brilliant minds out there!
But there is also a part of not so skilled dudes who hated rails and now just hopping on the
node bandwagon for the wrong reasons (and leaving behind a trail of unmaintained github repos w/o tests).<p><i>Large productivity gains in HTML & CSS using Jade & Stylus</i><p>Well, switching from HTML/CSS to HAML/SASS was a large productivity gain. Switching to Jade and Stylus was just felt "ok". The real performance boost at SASS dev came from Compass, which didn't existed for Stylus for a long time. Now there is Nib http://visionmedia.github.com/nib/ but it's still a pretty young project compared to Compass. Btw: For those who do a lot of Rails + Node.js development check out https://github.com/9elements/haml-coffee it's HAML married with CoffeeScript.<p><i>Performance and scalability</i><p>I buy the performance, kudos to the V8 team and @ryah. But scalability does not come from using a certain tech (unless it embraces scalability per default). Scalability comes from crafting a system that has no single point of failure (http://en.wikipedia.org/wiki/Single_Point_of_Failure). So please don't compare apples to pines.<p><i>Wealth of hosting options: No.de, Joyent’s SmartMachine, Heroku, Nodejitsu</i><p>True, I would just add homebrew hosting and deployment with capistrano and forever: https://github.com/nodejitsu/forever<p><i>Make your developers famous</i><p>Don't be foolish. Doing Open Source (right) is one of the hardest disciplines out there. Just releasing some written code into a new ecosystem does not automatically uplift you to the rockstar developer olymp. You have to maintain your code, deal with issues, deliver support etc... Doing Open Source work is very important. You take - you give - but more important you'll learn. But you don't need node for that there is plenty of room in this Internetz thingy, look at https://github.com/codejoust/session.js<p><i>Developer happiness</i><p>I know the feeling: Staying on the bleeding edge looking into the space where no man has gone
before feels great. But be carefull, if things don't go well they can easily switch to developer
tears. It almost took the node ecosystem a year to mimic typical "getting things done modules" like EveryAuth https://github.com/bnoguchi/everyauth which derives from https://github.com/intridea/omniauth/ in the rails world. OH: If you seeking for something like rails in the node.js world... then just use rails.<p><i>Bottom Line</i><p>When you read this you may get the feeling that I don't like node - I'm loving node http://node.9elements.com/ and it definitely has it's use cases:<p>- if you do something in realtime
- if you are developing an API
- if you need high performance<p>but for other use cases I wouldn't bet my life on it... yet.<p>If you're interested in node, then go for it, play with it, never stop exploring - start
small and grow with the ecosystem. One day it may replaces technology X with framework Y, but
until then I would lower my expectations a little.<p>So... enough ranting, let's engage the discussion - I hope you enjoyed this article:<p>http://twitter.com/sippndipp