Reducing Technical Debt Takes Discipline

Reducing Technical Debt is like Reducing Financial Debt – It Requires Systematic Focus

Reducing technical debt and how to go about it was a heated discussion with one of our clients recently. First, we discussed the above metaphor and how it really suits software projects as well as other domains. The metaphor, created by Ward Cunningham in 1992, was meant to help explain to non-technical stakeholders that there was a cost to not doing things the right way; doing things the fastest way might have costs later on. But as in the financial domain, debt is not always bad. Sometimes we want something now and don’t mind paying it off later. That’s the concept of principal and interest. The question is how much is the principal and interest and will the interest bury me in the long run? Just like financial debt, which can be a silent killer and can either cause problems or mask them, technical debt also has ramifications:

  • Tasks that are not done but run the risk of causing future problems if not completed.
  • Aspects of the software that have been done incorrectly (usually quicker or easier), but there is no time to do it right (now), or fix it.

In reducing technical debt, first we have to identify it and know where it comes from. Here are a few sources:

  • Code
  • Data
  • Documentation
  • Architecture
  • UI
  • Operational infrastructure
  • Integration methods/middleware
  • Tests
  • Automation

As you can imagine, this list can get long. To make it manageable and goal oriented (reduce technical debt), it helps to draw out a chart that shows the pain you might have, the debt that is causing it, and possible solutions.

Reducing Technical Debt Methods

Reducing Technical Debt Requires Focus and Prioritization Based on YOUR Pain

Reduce Your Technical Debt Systematically and Prioritize by Your Pain

Just as one of the examples in the figure, if you have recurring issues, then it may be a sign that you have testing debt, which should be reduced through methods like test automation. This figure is by no means exhaustive nor correct for YOUR organization. As a start, you should list out your pains or issues, and that will lead you down the right path to reducing technical debt. It’s not easy paying back technical debt anymore than it is credit card debt; it takes discipline and dedication.