Still, when something succeeds beyond my expectations, I encourage myself to ask myself why that has has happened.

On the one hand, I strongly agree with the sarcasm of this: "Because...you know...SOA and N-tier systems didn't exist before Node. "

That is well said.

On the other hand, something must explain the continued rise of Node and Javascript.

Since 2010 I've been a huge fan and promoter of Clojure. I keep thinking it is going to sweep the startup world. And that keeps failing to happen. And I keep wondering why.

Last year I worked at a startup that was in the startup incubator run by NYU in New York. The incubator is an office at 137 Varick street, and there are something like 20 to 30 startups up in there (the number varies a lot as students of NYU are allowed to use the space for short periods).

One thing that surprised me was how completely Node had gained the support of the newer startups. It was definitely the hot new thing. Some of the older startups were using Rails, the rest were using Node. And Node very much has the fire that Rails had 10 years ago.

My startup used a mix of Clojure and Java but we were a rare thing (I wrote about this elsewhere). None of the startups were using Groovy or Java or Scala or Clojure -- the vast resources of the JVM were largely ignored. Nor do I recall any of the startups using C#.

Why is that? I am not sure, but I can make a few guesses.

You mention SOA. The culture that grew up around industry standards such as WSDL lead James Lewis and Martin Fowler to complain about “a complexity that is, frankly, breathtaking“:

"Certainly, many of the techniques in use in the microservice community have grown from the experiences of developers integrating services in large organisations. The Tolerant Reader pattern is an example of this. Efforts to use the web have contributed, using simple protocols is another approach derived from these experiences — a reaction away from central standards that have reached a complexity that is, frankly, breathtaking. (Any time you need an ontology to manage your ontologies you know you are in deep trouble.)"

They then linked to this to make their point:

http://wiki.apache.org/ws/WebServiceSpecifications

Arguably, Node offers an easy approach to "SOA lite". Consider how forbidding the previous link is, and then consider how friendly an approach is offered by a company such as LSQ (which started off specializing in Node):

https://www.lsq.io/

Especially since LSQ is about to roll out an automated processes for microservices on a stack to discover one another (which app runs on which port), a relative novice can get much of the benefits of SOA, quick and easy.

Also, of course, Javascript can be used on the frontend and backend, and nowadays there are a lot of programmers who start off as frontenders and then later learn the backend, and want to bring their favorite language with them.

I could counter-argue that Clojure has Clojurescript and Om-Next, both of which are very, very cool, but I must admit that the JVM has no on-ramp as easy as what Node offers (and programmers who use Clojurescript, but not Clojure, have been rare, at least till very recently).

Also, I've wrestled with enough too complex build scripts that I now appreciate how simple "npm install" is.

So maybe some programmers, who are still in the early phases of their career, are over enthusiastic about Node/Javascript. We should all still admit that what Node achieved in terms of ease of use is fairly impressive.