Including all of the above.
https://www.joelonsoftware.com/2000/04/06/things-you-should-...
A decade ago, I was sitting in on a meeting about a rewrite and, before I could say anything, someone in the first year of her career asked why anyone thought a rewrite would be any cleaner once all the edge cases were handled. Afterwards, I asked her where she learned this. She said "I don't know, it just seems kind of obvious." She went on to be a great engineer and is now a great manager.
Greenfield guy comes in, promises the world, and starts from some first principles white papered architecture. It's really lovely until they onboard the first user. Then they slowly commit all the "sins" (features that drive revenue) of the first system.
The firm is stuck supporting N systems indefinitely because the perfect new system takes so long to cover even 30% of the original system use cases, that management takes a flier on.. bear with me.. a second rewrite. Now they have 3 systems.
I've seen more 3rd systems than I've seen actual decommissioning of original systems into a single clean new system.
The answer is chipping away, modularizing, and replacing piecemeal Ship of Theseus style. But that does not drive big hires and big promotions.
Do they??
My team lead has worked on the same software for 30 years. He has the ability to hear me discuss a bug I noticed, and then pinpoint not only the likely culprit, but the exact function that's causing it.
And with one you need to train a guy for 25 years and with the other you need plan mode for a few minutes and then it runs 24/7.
Then the only "experts" (not even close, just a guy with a form and some technical training) are the building inspectors who come at the end to verify if some stuff is done up to code.
Other than the original architect who draw the plans that got used for many buildings and the electrical engineer that cleared the electrical, no experts were involved. This is basically how the whole city and most of the country was built.
There's no expert mason or painter or whatever involved. Just a dude that can hold a paint roller. That's the same as going from a craftsman programmer to some dude with claude. Individual quality goes down, but more importantly price goes down way more and so many more people get access to much better quality than having nothing.
And the equivalent for software. It’s usable, intuitive, responsive, stats up and running, and doesn’t leak my private data.
There is a lot of absurdly complex software that runs with high reliability. We hear a lot about the ones that don’t.
I have really tried as an "old" person in the field to try and pass on the stuff I've learned, but "craft" and such really has absolutely no home in modern dev culture. The people who care about history, the craft, etc. are increasingly rare.
Younger implies cheaper.