Engineering·December 20, 2024·3 min read

A Practical Strategy for Managing Technical Debt

Technical debt is inevitable. The question isn't whether to take it on, but how to manage it strategically. Here's the framework we use.

M

Michael Chen

VP of Engineering

A Practical Strategy for Managing Technical Debt

Every engineering team I've worked with has had "the debt conversation" at some point. Usually it goes something like: "We need to stop feature work and pay down technical debt."

This framing is unhelpful. It creates a false dichotomy between progress and quality. The reality is more nuanced.

What Technical Debt Really Is

Ward Cunningham's original debt metaphor was about shipping code that worked but wasn't well-factored—a conscious trade-off for speed. Over time, the term has expanded to cover everything from outdated libraries to poorly written code.

I find it useful to distinguish between:

Deliberate debt: Conscious decisions to ship imperfect code faster. These should be documented and have a repayment plan.

Accidental debt: Consequences of decisions that seemed reasonable at the time but didn't age well. Often only visible in hindsight.

Bit rot: Code that was fine when written but has become problematic as the codebase evolved around it.

A Framework for Prioritization

Not all debt is equal. We use a simple matrix to prioritize:

Impact × Effort

High impact, low effort: Do these first. Quick wins that make a real difference.

High impact, high effort: Plan these carefully. Break into smaller pieces if possible.

Low impact, low effort: Handle opportunistically. Fix when you're in the area anyway.

Low impact, high effort: Consider not doing these at all. The opportunity cost is too high.

Making Debt Visible

The biggest challenge with technical debt is that it's invisible to non-engineers. Business stakeholders see features shipped; they don't see the growing maintenance burden.

We've found success with:

  1. Tracking time spent on debt-related work: Show the real cost of not addressing it.

  2. Connecting debt to business impact: "This legacy system requires 20 hours/month to maintain, limiting feature capacity."

  3. Including debt reduction in roadmaps: Make it part of normal planning, not a special initiative.

The 20% Rule

We allocate roughly 20% of engineering capacity to debt reduction and infrastructure improvement. This isn't a tax on productivity—it's an investment in future velocity.

This number isn't sacred. Some quarters it's 15%, some it's 25%. The key is consistency: some capacity is always reserved for improvement.

Conclusion

Technical debt isn't a problem to solve—it's a force to manage. Like financial debt, it can be a useful tool when used strategically, and a crushing burden when ignored.

The goal isn't zero debt. It's having the debt you've chosen to carry, not the debt that accumulated through neglect.

Topics

Technical DebtEngineering ManagementStrategyBest Practices

Share this article

M

Michael Chen

VP of Engineering

Building great software at Montemflumen.