← ALL INSIGHTS
INSIGHT · 6 MIN READ

What Is Technical Debt? A Register and Scoring Template for CTOs.

technical debt tool kit

Technical debt is the future cost of choosing a faster or easier engineering solution today instead of a better one. A technical debt register is a shared list that records each item, scores it, and shows leaders what to fix first. This guide explains the idea in plain terms, then gives you a scoring tool you can use right on this page.

Quick answer

Code refactoring is one way to repay debt, not the only way.

Technical debt is work you owe your future self, plus the interest you pay until it is done.

A register gives every item the same fields: impact, risk, effort, dependency and owner.

An impact effort matrix finds quick wins. A prioritization matrix ranks everything else.

What Is Technical Debt?

What is technical debt, exactly? It is the extra work a team creates for its future self when it picks a convenient solution over a better one. Ward Cunningham introduced the metaphor in 1992 to explain why rushed code has to be revisited. His own summary was that a little debt speeds development so long as it is paid back promptly.

Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite.Ward Cunningham, OOPSLA 1992 experience report

The metaphor has three parts. The principal is the work needed to fix the shortcut properly. The interest is the extra time and risk every later change carries while the shortcut remains. The default is what happens when interest grows too high: an outage, a failed audit, or a roadmap that stops moving.

For a CTO, the useful point is that debt is not automatically bad. A deliberate shortcut taken to meet a launch date can be a sound decision. Untracked debt is the real problem, because nobody can price it, schedule it, or explain it to the business.

Technical Debt Meaning in Practice

The technical debt meaning becomes clearer with examples. Common items include:

  • A framework or runtime that no longer receives security patches.
  • Core modules with no automated tests.
  • The same business rule duplicated across several services.
  • Manual deployments that depend on one person.
  • Integrations with no documentation and no named owner.
  • A data model that no longer matches how the business works.

None of these stop a product from working today. Each one makes tomorrow’s change slower, riskier, or both. That slow drag is the interest, and it is why technical debt shows up in business metrics such as delivery speed and incident count, not only in code reviews.

The Fowler quadrant: not all debt is equal

Martin Fowler sorts debt on two axes: deliberate or inadvertent, and reckless or prudent. Prudent and deliberate debt is a documented tradeoff, such as shipping a simpler design to learn from real users. Reckless and deliberate debt is a shortcut taken with no plan to repay it. Inadvertent debt appears when a team learns a better design only after building the system. A register helps you separate these cases, because the right response differs for each.

Why a Register Beats a Backlog Tag

Most teams already tag tickets as “tech debt.” That list grows, nobody trusts it, and it loses every planning argument against new features. A technical debt register fixes this by forcing every item to carry the same fields:

  • Description: what the shortcut is and which system it affects.
  • Impact: the effect on revenue, customers, or delivery speed.
  • Risk: exposure to security, compliance, or outage problems.
  • Effort: the rough cost to fix it properly.
  • Dependency: what other work is blocked until this is fixed.
  • Owner and review date: who decides, and when it is reviewed again.

With these fields, the conversation with a CFO or product head changes. Instead of “engineers want cleanup time,” you can say “this item blocks three roadmap features and carries a high outage risk.” That is a decision a business leader can act on.

What Is Code Refactoring, and Where Does It Fit?

What is code refactoring? It is the practice of restructuring existing code so it is easier to understand and cheaper to change, without altering what the software does for users. Fowler’s book on the subject treats it as a series of small, behavior-preserving steps, each protected by tests.

Refactoring repays principal, but it is not the only tool. Some debt needs a component rewrite, a platform upgrade, or a staged migration. Other debt needs documentation or a process change rather than any code at all. Refactoring also depends on test coverage: without tests, you cannot prove that behavior stayed the same. For that reason, “add tests to the billing module” often becomes the first item in a new register.

The Impact Effort Matrix for Technical Debt

The impact effort matrix is a two by two grid. Impact runs on one axis and effort on the other. It sorts every item into one of four groups:

  • Quick wins: high impact, low effort. Do these first.
  • Plan it: high impact, high effort. Schedule these as projects with an owner.
  • Fill in: low impact, low effort. Use these for quiet weeks.
  • Defer: low impact, high effort. Revisit later, or drop them.

The matrix is only as good as the way you define impact. For technical debt, impact should combine business impact and risk, not just developer annoyance. Otherwise the grid rewards whatever engineers find irritating instead of what the business needs.

Prioritization Matrix: Four Scores for Every Item

A prioritization matrix extends the grid with more criteria, so you can rank dozens of items instead of sorting them into four boxes. For technical debt we use four scores from 1 to 5: impact, risk, effort and dependency. The priority score is:

Priority = (2 × Impact + 2 × Risk + Dependency) ÷ Effort

Impact and risk count double because they represent business exposure. Dependency counts once and rewards items that unblock other work. Effort divides the total, so cheaper fixes rise in the ranking. Treat the score as a conversation starter, not a verdict. If a result looks wrong, adjust the inputs together and write down why.

Run the Register Review Every Month

  1. Collect. Ask each team lead for their top three items, using the register fields.
  2. Score together. Spend 45 minutes with engineering and product in the same room. Disagreements about scores are useful, so record them.
  3. Commit capacity. Agree a fixed share of each sprint for debt, and pick items from the top of the ranking.
  4. Review. Close finished items, rescore the rest, and add anything new. Old scores go stale quickly.

Common Mistakes to Avoid

  • Scoring alone. One engineer’s view misses business impact.
  • Never closing items. A register that only grows loses trust.
  • Treating all debt as bad. Some debt is a smart, documented tradeoff.
  • Ranking security items by effort alone. High risk deserves its own weight.
  • Leaving items without an owner. Unowned debt does not get fixed.

Frequently Asked Questions

What is technical debt in simple words?

It is the extra future work created when a team picks a quick or convenient solution instead of a better one. Like financial debt, it carries interest: later changes take longer and carry more risk.

Is code refactoring the same as a rewrite?

No. Refactoring improves structure in small, tested steps without changing behavior. A rewrite replaces a component and is a larger, riskier project.

What is the difference between an impact effort matrix and a prioritization matrix?

An impact effort matrix compares two factors on a grid. A prioritization matrix scores several criteria and ranks items by a combined score.

How often should we update a technical debt register?

Review it monthly, and rescore any item whose system or business context has changed.

THE CONVICTION BRIEF

One brief like this, monthly.

Subscribe
FAQ

On modernizing CPG data

What does "data as a product, not a byproduct" actually mean?

It means each critical data domain gets a named owner accountable for its quality, availability, and adoption. A byproduct has no owner, no roadmap, and no service level; a product is measured by whether people use it. The shift is organizational before it is architectural.

Why start with the organization instead of the technology?

The three shifts in this piece are ownership, consumption, and governance — and none is primarily a technology decision. Companies that dominate with data made the decision before they drew the diagram. New tooling on top of unowned data just moves the same problem to a faster stack.

What's wrong with a 2015-era data stack?

Those stacks were optimized for storage and ingestion — getting data in and keeping it. Modern stacks optimize for the person pulling data out: the demand planner, the trade manager, the pricing agent. The stack that wins is the one the business actually pulls from, not the one that stores the most.

How is governance-as-enabler different from governance theater?

Governance that lives in review boards slows everything and protects little. Governance that lives in the platform — contracts, permissions, and quality gates enforced at the pipeline — speeds teams up and holds under audit. One is a meeting; the other is enforced by default.

Do we need to rebuild everything at once?

No. Start by assigning an owner to one critical domain and designing that domain for consumption, then move governance into the platform for it. The pattern is deliberate and incremental, which is why the leaders treat it as a series of shifts rather than a single migration.