Technical Debt

What is Technical Debt?

Technical debt is the future cost created when software or infrastructure is built or left in a way that is quicker or cheaper now but makes later changes slower, riskier and more expensive.

Updated November 2026 · 5 min read


Technical debt describes the accumulated shortcuts, outdated components and design compromises in an organization's systems. Like financial debt, it can be a sensible choice: releasing a product quickly with a simpler design may be worth the cost of reworking it later. But debt carries interest. Every change to a system with high technical debt takes longer, breaks more often and needs more testing, and those costs grow the longer the debt is left in place.

The term was introduced by software developer Ward Cunningham in 1992 to explain to business colleagues why code sometimes needs to be reworked. It now covers far more than code, including outdated platforms, unsupported software versions, tangled integrations and missing documentation. For enterprise architecture and IT finance, technical debt is a hidden cost that shows up as slower delivery, higher support effort and greater risk, and managing it requires making that cost visible and deciding deliberately when to pay it down.

Definition of Technical Debt

Technical debt is the gap between the current state of a system and the state it would need to be in to support changes efficiently and safely. The "principal" is the effort required to close that gap, and the "interest" is the extra cost paid on every change, incident and maintenance task until it is closed.

At the portfolio level, technical debt is one of the main factors assessed in application portfolio management, and high debt is a common reason to modernize, replace or retire an application.

Types of Technical Debt

Code debt includes poorly structured code, duplicated logic and missing automated tests. Design or architecture debt includes systems that are too tightly connected, such as a monolithic architecture that must be changed and released as one unit.

Infrastructure and platform debt includes software versions, operating systems and databases that are near or past the end of vendor support. End-of-life software is one of the most visible forms.

Other forms include documentation debt, where knowledge exists only in people's heads, and data debt, where inconsistent or duplicated data makes changes harder. Many organizations also recognize integration debt from fragile point-to-point connections.

Deliberate and Accidental Debt

Some debt is taken on deliberately, such as releasing a simpler version to meet a deadline with a plan to improve it later. This can be a sound decision if the plan is followed.

Much debt is accidental. It builds up as technology ages, requirements change and teams make reasonable choices that later turn out to be limiting.

Debt also grows when systems are left untouched. An application that was well built ten years ago may now run on unsupported software simply because no one invested in keeping it current.

Importance of Technical Debt in Enterprise Architecture

Technical debt slows the organization's ability to change. Projects that touch high-debt systems take longer and cost more, which delays strategic initiatives that depend on them.

It increases operating costs. High-debt systems usually need more support staff, cause more incidents and require specialist skills that are expensive or scarce.

It also raises risk. Unsupported software may have security vulnerabilities that will never be fixed, and fragile systems are more likely to fail during changes or peak demand.

Making Technical Debt Visible

Technical debt is hard to see in financial reports. It appears indirectly, as higher maintenance budgets, slower projects and more incidents, rather than as a separate line.

Enterprise architects can make it visible by scoring the technical health of each application and linking that score to its costs, incident history and the projects that depend on it.

Expressing debt in financial terms, such as the extra annual support cost or the added cost of planned projects, helps leaders compare paying it down with other investments. This framing is usually more persuasive than technical descriptions.

Deciding What to Pay Down

Not all technical debt needs to be repaid. Debt in an application that will be retired soon may be cheaper to tolerate than to fix.

Debt in systems that are central to strategy or changed frequently is usually the most expensive to leave in place, because its interest is paid on every change.

Models such as the TIME model help classify applications, with high-debt but valuable systems often marked for migration or modernization. Low-value systems with high debt are usually better retired.

How to Manage Technical Debt

Managing technical debt involves measuring it, prioritizing it by business impact and funding its reduction as part of normal planning.

The aim is not to eliminate debt, which is impossible, but to keep it at a level the organization chooses deliberately.

Measuring and Prioritizing

Assess technical health for each application, including software age, vendor support status, code quality where available, integration complexity and incident rates.

Combine these scores with business value and change frequency to identify the debt that costs the most. A useful question is how much faster and cheaper planned work would be if the debt were removed.

Record significant debt in a register with owners, estimated costs and proposed actions, so it can be planned like any other work. A register also prevents the same problem from being rediscovered by every new team.

Funding and Reducing Debt

Reserve a share of delivery capacity, often expressed as a percentage of each team's time, for reducing technical debt.

Include debt reduction in the business cases for related projects, since fixing debt is often cheapest when a system is already being changed.

For large, structural debt, plan dedicated programs such as legacy system modernization, with costs compared against the ongoing interest of leaving the debt in place. Track progress with the same health scores used to identify the debt.

Examples of Technical Debt in Enterprise Architecture

The examples below show technical debt identified and managed.

Both use illustrative figures. The first measures the cost of debt in a core system, and the second sets a portfolio-wide target.

In each, expressing debt in financial terms changed how it was prioritized.

Pricing the Interest

A logistics company's order management system is 15 years old and runs on a database version that loses vendor support next year. Every change requires extensive manual testing.

Architects estimate that the system's debt adds about $1.1 million a year in extra support, testing and delayed projects. Refactoring and upgrading it would cost $2.4 million.

Leaders approve the work, which is expected to pay back in a little over two years, and the company avoids running a core system on unsupported software.

A Portfolio Debt Target

A bank scores the technical health of its 600 applications and finds that 85 run on software past the end of vendor support.

It sets a target to reduce this number to 20 within two years, funding the work through a mix of upgrades, replacements and retirements.

Each quarter, the architecture team reports progress to the risk committee. After two years, 24 applications remain on unsupported software, all with documented risk acceptances and replacement dates.

Conclusion

Technical debt is the future cost created when systems are built or left in a way that makes later changes slower, riskier and more expensive. It includes code, design, platform, documentation and data debt, and it grows as technology ages.

In enterprise architecture, technical debt slows change, raises operating costs and increases risk. Measuring it, linking it to costs, prioritizing the debt that is most expensive to keep, funding its reduction as part of normal planning and tracking progress help organizations keep debt at a level they choose rather than one they inherit.