Major bugs and workarounds
Imagine you have been given the job of installing AC vent ducts in a house.
Great. So you begin your work, starting from the basement for some reason. And there in the basement, you find a major fire outbreak.
Oh great. So you call your supervisor and tell him about the fire. He goes back and talks to other supervisors and comes back with the suggestion of what to do next: just do your job and get out of there as fast as possible. Hey, you are expected to finish the job by end of the day… and you gotta meet the deadline! The logic is: since your client has not complained about the fire, there is no reason to call the fire-brigade, do root cause analysis, or fix this particular fundamental problem of the house. Did I tell you that I, the vent duct guy, works for the same company that built this house a long time ago? That is immaterial.
So you go ahead and start installing the ducts and the ACs, and when you are finished fixing it in every room, you call the inspection guy.
Now, he doesn’t know about the fire nor he cares about what you did and the why and the how. He carries a thermometer and all he does is set the regulator, and then measure if AC can maintain that temperature. And he is finding all kinds of problems in every nook and corner. And you are busy fixing it. Then when you say you are done, he goes and finds a problem somewhere else. Little does he know that there is a fire outbreak and AC is trying to cover the heat. He can’t even understand it as all his job entails is a table of checkboxes and a red pen.
The time is ticking. You were supposed to finish by the end of the day, and it is later afternoon and he is still finding one issue or the other.
Now replace that house with software and that fire with a major bug and your job of installing vent ducts with your job of introducing a feature that is now exposing that bug in one use case after another.