Monetizing the Technical Debt
Most Agile teams recognize the evils associated with technical debt. Just like a financial debt, the technical debt incurs interest payments. These are paid in the form of extra effort required to maintain and enhance the software which has either decayed or is built on a shaky foundation. Most Agilists recommend repaying the technical debt as early as possible. However, most Agile teams fail to monetize the technical debt, which can give valuable insights.
Once there is a monetary amount associated with the technical debt, it helps in answering various complex and tricky questions about the software. Israel Gat suggested that unless there is a quantifiable tab on the technical debt, teams generally ignore it to a level where the software decays beyond repair.
Beyond a certain level of debt, no good option is available. The code decayed to the point in which fixing anything in a hazardous proposition – every fix is likely to break something else.
He mentioned that there is a need to monetize technical debt and represent that as a liability on the balance sheet.
According to Israel, there are multiple benefits of monetizing the technical debt.
- It tells the teams when to stop developing and start refactoring - When the technical debt reaches a certain level (say 25 cents per line of code), new functionality is put on hold. The team gets into refactoring mode and no functionality is added until the debt is brought down.
- Customers of the software get an idea of how risky the software is – Israel suggested that this is inline with the Agile Manifesto “Customer collaboration over contract negotiations”.
- Makes investment decisions easy for Venture Capitalist – VC's can determine the rationale for making an investment in a software product.
- Determines the affordability of the software – Helps answer the questions about affordability of the development and maintenance of the software as it evolves through the software lifecycle.
- Helps in making the refactor versus rewrite decision – Associating technical debt with other important factors helps in making a decision to start afresh.
- Helps in defining credit limits – Once monetary credit limits have been defined, they help all stakeholders including the CxO's to take informed decisions.
So what is the suggested way to monetize technical debt?
One of the ways is to use the technical debt plugin for Sonar. A technical debt analysis of a vast number of projects already is available on the Sonar live site. The cost is calculated by first figuring out the debt which is
- Debt(in man days) = {cost_to_fix_duplications + cost_to_fix_violations + cost_to_comment_public_API + cost_to_fix_uncovered_complexity + cost_to_bring_complexity_below_threshold + cost_to_cut_cycles_at_package_level}
There is a default cost in hour associated with each of the above violation. For example
- cost_to_fix_duplications = {cost_to_fix_one_block * duplicated_block}
Now, as per the defaults cost_to_fix_one_block = 2 hours. Assuming that the average developer cost is $500 per day and there are 8 hours to a day then to fix one such block $125 would be spent. Likewise, monetary analysis can be done for each violation to finally arrive at the total technical debt.
Thus, monetizing the technical debt gives a deep understanding of the hidden costs associated with the software. It is key for all Agile teams to keep monitoring their technical debt costs and keep them within the credit limits. Doing this helps in creating a product which is not only easy to maintain and enhance but also allows VC's to invest and customers to buy with confidence.
I would like to see more on the topic of interest
by
Graham Brooks
Too simple
by
Alexandre Poitras
I prefer to have a much more detailed picture. Usually, I keep track of all the "debt" items (for instance, slow build, using an old framework version, ...) and for each one of them I have the following informations :
- why you contracted the debt in the first place : was it a conscious decision or not, how to avoid it the next time, ...
- what are the risk and penalties associated to this specific item and therefore what is the reward to fix it : loosing one hour per day because of the build for instance
- is there a specific vision on how to fix this in the long term or not (maybe it's good enough and we won't have time to fix it). I put this item since fixing a technical issue is most of the time an ongoing process over more than a sprint unless the item is very simple.
Re: Too simple
by
Vikas Hazrati
I kind of agree but then there is a need to identify the hotspots, define the credit limit and if we have a benchmark then it is easy to compare one project to the other in relation to the technical debt.
Once we have the numbers then it is easy to drill down to the root causes on the basis of violations taking the high $$$ ones first.
Re: Too simple
by
Israel Gat
The state of the art these days enables us to give each technical/managerial level the most appropriate data. One can get as little of as much data as one desires.
In collaboration with my colleagues, I have carried out Technical Debt Assessments for the Cutter Consortium (www.cutter.com/index.html). We were able in these engagements to simultaneously satisfy the needs of quite a few levels.
Best,
Israel
Re: Too simple
by
Alexandre Poitras
Re: Too simple
by
Israel Gat
Moreover, the team itself makes use of the metrics. I have seen eyes lit when metrics provided insights to the team.
Israel
How do you trust the asset underlying the tech debt calculation?
by
Andrew T
Would you agree/disagree?
Re: How do you trust the asset underlying the tech debt calculation?
by
Israel Gat
Coverage 41%
Duplication 22%
Rule violations 17%
Complexity 15%
Comments 5%
The strategy for coping with the technical debt is determined to a great extent through heat maps we generate as part of the engagement. Moreover, we construct a unified backlog that takes into accounts all work streams, not "just" technical debt reduction/elimination.
Jim Highsmith (www.cutter.com/meet-our-experts/jhbio.html) and I will be delivering a joint workshop on Technical Debt in the forthcoming Cutter Summit (www.cutter.com/summit/inreview.html). It will address in detail most of the good questions brought up in this thread.
Best,
Israel
This model uses the "cost accounting" fallacy
by
Jason Felice
The only cost is opportunity cost. You need to know how the developers participate in the company's value stream and how the technical debt impedes the throughput of value. And if development has excess capacity (it either does, or it is the current bottleneck for value throughput), then the technical debt has no cost unless fixing is significant enough to lay someone off or repurpose them to a more valuable position.
Niave theory piece.
by
Chris Matts
My experience dealing with business executives is that they are pretty smart. If you explain the IT situation in terms they understand, they will be able to better "monitise" the effect than simply looking at developer costs. On a previous project we did a 6 man month effort to redesign the app to make it easier to test. The business execs understood the real impact of technical debt is not the trickle off extra developer resource, but rather...
1. The delay to implementing new features.
2. The risk of application failure.
3. The risk of introducing regression.
4. Other types of risk. (Operational, Reputation, Legal,...)
The cost of a bug to an organisation that takes down a customers operations if not the cost to fix the bug.
I would recommend engaging with your business execs in terms they can understand rather than present flaky numbers that would not convince anyone. The principles are more important than the numbers.
Educational Content
Writing Usable APIs in Practice
Giovanni Asproni May 19, 2013




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think