GitScrum / Docs
All Best Practices

Technical Debt + Effort Points | Quantify Debt Cost

Effort points quantify technical debt alongside features. GitScrum tracks debt points in backlog, allocates 15-25% sprint capacity, and measures debt reduction trends.

6 min read

Technical debt accumulates silently until it cripples delivery velocity. GitScrum's effort point system enables teams to quantify debt items alongside feature work, making the true cost visible to stakeholders and enabling data-driven decisions about when and what to pay down.

Technical Debt Estimation

Debt TypeComplexity FactorsTypical Points
Simple refactorSingle file, well-tested1-2
Module improvementMultiple files, tests needed3-5
Component redesignCross-module, breaking changes8-13
Architecture changeSystem-wide, migration needed13-21+

Debt Tracking with Effort Points

TECHNICAL DEBT INVENTORY

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  DEBT BACKLOG STRUCTURE                         β”‚
β”‚                                                 β”‚
β”‚  Epic: Technical Debt Reduction Q1              β”‚
β”‚                                                 β”‚
β”‚  Category: Database (Total: 34 points)          β”‚
β”‚  β”œβ”€β”€ [5 pts] Migrate to connection pooling      β”‚
β”‚  β”œβ”€β”€ [8 pts] Add missing indexes                β”‚
β”‚  β”œβ”€β”€ [13 pts] Refactor ORM usage                β”‚
β”‚  └── [8 pts] Implement query caching            β”‚
β”‚                                                 β”‚
β”‚  Category: API Layer (Total: 21 points)         β”‚
β”‚  β”œβ”€β”€ [3 pts] Standardize error responses        β”‚
β”‚  β”œβ”€β”€ [5 pts] Add input validation               β”‚
β”‚  β”œβ”€β”€ [8 pts] Implement rate limiting            β”‚
β”‚  └── [5 pts] Add API versioning                 β”‚
β”‚                                                 β”‚
β”‚  Category: Frontend (Total: 26 points)          β”‚
β”‚  β”œβ”€β”€ [8 pts] Replace legacy state management    β”‚
β”‚  β”œβ”€β”€ [5 pts] Extract shared components          β”‚
β”‚  β”œβ”€β”€ [8 pts] Add TypeScript strict mode         β”‚
β”‚  └── [5 pts] Improve bundle splitting           β”‚
β”‚                                                 β”‚
β”‚  TOTAL DEBT BACKLOG: 81 points                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Sprint Capacity Allocation

SPRINT PLANNING WITH DEBT ALLOCATION

TEAM VELOCITY: 40 points/sprint

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  CAPACITY SPLIT:                                β”‚
β”‚                                                 β”‚
β”‚  Feature Development:    28 points (70%)        β”‚
β”‚  β”œβ”€β”€ User stories                               β”‚
β”‚  └── New functionality                          β”‚
β”‚                                                 β”‚
β”‚  Technical Debt:         8 points (20%)         β”‚
β”‚  β”œβ”€β”€ Refactoring                                β”‚
β”‚  β”œβ”€β”€ Test improvements                          β”‚
β”‚  └── Architecture updates                       β”‚
β”‚                                                 β”‚
β”‚  Maintenance:            4 points (10%)         β”‚
β”‚  β”œβ”€β”€ Bug fixes                                  β”‚
β”‚  └── Dependency updates                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

SPRINT DEBT SELECTION CRITERIA:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Priority order:                                β”‚
β”‚  1. Debt blocking planned features              β”‚
β”‚  2. Debt causing production issues              β”‚
β”‚  3. Debt slowing velocity                       β”‚
β”‚  4. Debt with security implications             β”‚
β”‚  5. Quick wins (high impact, low effort)        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Debt Point Estimation Guide

EFFORT POINT ESTIMATION FOR DEBT

1 POINT - Trivial
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Rename for clarity                           β”‚
β”‚  β€’ Add missing null check                       β”‚
β”‚  β€’ Update outdated comment                      β”‚
β”‚  β€’ Fix simple code smell                        β”‚
β”‚  Time: < 2 hours                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

2-3 POINTS - Simple
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Extract method/function                      β”‚
β”‚  β€’ Add missing tests for single function        β”‚
β”‚  β€’ Replace deprecated library call              β”‚
β”‚  β€’ Fix single file code duplication             β”‚
β”‚  Time: 2-4 hours                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5 POINTS - Medium
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Refactor a class/module                      β”‚
β”‚  β€’ Add test coverage for component              β”‚
β”‚  β€’ Replace pattern across multiple files        β”‚
β”‚  β€’ Extract shared utility                       β”‚
β”‚  Time: 1-2 days                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

8 POINTS - Large
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Refactor cross-module dependency             β”‚
β”‚  β€’ Replace deprecated library                   β”‚
β”‚  β€’ Add caching layer                            β”‚
β”‚  β€’ Significant test infrastructure change       β”‚
β”‚  Time: 2-4 days                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

13 POINTS - Very Large
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  β€’ Component architecture redesign              β”‚
β”‚  β€’ State management overhaul                    β”‚
β”‚  β€’ Database schema migration                    β”‚
β”‚  β€’ Major version upgrade (framework)            β”‚
β”‚  Time: 1-2 weeks                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Debt Metrics Dashboard

TECHNICAL DEBT HEALTH

DEBT INVENTORY:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Total debt backlog: 81 points                  β”‚
β”‚  Critical debt: 21 points (26%)                 β”‚
β”‚  High priority: 34 points (42%)                 β”‚
β”‚  Normal priority: 26 points (32%)               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

SPRINT PROGRESS:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Sprint       Added    Removed   Net Change     β”‚
β”‚  ─────────────────────────────────────────────  β”‚
β”‚  Sprint 14    5 pts    8 pts     -3 pts ↓       β”‚
β”‚  Sprint 15    3 pts    10 pts    -7 pts ↓       β”‚
β”‚  Sprint 16    8 pts    6 pts     +2 pts ↑       β”‚
β”‚  Sprint 17    2 pts    12 pts    -10 pts ↓      β”‚
β”‚  ─────────────────────────────────────────────  β”‚
β”‚  Quarter      18 pts   36 pts    -18 pts ↓      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

VELOCITY IMPACT:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Before debt reduction: 32 pts/sprint           β”‚
β”‚  After debt reduction: 40 pts/sprint (+25%)     β”‚
β”‚                                                 β”‚
β”‚  Debt investment: 32 points over 4 sprints      β”‚
β”‚  Velocity gain: 8 pts Γ— 4 sprints = 32 points   β”‚
β”‚  ROI: Already positive, continuing to grow      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Best Practices

  • Estimate debt like features using same point scale
  • Allocate consistent capacity (15-25% per sprint)
  • Track debt backlog separately but visibly
  • Prioritize debt by impact on velocity and quality
  • Celebrate debt reduction as team achievement
  • Measure velocity improvements from debt work
  • Add context to debt items (why it matters)
  • Avoid debt bankruptcy through consistent payments
  • Anti-Patterns

    βœ— Not estimating debt items
    βœ— No dedicated debt capacity
    βœ— Debt only when "we have time"
    βœ— Large debt items without breakdown
    βœ— No tracking of debt added vs removed
    βœ— Treating debt as lesser work
    

    Related Solutions