Technical Debt Assessment Framework
Score your codebase across six dimensions to get a weighted debt score. Use this alongside the calculator to prioritise where to invest in debt reduction first.
How to Use This Framework
- 1. For each dimension, read all five levels and select the one that best describes your codebase today.
- 2. Note your score (1 = Critical, 5 = Minimal) and multiply by the dimension weight.
- 3. Sum all weighted scores for your overall technical debt score out of 100.
- 4. Use the interpretation table at the bottom to understand what your score means.
- 5. Focus improvement efforts on high-weight dimensions with the lowest scores first.
Architecture
Weight: 25%Monolith with no clear bounded contexts, spaghetti dependencies, no service boundaries possible without full rewrite.
Some modularisation but significant circular dependencies. Major features require changes across 5+ components.
Mostly clean architecture with identifiable service boundaries. Occasional cross-cutting concerns.
Clear bounded contexts, minimal coupling. New features added in under 2 components in most cases.
Exemplary architecture. SOLID principles applied consistently. Easy to decompose further if needed.
Code Quality
Weight: 20%Widespread code duplication, deeply nested logic, long functions (500+ lines), no consistent naming.
Significant duplication, mixed naming conventions, average function length over 100 lines.
Some duplication in hotspots. Most functions under 50 lines. Naming mostly consistent.
Occasional minor duplication. Good naming. Cyclomatic complexity within acceptable bounds.
DRY throughout, excellent naming, linting enforced in CI, code review culture strong.
Test Coverage
Weight: 20%Under 10% coverage. No automated testing enforced. Deploys require manual verification.
10-30% coverage, unit tests only, no integration or end-to-end tests.
30-60% coverage with unit and some integration tests. Critical paths tested.
60-80% coverage with full testing pyramid. E2E tests on critical user journeys.
80%+ coverage, TDD culture, mutation testing, full CI enforcement.
Dependencies
Weight: 15%Multiple CVEs outstanding, dependencies 3+ major versions behind, unmaintained packages in critical paths.
Dependencies 1-2 major versions behind, some known vulnerabilities, no automated update process.
Mostly current dependencies. Dependabot or equivalent in place. Patches applied within 30 days.
Dependencies current, minor version updates applied regularly, no known CVEs.
Automated dependency updates with rollback. Zero known CVEs. Minimal dependency surface area.
Documentation
Weight: 10%No documentation. Critical knowledge in heads of 1-2 engineers. Bus factor of 1.
Some README files, but architecture and decision rationale undocumented. Onboarding takes 3+ months.
Core systems documented. ADRs present for some major decisions. Onboarding takes 4-6 weeks.
Comprehensive runbooks, ADRs, and API docs. New engineers productive within 2-3 weeks.
Self-documenting code, living documentation, automated API docs, thorough onboarding guide.
Infrastructure
Weight: 10%Manual deployments, no infrastructure as code, environments differ, frequent deploy-caused incidents.
Partial automation, some IaC, environments partially consistent, deploys risky.
Most infrastructure in IaC, automated deployments with rollback capability.
Full IaC, immutable infrastructure, blue-green or canary deploys, monitoring-driven rollback.
GitOps, policy as code, self-healing infrastructure, full observability stack.
Score Interpretation
90-100
Exemplary
Technical debt is actively managed. Continue with regular debt audits and maintain the culture.
70-89
Healthy
Good foundation with manageable debt. Prioritise the 2-3 weakest dimensions in next quarter.
50-69
Concerning
Debt is accumulating faster than you repay it. Allocate 20-30% sprint capacity to reduction immediately.
30-49
High Risk
Debt is materially slowing delivery. Consider a dedicated debt sprint or quarter-long initiative.
Below 30
Critical
Existential risk. A major rewrite or refactoring programme is likely necessary. Escalate to leadership.