Lately my biggest problem with technical debt as been that it accrues even if you do nothing to invite it. Maybe a better term than "technical debt" in this case is "deferred maintenance". It's slightly different, in that it doesn't happen as a result of decisions and compromises during the development phase, but the similarity is that it grows more costly over time.
Right now I have running on servers that I manage several old websites. One is a static site but it has content that has become broken over time. Flash animations and videos being the primary culprit. Another is a Drupal site running on an unsupported Linux release. These were developed many years ago, and met all their goals at the time. The people who developed them moved on. There were no requirements changes, no functionality that needed to be added or refined, the sites just simply needed to run as-is. But they were built on shifting sands. Operating systems are patched and updated and eventually EOLed. Frameworks like Drupal get patched and updated, and later versions are not backwards compatible but the prior versions are eventually not maintained, so there is significant work imposed upon site owners just to keep them running and safe. The same is true of any application framework/stack. Nobody wants to do the work to keep these sites updated, there is always a higher priority, but nobody wants them shut down either. So they stagnate, accumulating problem after problem just by existing, until they eventually collapse due to a critical failure that can no longer be repaired. Just like the house that eventually collapses due to deferred maintenance, the only solution at that point is an expensive rebuild.
Ironically the only computing environment I can think of that has largely sidestepped this is the mainframe. Yes the stodgy old corporate tech from the 70s that no self-respecting modern tech worker wants to touch is probably the only place you will find code written by your grandfather still running unchanged in production.
Right now I have running on servers that I manage several old websites. One is a static site but it has content that has become broken over time. Flash animations and videos being the primary culprit. Another is a Drupal site running on an unsupported Linux release. These were developed many years ago, and met all their goals at the time. The people who developed them moved on. There were no requirements changes, no functionality that needed to be added or refined, the sites just simply needed to run as-is. But they were built on shifting sands. Operating systems are patched and updated and eventually EOLed. Frameworks like Drupal get patched and updated, and later versions are not backwards compatible but the prior versions are eventually not maintained, so there is significant work imposed upon site owners just to keep them running and safe. The same is true of any application framework/stack. Nobody wants to do the work to keep these sites updated, there is always a higher priority, but nobody wants them shut down either. So they stagnate, accumulating problem after problem just by existing, until they eventually collapse due to a critical failure that can no longer be repaired. Just like the house that eventually collapses due to deferred maintenance, the only solution at that point is an expensive rebuild.
Ironically the only computing environment I can think of that has largely sidestepped this is the mainframe. Yes the stodgy old corporate tech from the 70s that no self-respecting modern tech worker wants to touch is probably the only place you will find code written by your grandfather still running unchanged in production.