Hacker News new | ask | show | jobs
by js4ever 1949 days ago
What's wrong with Node.js? It's super mainstream now. We have it in production since years, I see a LOT of companies migrating from everything else to node since years and it's a growing trend from what I see at my level with startups and even enterprises
4 comments

It's generally high maintenance, npm dependencies, deprecations, leftpad, javascript new shiny culture etc

You can make it work with more maintenance, but you did ask the question what's wrong with it!

It's really not high maintenance at all. Leftpad issue was fixed in less than hours the same day it happened and since then the NPM tooling for package management has improved a great deal.

JS shiny new culture doesn't really exist on the back end (and even front end js has calmed down in recent years). Express.js, the go-to framework 7 years ago, is still the go-to framework on Node today.

Node and Mongo are at this point "boring tech". Their limitations and trade-offs are well known, their benefits are also well-established, and their APIs and tooling have matured.

Nothing, just forgot about it.
Recommended "literature":

1. 10 Things I Regret About Node.js - Ryan Dahl - JSConf EU (https://www.youtube.com/watch?v=M3BM9TB-8yA)

2. Brendan Eich: JavaScript, Firefox, Mozilla, and Brave | Lex Fridman Podcast #160 (https://youtu.be/krB0enBeSiE)

Sure but there are all known issues to any Senior Devs. You don’t have to pull shady hairballs from npm for every little feature you can think of. I’ve ran node in production for the last 5 years so at least to me it counts as battle tested and “boring”.
The language for one. There are decent choices of language for backend work. Why anyone would choose JavaScript is beyond me.
The thing is, if you have any sort of front-end that is not entirely server-side rendered, you're going to have to work in JS at least some of the time. If your back-end is also in JS, you now get the benefit of isomorphic code for things that you may want to do on both front-end and back-end.

Then there is also the fact that JS is actually a pretty great language if you know how to avoid the footguns. Granted that's not always easy, but it's a language with lexical closures and easy and familiar syntax, it's also very expressive and has a vast ecosystem supporting it. And you can even add the typescript compiler on top if you want compile-time type-checking.

It's also async out of the box, and while that doesn't solve all problems, it scales surprisingly well with no performance tuning whatsoever, it even has decent asynchronous primitives that make it easier to write correct code.

Yeah; even without frontend code, JS is surprisingly compelling. It's easy to hire for, easy to write reasonably performant IO code in, the footguns are pretty much all well documented and generally understood (rather than requiring knowledge of the deep magic to debug), library support is top notch, and as a language it supports both OO and FP, while being pretty small in scope, terse without encouraging too much code golf.
Oh, but Python is an ideal backend language?

Give me a break.

If you want something mature, with libraries for everything, solid backwards compatibility and basically the best "boring" choice, go with Java. And if your devs want to mess around a bit, mixing some Kotlin in is basically harmless and easy to reverse if needed.
Not ideal but a lot more pleasant to work with than JS