Skip to main content

Technical debt guide

Technical debt: what it is and how to manage it as a PM

Technical debt is one of the most common sources of conflict between product and engineering teams. Here is what it actually is, how to evaluate it, and how to build the case for prioritizing it.

What technical debt is

Technical debt is the accumulated cost of shortcuts taken in software development. When engineers choose a faster, simpler solution today to ship sooner, they take on debt — and that debt accrues interest in the form of slower development, more bugs, and harder maintenance over time.

The metaphor: financial debt. Borrowing money (taking a shortcut) is sometimes the right decision. But the interest (slower development later) accumulates. At some point, you must pay it down.

Types of technical debt

Not all debt is the same. Understanding the type helps you frame the conversation with engineering accurately.

Intentional debt

'We know this is not the right solution, but we need to ship by Friday. We will refactor it next sprint.'

This is a deliberate trade-off — fine if managed.

Unintentional debt

Code that seemed correct at the time but turned out to be a poor design as requirements evolved.

This is how most debt accumulates.

Outdated dependencies

Libraries and frameworks that are old, unsupported, or insecure.

This is a security risk as well as a development burden.

Signs that technical debt is becoming a problem

These signals often appear before engineers formally name the problem. If you are hearing any of these in standups or retrospectives, it is time to have the conversation.

'Simple' features are taking much longer than expected.

Engineers spend more time fixing bugs than building new things.

New team members take months to become productive.

Fear of changing certain parts of the codebase ('nobody touches the payment module').

Increasing production incidents that seem unrelated to recent changes.

How PMs should think about technical debt

Technical debt is a product problem, not just an engineering problem. When engineers cannot ship features quickly, users do not get value quickly. Ignoring debt to ship more features creates a vicious cycle where future feature velocity drops.

Budget for it. Many engineering teams reserve 20% of sprint capacity for debt reduction. This is a reasonable starting point.

Frame it for stakeholders

"Investing in this now will allow us to ship features 30% faster for the next two quarters"

is a more persuasive business case than "engineers need refactoring time."

How to make the case for technical debt work

Stakeholders respond to specifics. A vague request for "engineering time" rarely wins prioritization. This four-step structure gives you a concrete business case.

1

Quantify the cost

How many hours per sprint are slowed down by this debt area? What is that in developer time?

2

Quantify the benefit

If we fix this, what becomes faster or safer?

3

Connect to a business outcome

'This will unblock the checkout redesign we need for Q3.'

4

Propose a time-boxed investment

'One sprint to refactor the payment flow, then it never holds us back again.'

Ready to work better with engineering?

Learn how to communicate across the product-engineering divide.

Learn to work with engineering teams →