Technical Debt Power Tool or Plague? Adapted from a paper by Steve McConnell Chief Software Engineer, Construx Software .construx.com/Page.aspx?cid=2801 gs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx
Dec 18, 2015
Technical DebtPower Tool or Plague?
Adapted from a paper by Steve McConnell
Chief Software Engineer, Construx Software
http://www.construx.com/Page.aspx?cid=2801http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx
Inspired Counsel
Be determined never to incur another debt. Deny yourself a thousand things rather than run in debt. This has been the curse of your life, getting into debt. Avoid it as you would the smallpox.
(Counsels on Stewardship p. 256)
What is Debt?
• Taking advantage of something that isn’t really “yours” (yet) by renting it from someone else.
• Costs include:– Interest – usually money– Requirement that we live by someone
else’s rules until the debt is repaid
What Is Technical Debt?
McConnell:
“’Technical Debt’ refers to delayed technical work that is incurred when technical short cuts are taken, usually in pursuit of calendar-driven software schedules.”
My Definition
• Technical debt occurs when you don’t do it “right” to start– …and have extra work to do coping with that fact– …until you do it “right.”
• This can apply to software, servers, infrastructure, staffing – basically any of the resources we use to do the job
• Interest on technical debt usually takes the form of extra effort required to keep things working– Or lack of synergy in other areas, which incurs the
same sort of cost
How Long?
Short-Term• Tactical• E.g. Get the system up
by a certain date• Resolution is as soon
as we can do it– May be minor, but we
didn’t want to upset the whole thing at a critical time
Long-Term• Strategic• E.g. We don’t need
that soon, so we’ll save it for later
• Resolution is deferred– May not be needed
Examples
Short-Term• Systems on two
separate machines• Copy data across
nightly– Or hourly or whatever…
• Once consolidation is accomplished, no copies needed
Long-Term• Didn’t develop a way
to back off transcripts to save space
• We knew we had years before it might be needed
• Moore’s law to the rescue: never needed
Why Incur Strategic Debt?
• Because the cost of doing it now is more than the cost of doing it later
• Market Opportunity: We’ll lose revenue if we wait
• Preserving Startup Capital: We have only so much money to get it done
• Delaying until not needed: If we can put it off until the system is replaced, it’s “forgiven”
The cynic says: “Strategic” is a term managers use which means “I want to do it this way this time but don’t call it a precedent.”
Types of Debt
Non Debt – Feature backlog, deferred features, cut features, etc. If it doesn’t require interest payments it isn’t debt. Some would treat it like debt because it may represent missed opportunities to make sales or save money or gain competitive advantage.
I. Unintentional Debt – Debt incurred unintentionally due to low quality work
II. Intentional Debt – Debt incurred intentionally
II.A. Short-Term Debt – Short-term debt, usually incurred reactively, for tactical reasons
II.A.1. Focused Short-Term Debt – Individually identifiable shortcuts (like a car loan so we can get a job)
II.A.2. Unfocused Short-Term Debt – Numerous tiny shortcuts (like credit card debt for items purchased “because we deserve it”)
II.B. Long-Term Debt – usually incurred proactively, for strategic reasons (like a home loan which positions one to build equity)
The difference between focused and unfocused is largely awareness (driven
by documentation).
Attitudes About Debt• No debt at all
– Perhaps the business side of our firm won’t understand the debt and be willing to service it
• Useful tool– Power tool to get things done
• Recognize the debt we have– Easier to ignore than financial debt
because it’s harder to quantify
Increasing Transparency
• Problem is Organizational Workaholism• Ongoing cost of technological debt becomes
part of the organizational ecology, meaning somebody’s job or self-concept may depend on it– Common claim of Republicans about our government
ecosystem!
• Debt list in your tracking system– Can you account for the actual cost?
• Scrum product backlog– Part of Agile Development methodology
Those Little Things Add Up
• “If the shortcut you are considering taking is too minor to add to the debt-service defect list / product backlog, then it’s too minor to make a difference; don’t take that shortcut. We only want to take shortcuts that we can track and repair later.”
Your Debt Credit Rating
• The less debt you create through unintentional low-quality work, the more debt you can safely absorb for strategic reasons
• Debt vs. team velocity: If your velocity drops as a result of servicing technical debt, focus on reducing debt until velocity recovers
Retiring Debt
• Can be motivational – celebrate!• If it’s easy to pay back debt later (e.g. a Web
app), then you should be more willing to take on that debt to meet immediate business goals
• If it’s hard to pay back debt later (e.g. incomplete information recorded on ID cards), then you should be less willing to take on that debt to meet immediate business goals
• Strive to make it easier to retro-fit, so you can reduce the “finance” cost of technological debt
Communicating about Technical Debt
• Your maintenance budget gives a hint about your debt service load (ie “interest owed on the debt”)
• Explain in terms of money – “We’re spending $x per year servicing our debt”
• Be sure you’re taking on the right kind– Only types II.A.1 and II.B are healthy
• Ongoing dialog
Why Pay Down Technical Debt
• Time-to-market (or time-to-benefit) decreases if you don’t have the distraction of debt interest
• Sets the stage for future enhancements
• Response time for hot fixes improves• Customer visibility
Talking points with your boss
Focused Debt-Reduction Projects
McConnel’s take:• Large debt reduction projects usually don’t
work out because they aren’t cost-effective• Focus on specific projects with known cost and
paybackBeckett’s take:• If your interest cost is measurable and clearly
characterized or there is a customer perception issue, a new project may be best– E.g. Replacing piecemeal networking in dorms with
full wiring at a single tech level circa 1998
Decision Making
• Before incurring the debt, write down the alternatives
• If the shortcut is pervasive, it can be really expensive to fix– Mitigate by clear records
• Does this shortcut affect other systems?• Now you’ll be in a good position to make
a decision later, when (and if) to pay off the debt