I remember reading about The Change Function, which was a term I first read in the book with that as the title by Pip Coburn.

I was recently reminded about this as there was a discussion at work about how NodeJS was slipping in unnoticed, while things such as Grails or Scala was having a more difficult time. I think that NodeJS is making headway in rapid fashion because it has both the parameters needed for the change function:

 f( User_crisis, Perceived_pain_of_adaption ) 

There is a very real user crisis when it comes to making web applications in the traditional enterprise technology stacks, such as Java and .Net. NodeJS helps ease this pain and Grails also promises to do so. Perceived pain of adoption is how difficult users think a technology is to adopt. This is not something objective, but the feeling users have. On this parameter, Grails fails as it is sometimes perceived as a bit more difficult. You have to learn Groovy with it’s new syntax, tools and frameworks. While NodeJS is just JavaScript which everyone think they master, even though this might not be true.

Scala, in my opinion (and if you disregard that Oracle is the evilest of empires), does not solve an obvious user crisis we are having right now (this is were the Scala people can fire up their flame engines). Sure, there tons of developers frustrated by Java. Scala is probably a much better fit for many of the things programmed in Java today and it probably is a better way to program robust systems with it’s functional style etc. I am not saying this is an objective truth, it is just my impression that the crisis isn’t here yet for Scala. You have stuff like Akka, but few companies actually have a need to that stuff as of right now (at least in Norway). Scala also falls short when it comes to the perceived pain of adoption, event though it runs on the JVM. The syntax, tools and frameworks seem unfamiliar. Developers doesn’t really like change (even though we try to convince ourselves we do) and a change to Scala from Java seems like a big deal.

I think the answer to why NodeJS is getting an easy way into many companies is that NodeJS solves a user crisis and it is perceived as easy to adopt_. This is not due to rational or objective thinking, it’s just how humans work. I think anyway, you may disagree.