Node.js – The future of web development?

Okay, so the name is terrible, but the excitement around Node is very real and it’s not difficult to unpack why. For one thing, Node apps are written in Javascript and that brings some very real benefits. Not the least of which is the fact that almost all web developers already speak the language. Doesn’t matter if your language of choice is Ruby, PHP, Python, etc… chances are you have at least a modest (and probably an excellent) understanding of Javascript. As a software developer of more than a decade, I can tell you that not having to learn an entirely new syntax and the idiosyncrasies of a new language in order to get started and be productive is extremely appealing. Of course, if this was all Node was offering, that in and of itself would not be reason to consider using Node. Of course, this is not all Node is offering. Node apps by their very nature (being written Javascript) allow developers to write both back-end and front-end code in the same language – something that no other environment can offer. What this will really means is yet to be seen (and depends a lot on what tools will emerge to take advantage of that fact), but it certainly feels powerful.

So developers are excited – now what?

The truth is I don’t really know. So far, a lot of what I have seen in Node falls under the heading of “cute.” “Check out this chat room I wrote with 100 lines of code,” or “Check out this cool thing I did with web sockets.” I’m not picking on Node, so save your hate mail. In fact, I developed a “cute” project in Node myself with web sockets for remote control of Youtube videos (which also had a chat component). I had a lot of fun and the project was done in two days. I felt the power and ease of Node and could see how great it could be, but that is a long way from the types of complex applications I have written in PHP or Ruby. This makes me wonder what it would be like to build something like an enterprise caliber CMS using Node. Could I do it? Sure! Would I want to? No way! At least not now – and the answer has less to do with Node and more to do with tools/frameworks. Let’s face it, as modern developers we rely a lot on tools and the useful abstractions offered by our frameworks of choice. While Node does have a few promising MVC frameworks like Express and Grasshopper, they are still pretty green and can’t yet provide developers with same kind of productivity increases that other modern frameworks like Rails or Yii (my PHP framework of choice) offer. As long as this remains the case, it seems likely that Node will remain in the “cute” zone. Sure, a lot of cool projects will be done in Node, but it won’t be making the kind of huge unifying impact it seems capable of.

In a lot of ways, Node has already done the hard part. It’s easy to use and understand, it’s execution time is fast, and perhaps most amazingly, both PHP and Ruby developers agree that Node is a really cool idea. The challenge for Node is to take advantage of the excitement in the developer community, and bring them out of the diaspora to a centralized community website that doesn’t suck. Then use that community to get behind a MVC framework, with the goal of providing the kinds of tools PHP and Ruby developers need to be productive. Do this without just copying functionality and take advantage of Javascript as both a frontend and backend language, thus creating something that only Node can provide. When that happens few will doubt that Node is the future!