Node.js is the new exchange student that everybody wants to date! It’s amazing how many of our clients starting the development are going with Node (here is when and why we choose node). BTW, whatever happened to Rails? It seems to have fallen off a cliff, but I digress.
There was a time when I chose Technology purely on ‘fit to purpose’. But as I put more mileage as a CTO Consultant, the more I pay attention to non-tech factors. Hiring is a major one.
The fact that Node.js is the new shiny toy has implications both good and bad on hiring. On one hand, good readymade Node.js developers are to get and expensive. On the other hand, it is easy to attract Ninja coders who can come up to speed on Node.js. Try attracting a good coder to work on a PHP or Java project. You will see what I am talking about!
A couple of notes from my experience building Node.js teams.
- Beware of the horde of mediocre developers who will claim to have some experience in Node, but just don’t get the essence of it. Most of the devs, I interview don’t understand basic things like the difference in request handling between a J2EE server and Node or Closures and Promises. These guys will continue to do Java programming (fill in your language of choice) in Node.
- One way of building out teams in emerging technologies is to get good coders and teach them. Compared to retraining developers in something like Rails, I find it relatively hard to train them in Node. Somehow Java developer got the dynamic goodness of Ruby easily compared to the asynchronous idiom of Node.js.
- We underestimated the effort it will take to train our dev/QA team to write automated tests for the asynchronous code. Frameworks like Jasmine helped, but something about multi-layered asynchronous code throws off QA.
- The oft-quoted Node.js benefit of the same language in all layers of your app is a bit overblown in my experience. The depth of JS understanding needed to do hardcore server side JS is so different from front end JS that it might as well be two different languages as far as team building goes. Even on our Node.js teams, we end up having specialists who are front end JS guys and backend JS guys.