"Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something."
It's completely correct to say that modern software development has evolved into clown cars and that big infrastructure projects are run to far higher standards.
Also, why can't I downvote your comment?
The issue isn't how correct you are or aren't. The issue is comment quality. Your comment was low-quality regardless of how correct you are, or feel.
You can't downvote a reply to your own comment.
Perhaps a better question would be - for public or enterprise facing projects of similar budget, why is the perceived $X/$Y/$Z so much lower? That is a discussion worth having, and can help unpack your bias and assumptions into a worthwhile conversation.
In short, the expansion of the web economy has allowed for incredibly lazy programming, being done by minimally qualified people, mostly motivated by short term gains, who consistently forget the expensive lessons of previous generations. The original web technologies were fairly good- HTTP and HTML both addressed a need, and I think they were sound (never liked html's derivation from sgml, though, and I don't agree with HTTP's decision to be stateless) but so much of what's sprung up since has evolved with no real natural selection.
I see this every day in the difference between SaaS and on-prem Enterprise software. If you have a bug in on-prem, Enterprise every customer needs to deploy the patch. You need to update all affected, supported versions, etc. In SaaS, you just deploy and more often than not that's it. This changes the way you do everything and it comes with a high cost. JWST is the most extreme example on this spectrum.
I was hired because during failovers, the engineers were often getting unhandled runtime exceptions in the failover python code. (much of it was untested except when running failover) Often, the engineers would break one thing while cleaning up another thing. All of this was OK, because the system failed infrequently enough and was eventually replaced with spanner.
Nobody needs space-mission-ready CRUD that takes $10 billion and 15 years of development.
If a pure software project would get that kind of money people probably would feature bloat to infinity. The JWST during its design phase were under very strict limiting factors. Volume limit, mass limit, power limit, etc. Compared that with any software project where obviously there are limits but they are much more malleable. You can argue that we need to provision 20% more servers to achieve our goal, but you cannot argue that we need to stretch the Ariane 5 by 20%. (Well you can argue, but the rocket is not going to get stretched.)
So all in all, it seems I'm agreeing with you. But I don't think it's about the quality or grownupness of the participants, but more about the shape of the problem.
I think the modern computing world instead is not grownup, but rather CADT (cascade attention deficit teenagers). A constant developing of new solutions that copy previous ones, but are typically worse, or have the same problems as the previous ones. This seems endemic in the industry, albiet with exceptions.
Anybody who wants to learn more should read the RISKS mailing list and its archives. It's remarkably hard to produce reliable software but a number of groups around the world can do it.
Examples I can think of: the teams that built the series of ESS for AT&T. The folks who built Erlang (telecom reliability is a common theme here, being one of the other technical areas where software and hardware engineering excellence greatly exceeds that which we see from typical groups today). Even Qt, although the quality of their code and its adherence to the principles that make Qt great is variable, I'd say is a good example of a system built by grown-ups.
BTW, when i say "grown-up", I don't really mean anything directly related to age, although age and experience are the best proxies for grown-up. Grown up is really a way of saying: working with more weight on wisdom as raw intelligence (Ghemawat's law), respecting experience even if it's not obvious why you should, (Chesterton's Fence), using statistical testing techniques effectively for quality control (Shewhart), practicing discipline to ensure long-term compatibility and not burning your dependents (jwz's law of CADT). I don't think there's a general term for acting with these principles, I just mentally associate them with being a grownup who has learned from experience.
Yes, totally second that, that's the best school there is, seeing what goes wrong and what the consequences are. I probably spent weeks just reading and analyzing the various posts there.
As for the part of the industry that isn't grown up: anything that can do OTA or automatic updates is likely to suffer from a rash of bugs and usability issues, which includes everything that's SAAS and almost all application software with the exception of some industrial stuff. There is far more low quality software than there is high quality software.