Technical Debt: A Framework for What to Fix First
Technical debt is inevitable in any IT organisation. Systems age, technologies become obsolete, shortcuts taken under deadline pressure accumulate. The challenge isn’t avoiding technical debt — that’s impossible — but managing it effectively by fixing the problems that matter and accepting the ones that don’t.
Most organisations lack systematic approaches to technical debt prioritisation. Decisions get made based on whichever problem is currently most painful or which team complains most loudly. This leads to inefficient use of limited remediation resources.
Here’s a framework I’ve developed for prioritising technical debt that works across different types of organisations and technical environments.
Understanding Technical Debt Types
Not all technical debt is equivalent. Different types of debt have different characteristics and require different approaches:
Security debt. Systems or configurations that create security vulnerabilities. This includes unpatched software, weak authentication, excessive access permissions, and insecure architectures.
Compliance debt. Systems or practices that violate regulatory requirements or internal policies. This includes inadequate audit logging, data retention problems, and missing controls.
Scalability debt. Architectures or systems that can’t scale to meet current or projected demand. This becomes critical when growth is constrained by technical limitations.
Maintainability debt. Systems that are difficult to modify or support. This includes poorly documented code, outdated frameworks, and systems dependent on scarce skills.
Cost debt. Technical decisions that create ongoing cost inefficiency. This includes inefficient infrastructure sizing, licensing for unused features, and unnecessary redundancy.
User experience debt. Systems that create poor user experience through slow performance, poor interfaces, or unreliable operation.
Understanding which type of debt you’re dealing with helps prioritise remediation because different debt types have different risk profiles and urgency.
The Prioritisation Matrix
Prioritise technical debt based on two dimensions: impact and effort to remediate.
High impact, low effort. Fix these first. They deliver maximum value for minimum investment. Examples include applying security patches, fixing performance bottlenecks with known solutions, and eliminating unused licenses.
High impact, high effort. These are major projects that deliver significant value but require substantial investment. Examples include replacing legacy core systems, rearchitecting for scalability, and modernising authentication infrastructure. Treat these as strategic initiatives with proper project governance.
Low impact, low effort. Fix these opportunistically when resources are available. They’re not urgent but deliver incremental improvements at low cost. Examples include updating documentation, cleaning up unused accounts, and consolidating similar tools.
Low impact, high effort. Don’t fix these. The effort required exceeds the value delivered. Consciously accepting this debt and documenting the decision is better than creating guilt about not addressing it.
Scoring Impact
Impact assessment should consider multiple factors:
Security risk. What’s the potential damage if this debt leads to a security incident? Consider data exposure, system compromise, and operational disruption.
Operational stability. How often does this debt cause outages, performance problems, or support incidents? What’s the MTTR when problems occur?
Business constraint. Does this debt prevent the organisation from doing something valuable? Is it blocking strategic initiatives or limiting operational capability?
Compliance exposure. Could this debt lead to regulatory breaches, audit findings, or legal liability?
Cost impact. How much is this debt costing in ongoing operational expense, licensing, or inefficiency?
User impact. How many users are affected and how significantly? Is it degrading productivity or creating frustration?
Score each factor from 0 (no impact) to 3 (severe impact) and sum the scores. This gives you a composite impact score from 0-18. Items scoring 12+ are high impact. Items scoring 6 or below are low impact.
Estimating Remediation Effort
Effort estimation needs to account for:
Direct labour. How many person-days of work are required to fix the problem? Include analysis, development, testing, and deployment.
Dependency complexity. Does fixing this require coordinating across multiple teams, systems, or vendors? Complex dependencies multiply effective effort.
Business disruption. Does remediation require system downtime, data migration, or user retraining? The broader disruption cost often exceeds direct technical effort.
Opportunity cost. What other initiatives will be delayed or cancelled to address this debt? The value of displaced work needs to be factored in.
Unknown risk. How well do you understand the problem? Higher uncertainty requires larger effort contingency.
Express effort in normalised units like person-weeks or budget dollars. Items requiring less than 2 person-weeks or $10k are low effort. Items requiring more than 10 person-weeks or $50k are high effort.
Decision Criteria
With impact and effort assessed, apply these decision criteria:
Fix immediately: Security debt scoring high impact, regardless of effort. Security can’t wait.
Fix next quarter: High impact debt with low-to-moderate effort. Schedule into near-term sprints or projects.
Strategic roadmap: High impact debt requiring major effort. Treat as multi-quarter initiatives with formal project governance.
Fix opportunistically: Low impact, low effort debt. Address when resources are available or when working on related systems.
Accept and document: Low impact, high effort debt. Formally decide not to fix it and document the decision including risk acceptance.
Example Applications
End-of-life operating systems. Servers running Windows Server 2012 R2 (out of support since October 2023) are high-impact security debt. If migration is straightforward, fix immediately. If migration requires application refactoring, it becomes high-impact, high-effort — strategic roadmap item.
Unused cloud resources. EC2 instances that have been idle for months are low-impact cost debt. Shutting them down is low-effort. Fix opportunistically during next infrastructure review.
Legacy reporting system. A custom-built reporting system from 2015 that’s slow and difficult to modify is moderate-impact maintainability debt. If replacement requires building new reports in a modern BI tool, it’s moderate-to-high effort. This goes on the strategic roadmap for next year.
Poorly documented API. Internal API with minimal documentation that frustrates developers is low-to-moderate impact maintainability debt. If documentation can be generated from code, it’s low effort — fix next quarter. If it requires manual documentation of undocumented behaviour, it’s moderate effort — maybe fix opportunistically.
Ongoing Management
Technical debt isn’t a one-time cleanup project. It accumulates continuously and requires ongoing management:
Quarterly debt review. Assess significant new debt, reprioritise existing debt, and allocate remediation capacity for next quarter.
Maintain a debt register. Document known debt items with impact assessment, effort estimates, and prioritisation decisions. This prevents the same discussions recurring every quarter.
Allocate dedicated capacity. Reserve 15-20% of technical capacity for debt remediation. Don’t make debt work compete for resources with feature development — it will lose.
Measure and report. Track debt remediation alongside other IT metrics. Report to leadership on high-impact debt and remediation progress.
Prevent new debt. Architecture reviews, code reviews, and design standards reduce the rate of new debt creation. Prevention is cheaper than remediation.
Common Mistakes
Treating all debt as urgent. This leads to thrashing between problems without making meaningful progress on any. Prioritise ruthlessly and focus on high-impact items.
Ignoring low-effort fixes. Small improvements accumulate into meaningful impact. Don’t ignore low-hanging fruit while waiting for budget to tackle major projects.
Not documenting acceptance decisions. Deciding not to fix something is a valid decision if done consciously. Document it so people stop worrying about it.
Remediation without root cause analysis. Fixing symptoms without addressing root causes means the same debt will accumulate again. Understand why the debt exists before deciding how to remediate.
No stakeholder communication. Leadership and users need to understand why some debt is being fixed and other debt isn’t. Communicate priorities and decisions, not just technical details.
The Reality
You will always have more technical debt than capacity to fix it. That’s normal. The goal isn’t to eliminate debt — it’s to manage it systematically by fixing what matters and accepting what doesn’t.
Organisations that manage technical debt well share these characteristics: they have documented debt inventories, explicit prioritisation criteria, dedicated remediation capacity, and leadership that understands not all debt is equally important.
Organisations that struggle with technical debt make remediation decisions reactively based on the most recent pain point, don’t allocate dedicated capacity for remediation, and feel perpetually guilty about unfixed problems.
The difference isn’t about having less debt — successful organisations often have substantial documented debt. The difference is having a systematic approach to managing it rather than reacting to whichever problem is currently burning.
Implement a structured approach to technical debt prioritisation. Your infrastructure teams will appreciate having clear guidance on what matters. Your leadership will appreciate understanding what’s being fixed and why. And you’ll make more efficient use of limited remediation resources.