The typical explanation (a la r/programming) seems to be something or other about webdevs being naturally impatient, faddish and incompetent

Okay, let's look at the facts, I'm open to any explanation but this is the most convincing one.

2.5 years for the youngest isn’t that old in the scheme of things

2.5 years is NOTHING. N O T H I N G. C++98 clocks in at 20 years now and it's one of the most stable drivers of software. HTML is 25 years old and basic websites from back in the day still work. You are churning through frameworks an order of magnitude too fast!

2.5 years for the youngest isn’t that old in the scheme of things [...] but it’s still a ways off our caricature.

This sentence alone is a caricature and the fact you cannot see that makes the caricature even worse.

The advantage of this architecture is that you can easily adapt as new practices emerge, which makes sense at a time of rapid innovation (like the past few years). The disadvantage is that it increases your surface area for breaking changes and demands a great deal (often too much) vetting and selection of said microlibs.

Completely true. Library choice is hard. That's why you make extra sure you avoid as many dependencies as possible and pick reliable and industry-proven libraries with the largest possible projected lifetime. In particular, you go look if there is still active maintenance and development.

And this is the thrust of my argument: what’s wrong with JavaScript isn’t the language [1], the web, or any technology in particular, but a poor ‘choice architecture’ that makes developers slaves to fads and trends.

Again, I agree here.

Modern JavaScript’s greatest asset - and liability - is NPM. It provides an enormous wealth of modules, catering to just about any specific purpose one can conceive, but very difficult to filter and curate. Which ones are really being supported? Which ones are actually functionally correct? Which ones aren’t really just vectors for evil malware? The only heuristic a JavaScript developer can really use is popularity - number of downloads and Github stars - which exacerbates faddishness.

Are you serious??! "The only heuristic a JavaScript developer can really use is popularity?" What happened to library evaluation? What happened to, you know, actually reading and reviewing the code you pull into your project? What happened to the actual craft of programming? What are programmers, dumb plumbers who put together a Frankenstein monster of microlibs, or innovative craftsmen who construct reliable, fast and elegant solutions with as few moving parts as possible? Is this the quality of work you are content with? Have you no pride?

There are other ways to validate a library, of course: you can read through Github issues and search for StackOverflow questions. You can do some testing or even examine the sourcecode for yourself (in most cases). But this takes time, which isn’t really warranted when choosing e.g. a date parsing doodad.

Oh yeah, those other ways to evaluate a library, what a waste of time. Don't bother about actually looking into it, just look how many "likes" it has. This is what's wrong with front end devs, they want to move too fast while lacking absolutely fundamental programming knowledge.

I will concede that this is something of a cultural weakness of JavaScript developers. As an interviewer I often like to ask candidates how they choose technologies, and it depresses me somewhat that popularity is the almost always the only marker they know.

That is sad. These people are not fit for a software development role and should not be hired.

Software engineering is at least partly a research job and we need to train junior programmers research skills. But even if we did, the odds would still be stacked against them.

The odds are stacked against ignorant people who don't want to put in the hours that are actually necessary to (learn to) vet libraries. Just let your senior devs choose libraries then, or at least review dependencies the juniors pull in?

So you do a Google search, which reveals a Medium post that heartily recommends X.js. It later transpires the post was written by X’s author, though she never announces that particular conflict of interest (she does, however, provide a GitTip jar). Not that you could tell - all Medium articles look the same, so you can never rely on a ‘brand’ to identify reputable material.

Back in the day, people used to understand what they do. Now they just google and copy-paste something. If you look at one medium article and decide to add a dependency, you cannot be helped anymore.

This time you find a link on Twitter - with over a hundred hearts!

I wanna puke.

You see, Y.js was “object oriented”. You thought this was a good thing, vaguely recalling something from first year ComSci about Smalltalk and message passing. But apparently it is Very Bad.

A programmer who does not know what object oriented means, and programs JavaScript, a language where you handle objects day in day out, should be fired.

It gets worse. The post claims that even mentioning OOP in a JavaScript interview will render you utterly unemployable! You are seriously disoriented now. Thankfully help is at hand - in the form of his $50 dollar JavaScript webdev course. You take a note of the link, thinking how lucky you are to have found it, and give another clap in gratitude. (Nineteen thousand and one).

Nineteen thousand and one ignorant morons who should not be professional programmers.

But how could you do better, Junior Developer? Who was there to guide you? The Senior Developers, too, are learning as they go.

Ok you have a problem there if you don't have senior developers who can provide guidance. That's the whole reason you have mentors. There's no point in paying more for a senior dev if they lack the knowledge and leadership skills. That's the whole reason why they cost more!

So. You take the path of least resistance: you choose the Github project with the most votes, the most stars. And that is why JavaScript dev is driven by fads and hype.

No, to conclude, people who are gullible, incompetent, ignorant and frankly, stupid are what's wrong with JavaScript dev. If you want to see hardcore devs who actually have skills, go look at operating systems programmers. All the problems you named literally just don't exist there. Front-end attracts untalented and inexperienced programmers because you immediately see colourful pictures when you preview a couple of lines of front-end code.