Technical Debt Tracking | Identify and Prioritize Debt
Track technical debt with impact-effort prioritization and sprint allocation. GitScrum manages debt items alongside features for healthy codebases.
9 min read
Technical debt slows teams over time. GitScrum helps track debt items and balance them against feature work to maintain codebase health.
Understanding Tech Debt
Types of Debt
TYPES OF TECHNICAL DEBT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DELIBERATE DEBT: β
β ββββββββββββββββ β
β "We know this is quick and dirty, but we need to ship" β
β Conscious trade-off, documented β
β Plan to fix later β
β β
β ACCIDENTAL DEBT: β
β ββββββββββββββββ β
β "We didn't know there was a better way" β
β Learned better practices after the fact β
β Outdated patterns β
β β
β BIT ROT: β
β ββββββββ β
β "This worked fine until..." β
β Dependencies outdated β
β Requirements changed β
β Environment evolved β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β EXAMPLES: β
β β
β CODE: β
β β’ Duplicated logic β
β β’ Missing tests β
β β’ Complex functions (too long) β
β β’ Poor naming β
β β’ Dead code β
β β
β ARCHITECTURE: β
β β’ Monolith that should be split β
β β’ Wrong data structure β
β β’ Tight coupling β
β β’ Missing abstraction layer β
β β
β INFRASTRUCTURE: β
β β’ Manual deployments β
β β’ Outdated dependencies β
β β’ Missing monitoring β
β β’ Insecure configurations β
β β
β DOCUMENTATION: β
β β’ Outdated docs β
β β’ Missing READMEs β
β β’ Incorrect comments β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Cost of Debt
IMPACT OF TECHNICAL DEBT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β VELOCITY OVER TIME: β
β β
β Feature β
β Velocity β
β β β
β β ββββ β
β β ββββ ββββ β
β β ββββ ββββ βββ β
β β ββββ ββββ βββ ββ β
β β ββββ ββββ βββ ββ β β
β ββββββββββββββββββββββββββββ Time β
β β
β Without debt management, velocity decreases β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SYMPTOMS OF HIGH DEBT: β
β βββββββββββββββββββββββ β
β β’ "Simple changes take forever" β
β β’ Frequent bugs in certain areas β
β β’ Fear of changing legacy code β
β β’ New team members take longer to onboard β
β β’ Same bugs keep recurring β
β β’ "Nobody knows how this works" β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β THE COMPOUND EFFECT: β
β ββββββββββββββββββββ β
β β
β Sprint 1: Quick fix (save 2 days) β
β Sprint 5: Working around it (lose 1 day) β
β Sprint 10: Bug from the hack (lose 3 days) β
β Sprint 15: Major refactor needed (lose 1 week) β
β β
β Initial 2-day "savings" cost 2+ weeks β
β β
β Interest compounds if not addressed. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Tracking Debt
Debt Inventory
TECHNICAL DEBT TRACKING:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β DEBT BACKLOG: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β TECH DEBT INVENTORY ββ
β β ββ
β β ID ITEM AREA IMPACT EFFORTββ
β β βββββ ββββ ββββ ββββββ ββββββββ
β β TD-001 Missing API tests Backend High Mediumββ
β β TD-002 Duplicate user logic Auth Medium Low ββ
β β TD-003 Outdated React Frontend High High ββ
β β TD-004 No DB indexes Database High Low ββ
β β TD-005 Hard-coded config Infra Low Low ββ
β β TD-006 Monolithic service Arch High High ββ
β β ββ
β β PRIORITY MATRIX: ββ
β β ββ
β β LOW EFFORT HIGH EFFORT ββ
β β βββββββββββββββ¬ββββββββββββββ ββ
β β HIGH β TD-004 β TD-003 β ββ
β β IMPACT β TD-001 β TD-006 β ββ
β β β (DO FIRST) β (PLAN FOR) β ββ
β β βββββββββββββββΌββββββββββββββ€ ββ
β β LOW β TD-005 β (AVOID β ββ
β β IMPACT β TD-002 β THESE) β ββ
β β β (OPPORTUN.) β β ββ
β β βββββββββββββββ΄ββββββββββββββ ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β WHEN TO LOG DEBT: β
β βββββββββββββββββ β
β β’ During code review ("this should be refactored") β
β β’ After incidents (root cause is tech debt) β
β β’ During estimation ("this is slow because...") β
β β’ Proactively during codebase review β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Debt Item Template
TECH DEBT TASK:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β TD-001: Add API Integration Tests β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β TYPE: Missing tests ββ
β β AREA: Backend API ββ
β β DISCOVERED: Sprint 12, during incident ββ
β β ββ
β β DESCRIPTION: ββ
β β Payment API has no integration tests. Changes are ββ
β β high risk. Last 3 production bugs were in this area. ββ
β β ββ
β β IMPACT: ββ
β β β’ High - bugs escape to production ββ
β β β’ Changes require extensive manual testing ββ
β β β’ Fear of refactoring slows development ββ
β β ββ
β β COST OF INACTION: ββ
β β ~2 hours manual testing per change ββ
β β ~1 production bug per month in this area ββ
β β ββ
β β FIX APPROACH: ββ
β β 1. Add happy path tests for payment flow ββ
β β 2. Add error case tests ββ
β β 3. Add to CI pipeline ββ
β β ββ
β β ESTIMATE: 5 points ββ
β β PRIORITY: High (fix this quarter) ββ
β β ββ
β β RELATED: ββ
β β β’ Incident INC-089 ββ
β β β’ STORY-567 (blocked by this) ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Paying Down Debt
Allocation Strategies
TECHNICAL DEBT ALLOCATION:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β STRATEGY 1: PERCENTAGE PER SPRINT β
β βββββββββββββββββββββββββββββββββ β
β Reserve 10-20% of capacity for tech debt β
β β
β SPRINT CAPACITY: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β βββββββββββββββββββββββββββ ββ
β β β Features β TD β ββ
β β β 80% β20% β ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β STRATEGY 2: FIX AS YOU GO β
β βββββββββββββββββββββββββ β
β When touching code, leave it better β
β "Boy Scout Rule" - always improve β
β Small incremental fixes β
β β
β STRATEGY 3: DEDICATED SPRINTS β
β βββββββββββββββββββββββββββββ β
β Quarterly "hardening sprint" β
β Focus entirely on tech debt β
β Good for major refactoring β
β β
β STRATEGY 4: TECH DEBT FRIDAYS β
β βββββββββββββββββββββββββββββ β
β Every Friday afternoon for debt β
β Regular, predictable time β
β Developer choice of items β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β WHICH TO USE: β
β βββββββββββββ β
β β’ Light debt: Fix as you go β
β β’ Moderate debt: 15% per sprint β
β β’ Heavy debt: Dedicated sprint + ongoing % β
β β’ Acute crisis: Stop features, fix debt β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Making Progress
EFFECTIVE DEBT REDUCTION:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β PRIORITIZE BY: β
β βββββββββββββ β
β β
β 1. ACTIVE DEVELOPMENT AREA: β
β If you're about to work in this code, β
β fix debt first. Pays off immediately. β
β β
β 2. INCIDENT-CAUSING: β
β Debt that caused production issues β
β Clear ROI, prevents future incidents β
β β
β 3. VELOCITY-BLOCKING: β
β "We can't add features until we fix this" β
β Unblocks future work β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β QUARTERLY DEBT REVIEW: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Q4 TECH DEBT REVIEW ββ
β β ββ
β β START OF QUARTER: 42 debt items ββ
β β RESOLVED: 12 items ββ
β β NEW ITEMS ADDED: 8 items ββ
β β END OF QUARTER: 38 items ββ
β β ββ
β β TREND: β Decreasing (good!) ββ
β β ββ
β β HIGHLIGHTS: ββ
β β β
API tests added (TD-001) - 60% fewer bugs ββ
β β β
DB indexes (TD-004) - queries 5x faster ββ
β β β
Config externalized (TD-005) ββ
β β ββ
β β NEXT QUARTER FOCUS: ββ
β β β’ React upgrade (TD-003) ββ
β β β’ Service split phase 1 (TD-006) ββ
β β ββ
β β HEALTH: Improving from Red β Yellow ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Preventing New Debt
Debt Prevention
AVOIDING NEW TECHNICAL DEBT:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β CODE REVIEW GATES: β
β ββββββββββββββββββ β
β β Tests for new code β
β β No copied/duplicated code β
β β Follows existing patterns β
β β No TODO without ticket β
β β
β DEFINITION OF DONE: β
β βββββββββββββββββββ β
β β Tests written and passing β
β β Documentation updated β
β β No new linter warnings β
β β Peer reviewed β
β β
β TECH DEBT DISCUSSION: β
β βββββββββββββββββββββ β
β When taking shortcuts: β
β 1. Team agrees it's necessary β
β 2. Document WHY β
β 3. Create debt ticket immediately β
β 4. Set expected payback date β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β DELIBERATE DEBT DECISION: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β SHORTCUT APPROVAL ββ
β β ββ
β β STORY: STORY-890 ββ
β β ββ
β β SHORTCUT: ββ
β β Skip unit tests to make launch deadline ββ
β β ββ
β β JUSTIFICATION: ββ
β β Critical launch date, will add tests next sprint ββ
β β ββ
β β DEBT TICKET CREATED: TD-015 ββ
β β PLANNED PAYBACK: Sprint 16 ββ
β β ββ
β β APPROVED BY: @tech-lead ββ
β β DATE: Jan 15, 2025 ββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Making debt deliberate and visible β
β prevents hidden accumulation. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ