a travel to node.js: why?

André da Silva Carrilho
TAGGED IN js, node, ruby, rubyonrails

I am using C# since I got out of the university, ie, for about 8+ years. The language is great and Microsoft ecosystem for developing and deploying web applications is extremely powerful and versatile. I have deployed web apps built solely on top of Microsoft technologies ranging from web apps based on Web Forms and MVC, RESTful services based on WCF and, most recently, WebApi. Data access layer is simply done using Entity Framework for both SQL Server and Oracle databases. All these work extremely well and are reliable.

So, despite all this good stuff why embarking on a new challenge and trying to embrace a new programming language? For three reasons:

  1. Microsoft licensing and support problems. We had problems with some of the technologies we were using and MS did not give appropriate support in order to be resolved in due time. Although we were able to find workarounds the clients were pissed off
  2. Many of the services that used to be available on self-deployed ecosystems were being deprecated because MS was/is betting big on Azure. But for our clients that was an issue because they wanted the solution to be deployed in-house and not on Azure but MS did not help with that. Again, that pissed some of the clients
  3. Some of these client’s suppliers used technologies on top of linux. That meant a considerable fewer licensing problems and costs since most of these technologies were free and the end result was almost the same. So there was pressure for us to reduce costs and be competitive or be replaced.

Because of that we had to change the strategy and move to another programming language. We were already using Objective-C and Java (Android) for developing mobile apps (smartphones and tablets). Because Objective-C is only used for developing apps for Apple ecosystem and is not geared for web development we excluded that. Java seemed the best option since we already had knowledge but I thought Java was geared to old systems, ie, it did not fit modern requirements. And, in my personal opinion, it’s not an elegant solution compared to other modern languages.

I researched further and the best bets were RubyOnRails and node.js. Ruby is an elegant language but differs quite a bit from C# which is what I’m used to. Plus the deployment process was not fully clear to me. There is passenger but, based on my readings, the free version is not targeted for large platforms. On the other hand, node.js was based on javascript which I already knew from developing web apps and the framework (based on expresss) seemed pretty elegant.

Although support and resources are widely available for both I opted for node.js because it had a lower learning curve and I think Javascript is the language of the future because it’s everywhere and many large companies are building on top of it and supporting it (Facebook, Google, Yahoo, Twitter and the list goes on and on).

I’ll be learning the in’s and out’s of node.js to assess if it fits the different scenarios we have. I’ll be sharing some of my experiences to try to help others.