Then, when I try to figure out how, there it comes: "npm blah blah blah", and my heart just sinks. And I regret not being more vocal about how stupid this whole node thing was when it startet. And I wonder how many years we are going to have to deal with this stuff.
My question is this: Is it just me? Am I just being an old fart? Or do the HN community feel the same way?
My suggestion is to just build what you want to build. If the thing you build is slow refactor it to be faster. If that thing misses some new cool kid feature then write the new feature. Never does tool fashion come up.
A lot of what gets announced and contributes to the illusion of constant change and "so much happening these days" amounts to fad and fashion, mostly short-lived and niche. You don't have to jump on every new shiny thing. Ask yourself, would you want to work for a company or client who constantly chased fads?
If some new thing gets traction, last for a few years, grows a developer base, and has successful products that use it, take a look and see if it fits your work. If it just "sounds real neat" maybe play with it but don't change course or waste a lot of time -- wait to see if it goes anywhere.
No one can learn all of the actually useful tools, languages, frameworks, much less the niche and ephemeral, so don't stress over it. Truly useful and innovative things prove themselves over time.
I focus my time and attention on tools that seem to have staying power, make me more effective delivering value, and that I can get paid for.
These days I find it very easy to recommend Astro for instance. It is batteries included enough you really don't need anything else.
Bun, deno and Hono are other projects that simplify a lot of the tooling by including most of what you need out of the box.
I'd argue that if you choose any of the options above web dev is easier than ever.
We now live in a world where complex sociological patterns dictate which tools get the most traction. It is easier for a tool to gain more popularity if it has company backing, if you are good at presenting, or if you make only small incremental changes. Technical merit is often less relevant. There is also "first-mover advantage" and countless other processes at play.
All this to say that, indeed, from a technological perspective, the world is totally crazy. But from a sociological perspective it is fascinating, and it is a great time to be alive.
If you don't like the Node ecosystem, then perhaps you may consider doing Java back-end development, as many people in that space adhere to the Lindy effect [1].
I was contributing to node.js and v8's JIT back in 2010-2012 and I loved the NPM ecosystem at that time. To me, node.js was at its peak when express.js and koa.js were the fast way to write a backend. It took minutes to do the things that took hours or days in other programming languages.
But eversince the babel transpilation epidemic infected pretty much every package and bundler that doesn't want to deprecate legacy node.js versions, I kind of switched ecosystems.
I still think that typescript was a mistake, as it embraces language paradigms that come from C# and aren't fitting the ES language as well as e.g. the AS3/AS4 approaches back then. From a compiler perspective, it doesn't generate code that validates types, so it's useless for providing a typesafe API/SDK to third parties without the type definitions (in typescript).
I then kinda switched to Rust, as I liked the neon-bindings a lot for building better integrations with node.js at the time. But during the last years I feel that Rust gradually falls for the same feature fatigue, and I think that the upstream language maintainers should be more stubborn and take more time to think more thoroughly about feature/syntax implementations. A huge part of the Rust community is just for the sake of hype, though - and a lot of packages and bindings are just incomplete weekend-hacks.
Then there is Go + SQLite + HTMX + AlpineJS +
When the opportunity arises to sway your team towards new tooling, demo your choices.
There are new tools all the time, and it's worth it to not get too attached to any one stack. Letting yourself get too attached to one tool is a surefire way to box yourself in. Most of them do similar things, but in different ways. My thoughts on this are that the code is what matters, not the tooling.
During my first internship, we never changed the stack. When I ran in a problem, it was because either - we needed to bump major vers - it's too new of a feature and the library isn't actively maintained
In my current job, worst case it's just not a stable feature yet and we need to wait. Both situations need a workaround, but I get a lot more motivated if I get the feeling we're "on-edge" of a tool.