(^12) 97 Things Every Project Manager Should Know
Pay Your Debts
Brian Sletten
Beverly Hills, California, U.S.
DEBT, WhEn WEll MAnAgED, is a useful financial instrument for both ordi-
nary 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 strat-
egy 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,*
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 identify specific hacks† they
would like to unwind, and quantify how much time they think they need to do so.
- Iteration: A short period of time chosen by an agile project team (a week, two weeks, a month,
etc.) during which a key requirement chosen by the customer will be developed, tested, and then
delivered to the customer for approval or comment. The next iteration will then begin to develop
the next most important requirement and/or correct the work done in the preceding iteration.
† Hack: A quick fix or solution to a programming problem that works, but is less than ideal and may
need to be revised when time allows. Fixing the inelegant code may be referred to as “unwinding a
hack.”