Try free
9 min read Guide 802 of 877

Technical Debt Tracking

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.                             │
└─────────────────────────────────────────────────────────────┘