GitScrum / Docs
All Best Practices

Technical Debt Documentation | Track and Prioritize

Document technical debt with impact, cost, and risk assessments. GitScrum tracks debt items in backlogs with labels, severity levels, and custom fields.

7 min read

Technical debt accumulates silently, slowing development until teams can't ignore it. Documentation makes debt visible, quantifiable, and actionable. Well-documented debt enables informed trade-offs between paying it down and shipping features.

Documentation Elements

ElementPurposeExample
DescriptionWhat is the debtLegacy auth system
LocationWhere it lives/src/auth/*.js
ImpactHow it hurts+2h per feature
CostEffort to fix3 sprints
RiskWhat could happenSecurity breach

Debt Documentation Format

Standard Template

TECHNICAL DEBT ITEM TEMPLATE
════════════════════════════

TITLE:
─────────────────────────────────────
Clear, concise name
"Legacy authentication system"
"Monolithic test suite"
"Inconsistent API responses"

DESCRIPTION:
─────────────────────────────────────
What is the debt?
Why does it exist?
When was it introduced?

Example:
"Authentication was built quickly for MVP.
Uses outdated bcrypt version, no OAuth,
session management is custom-built.
Introduced: 2021 Q2, 3 developers ago."

LOCATION:
─────────────────────────────────────
Which files/services/modules?
β”œβ”€β”€ /src/auth/
β”œβ”€β”€ /src/middleware/session.js
β”œβ”€β”€ /src/controllers/login.js
β”œβ”€β”€ Related: /tests/auth/*.test.js
└── Lines affected: ~2000

IMPACT:
─────────────────────────────────────
How does it slow us down?
β”œβ”€β”€ New auth features take +2 days
β”œβ”€β”€ Onboarding: 1 week to understand
β”œβ”€β”€ Security reviews flag it every time
β”œβ”€β”€ CI runs 15 min longer
└── Quantify where possible

COST TO FIX:
─────────────────────────────────────
What would remediation take?
β”œβ”€β”€ Estimated effort: 3 sprints
β”œβ”€β”€ Team members: 2 developers
β”œβ”€β”€ External: Security review $5K
β”œβ”€β”€ Risk during migration: Medium
└── Downtime: 2 hours planned

RISK IF IGNORED:
─────────────────────────────────────
What could go wrong?
β”œβ”€β”€ Security: Vulnerability exploitation
β”œβ”€β”€ Scalability: Won't handle growth
β”œβ”€β”€ Team: Key developer leaves
β”œβ”€β”€ Business: Customer data breach
└── Severity: High / Medium / Low

PRIORITY RECOMMENDATION:
─────────────────────────────────────
β”œβ”€β”€ Urgency: Address in next 2 quarters
β”œβ”€β”€ Compare to other debt items
β”œβ”€β”€ Consider strategic timing
└── Next steps: Include in Q3 planning

Categorizing Debt

Debt Types

TECHNICAL DEBT CATEGORIES
═════════════════════════

CODE QUALITY:
─────────────────────────────────────
β”œβ”€β”€ Duplicate code
β”œβ”€β”€ Complex functions
β”œβ”€β”€ Poor naming
β”œβ”€β”€ Missing abstractions
β”œβ”€β”€ Inconsistent patterns
└── Fix: Refactoring sprints

ARCHITECTURE:
─────────────────────────────────────
β”œβ”€β”€ Monolith needing decomposition
β”œβ”€β”€ Wrong technology choice
β”œβ”€β”€ Missing service boundaries
β”œβ”€β”€ Scaling limitations
β”œβ”€β”€ Tight coupling
└── Fix: Major initiatives

TESTING:
─────────────────────────────────────
β”œβ”€β”€ Missing tests
β”œβ”€β”€ Slow test suite
β”œβ”€β”€ Flaky tests
β”œβ”€β”€ No integration tests
β”œβ”€β”€ Unmaintained tests
└── Fix: Test improvement sprints

INFRASTRUCTURE:
─────────────────────────────────────
β”œβ”€β”€ Outdated dependencies
β”œβ”€β”€ Manual deployment
β”œβ”€β”€ No monitoring
β”œβ”€β”€ Scaling limitations
β”œβ”€β”€ Configuration drift
└── Fix: Infrastructure initiatives

DOCUMENTATION:
─────────────────────────────────────
β”œβ”€β”€ Missing docs
β”œβ”€β”€ Outdated docs
β”œβ”€β”€ No onboarding guides
β”œβ”€β”€ Tribal knowledge
β”œβ”€β”€ No architecture docs
└── Fix: Documentation sprints

TRACKING BY CATEGORY:
─────────────────────────────────────
Label debt items by category.
Enables analysis:
"60% of our debt is testing-related.
Focus test improvement."

Severity Levels

DEBT SEVERITY LEVELS
════════════════════

CRITICAL:
─────────────────────────────────────
β”œβ”€β”€ Active security vulnerability
β”œβ”€β”€ Regular production incidents
β”œβ”€β”€ Blocking business operations
β”œβ”€β”€ Must address immediately
└── Treat as production issue

HIGH:
─────────────────────────────────────
β”œβ”€β”€ Significant development slowdown
β”œβ”€β”€ Frequent bugs in this area
β”œβ”€β”€ Customer-facing quality issues
β”œβ”€β”€ Address within 1-2 quarters
└── Major backlog item

MEDIUM:
─────────────────────────────────────
β”œβ”€β”€ Noticeable friction
β”œβ”€β”€ Occasional issues
β”œβ”€β”€ Onboarding impact
β”œβ”€β”€ Address within 2-4 quarters
└── Regular backlog item

LOW:
─────────────────────────────────────
β”œβ”€β”€ Minor annoyance
β”œβ”€β”€ Best practice gap
β”œβ”€β”€ Nice to improve
β”œβ”€β”€ Address opportunistically
└── When touching that code anyway

Tracking in GitScrum

Debt Backlog

GITSCRUM DEBT TRACKING
══════════════════════

CREATE DEBT BACKLOG:
─────────────────────────────────────
Option 1: Label in main backlog
β”œβ”€β”€ Label: "tech-debt"
β”œβ”€β”€ Filter to view all debt
β”œβ”€β”€ Competes with features
└── Single prioritization

Option 2: Separate debt board
β”œβ”€β”€ Dedicated Tech Debt board
β”œβ”€β”€ Own workflow
β”œβ”€β”€ Link to feature work
└── Separate visibility

RECOMMENDED APPROACH:
─────────────────────────────────────
Main backlog with label:
β”œβ”€β”€ Debt visible alongside features
β”œβ”€β”€ Forces trade-off conversations
β”œβ”€β”€ Doesn't get forgotten
β”œβ”€β”€ PO sees full picture
└── Team capacity includes debt

TASK STRUCTURE:
─────────────────────────────────────
Title: [DEBT] Legacy authentication system
Description: (Use template from above)
Labels: tech-debt, security, high-priority
Story Points: 21 (large effort)
Links: Related feature work
Attachments: Architecture diagrams

CUSTOM FIELDS:
─────────────────────────────────────
β”œβ”€β”€ Debt Category (dropdown)
β”œβ”€β”€ Severity (Critical/High/Med/Low)
β”œβ”€β”€ Estimated Cost (story points)
β”œβ”€β”€ Impact Score (1-10)
β”œβ”€β”€ Date Discovered
└── Enable tracking and reporting

Maintaining Documentation

Keeping Current

DEBT DOCUMENTATION MAINTENANCE
══════════════════════════════

WHEN TO DOCUMENT:
─────────────────────────────────────
β”œβ”€β”€ Sprint retrospective: "What slowed us?"
β”œβ”€β”€ Code review: "This should be fixed"
β”œβ”€β”€ Bug investigation: "Root cause is debt"
β”œβ”€β”€ Onboarding: New person notices issues
β”œβ”€β”€ Architecture review: Problems surface
└── Capture when discovered

REGULAR REVIEW:
─────────────────────────────────────
Quarterly Tech Debt Review:
β”œβ”€β”€ Review all documented debt
β”œβ”€β”€ Still relevant? Update or close
β”œβ”€β”€ Severity changed? Adjust
β”œβ”€β”€ Partially addressed? Update status
β”œβ”€β”€ New debt discovered? Add it
└── Keep documentation fresh

GROOMING DEBT:
─────────────────────────────────────
Include debt in backlog grooming:
β”œβ”€β”€ Review high-priority debt
β”œβ”€β”€ Refine effort estimates
β”œβ”€β”€ Identify opportunities
β”œβ”€β”€ Bundle with related features
└── Keep ready for sprint

CLOSING DEBT:
─────────────────────────────────────
When debt is addressed:
β”œβ”€β”€ Document what was done
β”œβ”€β”€ Note actual effort (vs estimate)
β”œβ”€β”€ Link to PRs/commits
β”œβ”€β”€ Lessons learned
β”œβ”€β”€ Close the item
└── Celebrate!

DEBT METRICS:
─────────────────────────────────────
Track over time:
β”œβ”€β”€ Total debt items
β”œβ”€β”€ New debt added per quarter
β”œβ”€β”€ Debt addressed per quarter
β”œβ”€β”€ Debt by category
β”œβ”€β”€ Age of oldest debt
└── Trend: Getting better or worse?

Communicating Debt

Stakeholder Communication

COMMUNICATING DEBT TO STAKEHOLDERS
══════════════════════════════════

MAKE IT VISIBLE:
─────────────────────────────────────
Dashboard widget:
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Technical Debt Summary            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Total Items: 47                   β”‚
β”‚  Critical: 2  High: 8  Med: 37     β”‚
β”‚  Est. Effort: 89 story points      β”‚
β”‚  Added this Q: 12                  β”‚
β”‚  Addressed this Q: 7               β”‚
β”‚  Trend: ⚠️ Growing                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

SPEAK BUSINESS LANGUAGE:
─────────────────────────────────────
Instead of: "Auth system needs refactoring"

Say: "Our login system is 3 years old.
Each new feature takes 2 extra days.
Security review flagged 4 concerns.
$30K to fix now, vs unknown cost later."

QUANTIFY IMPACT:
─────────────────────────────────────
β”œβ”€β”€ "Losing 10 dev hours per sprint"
β”œβ”€β”€ "3 bugs per month from this code"
β”œβ”€β”€ "Onboarding takes 2 weeks longer"
β”œβ”€β”€ "Can't add feature X without this"
└── Numbers make it real

PROPOSE TRADE-OFFS:
─────────────────────────────────────
"We can either:
A) Ship 2 features this quarter + no debt work
B) Ship 1 feature + address critical debt

Option B reduces ongoing friction
and enables faster Q4."

Let stakeholders make informed choices.

Best Practices

For Debt Documentation

  • Capture when discovered β€” Don't lose it
  • Quantify impact β€” Numbers matter
  • Regular review β€” Keep current
  • Single backlog β€” Compete with features
  • Communicate business impact β€” Speak their language
  • Anti-Patterns

    DEBT DOCUMENTATION MISTAKES:
    βœ— Undocumented debt
    βœ— Vague descriptions
    βœ— No effort estimate
    βœ— Never updating status
    βœ— Hidden from stakeholders
    βœ— Separate from main backlog
    βœ— No prioritization
    βœ— All debt same severity
    

    Related Solutions