Over the years, I have struggled to describe the frustration of building on top of systems full of technical debt to my non technical friends. I have never cared for drawing comparisons between building, say, a bridge and software. I'll give it a try for once with someone more personal than a bridge: your living room.
No one sets out to build an unusable living room. It just happens. We find ourselves with an inexperienced builder, or a builder who usually builds tree houses, or two builders who disagree with each other and we eventually find ourselves in a living room with problems. The floor looks as though it's designer was attempting to pay homage to Picasso and Pollack at the same time. Rather than floor joists on standard centers covered with OSB, there's a bizarre pattern of joists held up by columns in the basement and some areas are not covered with flooring at all: gaping holes straight to the basement.
Now the painters show up and they complain. They can't put the ladders just anywhere (since there are holes in the floor) but they lay down some boards and they get the living room painted. Next the carpet company shows up. After complaining to the general contractor (who tells them to find a solution, not complain) they grudgingly stretch carpet over the gaps in the flooring.
Here's where the real fun begins. Some children can walk across the floor no problem, but adults sink in and trip.
Occupancy is granted and the owners arrive. They try to place their couch and their nice modern LCD TV stand in the most natural places. Things fall over. The TV gets a crack in it. The builder, having detailed knowledge of how the floor looks underneath, shows them precisely where they can place the couch and the TV stand. Things are stable, as long as the owners stop changing the living room layout. It's really hard to never change the living room, though. When you have some friends over to watch The Sportsball Game, you have to sheepishly inform your guests that depending on where everyone sits and stands, the experience may be less than ideal.
Technical people will understand the frustration of the painters and the carpet layers. You show up hoping to do good work, and you just can not. There's no easy way to re-do the floor while also allowing people to use the living room either. You obviously can't go back in time and make the floor builders plot a new course.
My heart goes out to the poor owners. They had no say in how the floor was built. I suspect and I hope that no one would claim that efforts to fix the floor were inspired by the ego and the laziness of the carpet layer. Sure, the carpet layer does want to do good work, but it's the suckers who have to live in the house who really have it bad.
And yet I can't overstate the frequency with which I encounter this in businesses. The users are suffering. The business has a huge support team. Sometimes the support team has to help fix an obscure issue caused by the latest Windows 10 update, but more often they have to help perform rudimentary tasks for the users because the system just doesn't work. The business has to budget a painful amount of the development team to help support, creating a drag on forward progress. Releases are not predictable because it's really difficult to build on top of the mysterious living room floor. Releases are difficult to test and impossible to roll back. Engineers leave the team for green field projects. They'd like to do their best work and they hope to get in on new construction before someone decides to build the floor out of rope and glue.
With tangible and quantifiable evidence of the cost of difficult to maintain software all around, the business will often tell a developer something along the lines of "I'm not paying to rewrite that piece just so your life can be easier." Well, I'm sorry that's how you see it. My advice is to never re-arrange the living room again, but if you do it's going to cost you.