I’m trying to understand what you mean by “small, focused services” that compose an application. No modern application is monolithic…in any language. All applications comprise modules, typically with well-defined interfaces that help to manage software complexity. JavaScript, at least until very recently, couldn’t even do that in a sensible way (module patterns were hacked together, but the result was usually execrable). But ES6 now has support for modules.

If you’re referring to front-end/back-end, client/server architecture, where Node.js provides services to front-end application components, this can, and often has been, replicated in other languages. The fact that JS is used in both front and back ends is neither here nor there. Ultimately, software can grow to enormous size, either on the front end or the back end, and that’s where concepts of software engineering at scale kick in. These concepts are in no way “outmoded.”

My 20k LOC metric is, indeed, arbitrary. I chose a number that I felt was a safe threshold for JavaScript. Some people have said I was too generous. Perhaps I should’ve specified 5k or 10k. The point is, JavaScript is ill-suited for writing large code bases. It will make maintenance much more difficult than it needs to be. This applies especially to Node.js, because server software tends to be much larger than UI front-ends.

Mr. Smalltalk: https://medium.com/p/domo-arigato-mr-smalltalk-aa84e245beb9