First and foremost, a big hat-tip to T.J. for announcing his ground-breaking news and farewell to Node.js in favor of using Go. When someone fights with something long enough, they will move on, and in his situation, use the “right tool for the job”
That’s cool. And you can’t not respect that. Duder is awesome and smart.
The problems that T.J. points out with Node.js are very similar to the problems we have in English, metaphorically speaking of course. Error handling is natively error prone, callbacks are harder than regular synchronous transactions, errors, errors, errors. We make grammar mistakes all the time in English, but for the most part, we all understand each other, and have known solutions to fix those mistakes.
Anyway, metaphors aside, and rather than tit for tat comparing the nooks and crannies of Go vs. Node — there are several other good reasons to continue using Node.js
With Node you can literally share your code between the front and back of a system. Website’s I’ve worked on such as Change.org, OpenLikes, even the one you’re reading this article on share utilities, models, views, testing libraries, even routing logic because of Node. This of course leads to more DRY applications, a principle of programming that is highly desired for maintainable applications.
Right tool for the job
Like all things, it depends. If it’s a complex intelligence algorithm that requires high concurrency — sure, something besides Node can be fine… as a service… that I can call from Node. As far as measuring concurrency and speed between Go and Node, it would the equivalent of comparing whether a for loop performs better going backwards or forward. These kind of microbenchmarks don’t appeal to me. When choosing a programming language or framework or library, always consider the ROI for your product and how effective you’ll be between your users, your team, and yourself.
I don’t want this to be a very long retrospective — So, similar to TJ’s advice — there are lots of awesome solutions out there; pick one you will do well in and will ultimately make your users, company, and yourself happy.