1. Knows the wider requirements but isn't involved in the implementation. They can't fully specify what's needed without doing the actual implementation; the map is not the territory.
2. Is told the broad requirements but probably can't grasp the things they aren't told in the imperfect spec. So under time pressure, in good faith, they do the simplest workaround possible.
3. Is given the next set of requirements. Instead of re-engineering the original design, under time pressure and in good faith, they add a workaround for the workaround.
Each new workaround is "tech debt".
When you add the next feature you now have to deal with multiple levels of complexity not in the original spec.
Understanding the actual implementation now takes more time than expected. The chances are that no one fully does, which leads to further mistakes and workarounds. So more tech debt.
Either you pay the debt down and re-engineer or you pay the compounding interest forever.
...and so on. Each new level of complexity gets harder and harder to understand and debug because no one really knows how the real design, held in the actual works.
1. Knows the wider requirements but isn't involved in the implementation. They can't fully specify what's needed without doing the actual implementation; the map is not the territory.
2. Is told the broad requirements but probably can't grasp the things they aren't told in the imperfect spec. So under time pressure, in good faith, they do the simplest workaround possible.
3. Is given the next set of requirements. Instead of re-engineering the original design, under time pressure and in good faith, they add a workaround for the workaround.
Each new workaround is "tech debt".
When you add the next feature you now have to deal with multiple levels of complexity not in the original spec.
Understanding the actual implementation now takes more time than expected. The chances are that no one fully does, which leads to further mistakes and workarounds. So more tech debt.
Either you pay the debt down and re-engineer or you pay the compounding interest forever.
...and so on. Each new level of complexity gets harder and harder to understand and debug because no one really knows how the real design, held in the actual works.