Features vs Maintenance | 70/30 Capacity Allocation
Allocate 70-80% to features and 20-30% to maintenance using GitScrum's sprint planning. Labels track work types. Reports show allocation across categories for sustainable delivery.
5 min read
Every development team faces the tension between shipping new features and maintaining existing systems. Too much focus on features leads to mounting technical debt; too much maintenance means falling behind competitors. GitScrum helps teams find the right balance.
The Balance Challenge
| All Features | All Maintenance |
|---|---|
| Fast initial progress | Clean codebase |
| Growing tech debt | No new value delivered |
| Slower over time | Stakeholder frustration |
| More incidents | May lose market position |
| Developer frustration | Developer boredom |
Capacity Allocation Strategy
Recommended Splits
ALLOCATION MODELS
βββββββββββββββββ
HEALTHY SYSTEM (Low debt, few incidents):
βββ Features: 80%
βββ Maintenance: 10%
βββ Tech Debt: 5%
βββ Innovation: 5%
MODERATE DEBT:
βββ Features: 70%
βββ Maintenance: 15%
βββ Tech Debt: 15%
HIGH DEBT / MANY INCIDENTS:
βββ Features: 50%
βββ Maintenance: 25%
βββ Tech Debt: 25%
CRISIS MODE:
βββ Features: 20% (critical only)
βββ Maintenance: 40%
βββ Tech Debt: 40%
Sprint Capacity Planning
SPRINT 12 CAPACITY (40 points)
ββββββββββββββββββββββββββββββ
FEATURES (70% = 28 points)
ββββββββββββββββββββββββββ
#123 User authentication 8 pts
#124 Dashboard widgets 8 pts
#125 API endpoints 6 pts
#126 Mobile navigation 6 pts
MAINTENANCE (15% = 6 points)
ββββββββββββββββββββββββββββ
#127 Upgrade dependencies 3 pts
#128 Fix flaky tests 3 pts
TECH DEBT (15% = 6 points)
ββββββββββββββββββββββββββ
#129 Refactor auth module 4 pts
#130 Add monitoring 2 pts
Labeling for Visibility
Work Type Labels
LABEL CONFIGURATION
βββββββββββββββββββ
WORK TYPE:
βββ type:feature (green) - New functionality
βββ type:maintenance (blue) - Keep systems running
βββ type:tech-debt (orange) - Code quality improvements
βββ type:bug (red) - Defect fixes
βββ type:innovation (purple) - Research, spikes
PRIORITY:
βββ priority:critical - Do first
βββ priority:high - This sprint
βββ priority:medium - This quarter
βββ priority:low - When possible
Tracking Allocation
SPRINT ALLOCATION REPORT
ββββββββββββββββββββββββ
Sprint 11 (Completed)
βββββββββββββββββββββ
Feature: 32 pts (76%) ββββββββββββββββββββ
Maintenance: 5 pts (12%) ββββββββββββββββββββ
Tech Debt: 5 pts (12%) ββββββββββββββββββββ
Sprint 12 (Current)
βββββββββββββββββββ
Feature: 28 pts (70%) ββββββββββββββββββββ
Maintenance: 6 pts (15%) ββββββββββββββββββββ
Tech Debt: 6 pts (15%) ββββββββββββββββββββ
Trend: β Increasing maintenance allocation (healthy)
Making Maintenance Visible
Business Value of Maintenance
MAINTENANCE VALUE TRACKING
ββββββββββββββββββββββββββ
DEPENDENCY UPGRADE (Sprint 12)
ββββββββββββββββββββββββββββββ
Work: Upgrade Node.js 18 β 20
Time: 3 points
Value:
βββ Security patches included
βββ 15% performance improvement
βββ LTS support until 2025
βββ Unblocks new library features
Risk if Skipped:
βββ Known vulnerability CVE-2024-xxxx
βββ Falling behind ecosystem
βββ Harder upgrade later
FLAKY TEST FIX (Sprint 12)
ββββββββββββββββββββββββββ
Work: Fix 5 intermittent test failures
Time: 3 points
Value:
βββ CI pipeline reliability
βββ Faster feedback loops
βββ Developer confidence in tests
βββ Reduced false positive investigations
Risk if Skipped:
βββ Ignoring real failures
βββ Slower CI (more retries)
βββ Developer frustration
Protecting Maintenance Time
Sprint Planning Rituals
PROTECTED ALLOCATION PROCESS
ββββββββββββββββββββββββββββ
BEFORE SPRINT PLANNING:
βββββββββββββββββββββββ
1. Calculate total capacity
2. Reserve maintenance % FIRST
3. Remaining goes to features
4. Maintenance is non-negotiable
EXAMPLE:
ββββββββ
Total: 40 points
Reserved: 8 points maintenance (20%)
Available for features: 32 points
Stakeholder request: 36 points of features
Response: "We can do 32 points of features.
8 points reserved for system health."
Rotation Approaches
MAINTENANCE ROTATION
ββββββββββββββββββββ
OPTION 1: Dedicated Sprint
ββββββββββββββββββββββββββ
Every 4th sprint: 50% maintenance focus
Pros: Deep work, significant improvements
Cons: Feature velocity dip visible
OPTION 2: Per-Sprint Allocation
βββββββββββββββββββββββββββββββ
Every sprint: 20% maintenance
Pros: Consistent progress, smooth velocity
Cons: May not tackle large items
OPTION 3: Maintenance Friday
ββββββββββββββββββββββββββββ
Every Friday: Maintenance only
Pros: Predictable, easy to protect
Cons: Fragmented week
OPTION 4: Rotation Assignment
βββββββββββββββββββββββββββββ
One person per sprint: maintenance duty
Pros: Deep focus, clear ownership
Cons: Context switching for individual
Metrics for Balance
Health Indicators
SYSTEM HEALTH DASHBOARD
βββββββββββββββββββββββ
INCIDENTS:
βββ This month: 3 (target: <5) β
βββ Last month: 7
βββ Trend: Improving β
MEAN TIME TO RECOVERY:
βββ This month: 45 min (target: <60) β
βββ Last month: 72 min
DEPLOYMENT FREQUENCY:
βββ This week: 8 (target: >5) β
βββ Lead time: 2 hours β
DEPENDENCY AGE:
βββ Up to date: 85%
βββ Minor behind: 10%
βββ Major behind: 5% β οΈ
TECH DEBT RATIO:
βββ Debt tasks: 23
βββ Total tasks: 156
βββ Ratio: 15% (healthy)
Best Practices
For Sustainable Balance
Anti-Patterns
AVOID THESE:
β "We'll do maintenance later"
β Maintenance only after incidents
β Hidden maintenance (calling it features)
β Same person always does maintenance
β No tracking of maintenance allocation
β 100% feature sprints