
There was a brilliant comment on The Reg a while back...
There was a brilliant comment on a Reg forum a while back - alas not made by me - that software was essentially finished some years back: we'd got all the functionality we really needed, we'd got the speed, we'd got the reliability. So everything added now has been simply gilding the lily, and software is generally getting worse as a result. I'm definitely seeing this in the Apple ecosystem. The same is happening with Windows, except the peak was never that high.
Added to this: a generation of very experienced developers who started at the beginning of the PC revolution - so they know the history, they know the pitfalls, they remember what it was like to code when efficiency, correctness and cleanliness really mattered - are now retiring, or being forcibly retired to be replaced by cheap off-shore code monkeys. And the code they produce is horrible. Agile methodologies just encourage this approach, penalising time spent on careful thinking, and rewarding the fast developers - who are often fast because they eschew error handing, or good design - by letting them win the delivery race.
Quality is a now thing of the past. Understanding the basics of building a reliable system is seen as pointless knowledge - just download more Javascript libraries, just grab something open source. That'll do.