Chapter 6. Pay Your Debts

DEBT, WHEN WELL MANAGED, is a useful financial instrument for both ordinary citizens and successful organizations. It balances present insufficiencies by borrowing against future surpluses. Used judiciously, short-term debt is an effective tool for smoothing out the rough edges of cash ebbs and flows. When abused, it becomes a burdensome yoke that makes it increasingly stressful to move along.
In the world of software development, borrowing time can be a useful strategy for meeting "at risk" milestones, while completing most of what needs to be done. Ward Cunningham introduced the notion of "technical debt" as something developers can incur as they head toward the end of an iteration,[2] or a deadline, if time gets short. At that point, they may not be able to do code right, but by taking some shortcuts they may be able to program code "right enough" to still cross the finish line.
Even though the software is in a temporary, imperfect state, this is a perfectly reasonable thing to do if the technical debt incurred is managed responsibly. If it is not paid off, however, it will start to become more painful to do over time. Continued borrowing against the future without repayment will put the project further at risk.
The best way to pay off your technical debt is to assess what "loans" were taken at the end of each iteration. Ask your developers to ...