The explosion in the tech job market resulted in a more mercenary pool of talent, which meant knowledge transfer from designer to maintainors was less likely. In addition, documenting the design, development and maintenance of a system is far from guaranteed. Of course not. Second, software is organic. Once it's deployed, it has a usable lifespan, and requires care and maintenance, but eventually and inevitably, virtually every system needs to be replaced.
Technology continually moves forward, leaving implemented systems behind.
In the end, it's recognizing that code is fragile and needs both evolution and guardianship that will keep us from the kind of catastrophic failure that has no date attached.