8 min read • Guide 792 of 877
WIP Limits and Flow Management
Less work in progress means faster delivery. GitScrum supports WIP limits to help teams finish work before starting new work.
Understanding WIP
The Flow Problem
WHY WIP LIMITS MATTER:
┌─────────────────────────────────────────────────────────────┐
│ │
│ WITHOUT WIP LIMITS: │
│ ─────────────────── │
│ │
│ TO DO IN PROGRESS TESTING DONE │
│ ────── ─────────── ─────── ──── │
│ ┌────┐ ┌────┐ │
│ ┌────┐ │ │ │ │ ┌────┐ ┌────┐ │
│ │ │ │ │ │ │ │ 🕐 │ │ ✅ │ │
│ └────┘ │ │ │ │ │ │ │ │ │
│ ┌────┐ └────┘ └────┘ └────┘ └────┘ │
│ │ │ ┌────┐ ┌────┐ │
│ └────┘ │ │ │ │ │
│ ┌────┐ │ │ │ │ ← 6 in progress │
│ │ │ └────┘ └────┘ ← 1 blocked in testing │
│ └────┘ ┌────┐ ┌────┐ ← Very little done │
│ │ │ │ │ │
│ └────┘ └────┘ │
│ │
│ PROBLEMS: │
│ • Everyone busy, little finishing │
│ • Context switching between tasks │
│ • Testing backed up │
│ • Bottleneck hidden │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ WITH WIP LIMITS: │
│ ───────────────── │
│ │
│ TO DO IN PROGRESS (3) TESTING (2) DONE │
│ ────── ─────────────── ─────────── ──── │
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
│ ┌────┐ │ │ │ │ │ │ │ │ ┌────┐ │
│ │ │ │ │ │ │ │ │ │ │ │ ✅ │ │
│ └────┘ └────┘ └────┘ └────┘ └────┘ │ │ │
│ ┌────┐ ┌────┐ └────┘ │
│ │ │ │ │ 🛑 ┌────┐ │
│ └────┘ └────┘ STOP! │ ✅ │ │
│ ┌────┐ Limit hit │ │ │
│ │ │ Help testing! └────┘ │
│ └────┘ ┌────┐ │
│ │ ✅ │ │
│ └────┘ │
│ │
│ BENEFITS: │
│ • Bottleneck visible (testing) │
│ • Team swarms to help │
│ • More finishing, less starting │
│ • Faster cycle time │
└─────────────────────────────────────────────────────────────┘
Setting WIP Limits
Initial Limits
SETTING WIP LIMITS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ STARTING POINT: │
│ ─────────────── │
│ │
│ Rule of thumb: # of people who work in that stage │
│ │
│ EXAMPLE (Team of 5): │
│ • 3 developers → In Progress limit = 3 │
│ • 1 QA → Testing limit = 1 or 2 │
│ • Code Review → 2-3 items │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ BOARD WITH LIMITS: │
│ │
│ TO DO IN PROGRESS CODE REVIEW TESTING DONE │
│ ────── [Limit: 4] [Limit: 3] [Limit: 2] ──── │
│ │
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
│ │ │ │ 1 │ │ 2 │ │ 1 │ │ 1 │ │ ✅ │ │
│ └────┘ └────┘ └────┘ └────┘ └────┘ └────┘ │
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │
│ │ │ │ 3 │ │ 4 │ │ 2 │ │ 2 │ │ ✅ │ │
│ └────┘ └────┘ └────┘ └────┘ └────┘ └────┘ │
│ ┌────┐ ┌────┐ ⬆️ FULL │
│ │ │ │ 3 │ │
│ └────┘ ⬆️ FULL └────┘ │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ ADJUSTING: │
│ │
│ LIMIT TOO LOW: │
│ • People idle │
│ • Work waiting to enter │
│ → Increase limit │
│ │
│ LIMIT TOO HIGH: │
│ • Still context switching │
│ • Bottlenecks not visible │
│ → Decrease limit │
│ │
│ JUST RIGHT: │
│ • Occasional blocking (expected) │
│ • Team helps each other │
│ • Steady flow to Done │
└─────────────────────────────────────────────────────────────┘
Managing Flow
When Limits Are Hit
RESPONDING TO WIP LIMITS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ WHEN LIMIT IS HIT: │
│ ────────────────── │
│ │
│ WRONG RESPONSE: │
│ ❌ Ignore the limit │
│ ❌ Increase limit to fit more │
│ ❌ Start new work anyway │
│ │
│ RIGHT RESPONSE: │
│ ✅ Stop starting, start finishing │
│ ✅ Help unblock items in later stages │
│ ✅ Pair with someone on their work │
│ ✅ Clear bottleneck │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ SCENARIO: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ IN PROGRESS: 4/4 (FULL) ││
│ │ CODE REVIEW: 3/3 (FULL) ││
│ │ TESTING: 1/2 ││
│ │ ││
│ │ @alex finishes coding, wants to start new task ││
│ │ ││
│ │ OPTIONS: ││
│ │ 1. Do a code review (unblock Review column) ││
│ │ 2. Help with testing (unblock done items) ││
│ │ 3. Pair with @jordan (help them finish faster) ││
│ │ 4. Refactor/improve existing work ││
│ │ 5. Update documentation ││
│ │ ││
│ │ NOT AN OPTION: ││
│ │ ❌ Start a new story anyway ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ "Stop starting, start finishing" │
└─────────────────────────────────────────────────────────────┘
Measuring Flow
FLOW METRICS:
┌─────────────────────────────────────────────────────────────┐
│ │
│ CYCLE TIME: │
│ ─────────── │
│ Time from start to done for one item │
│ │
│ Task Started →→→→→→→→→→→→→→→→→ Task Done │
│ ──────────── ───────── │
│ ←────── Cycle Time ──────→ │
│ │
│ GOAL: Reduce cycle time (faster delivery) │
│ WIP limits help by reducing wait time │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ THROUGHPUT: │
│ ─────────── │
│ Number of items completed per time period │
│ │
│ Week 1: 5 items │
│ Week 2: 7 items │
│ Week 3: 6 items │
│ Average: 6 items/week │
│ │
│ GOAL: Consistent, sustainable throughput │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ CUMULATIVE FLOW DIAGRAM: │
│ │
│ Items│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ Done │
│ │ ░░░░░░░░░░░░░░▓▓▓▓▓▓▓ │
│ │ ████░░░░░░░░░░░░░░▓▓▓ Testing │
│ │ ██████████░░░░░░░░░░░ │
│ │ ███████████████░░░░░░ In Progress │
│ │ █████████████████████ │
│ └──────────────────────────────────── │
│ Week 1 Week 2 Week 3 │
│ │
│ LOOK FOR: │
│ • Widening bands = bottleneck building │
│ • Steady flow = healthy system │
└─────────────────────────────────────────────────────────────┘
Common Challenges
WIP Limit Problems
TROUBLESHOOTING WIP:
┌─────────────────────────────────────────────────────────────┐
│ │
│ "WE KEEP BREAKING LIMITS": │
│ ────────────────────────── │
│ Causes: │
│ • Limits not enforced │
│ • Urgent work bypasses limits │
│ • Limits too aggressive │
│ │
│ Fixes: │
│ • Make limits visible on board │
│ • Call out violations in standup │
│ • Start with higher limits, lower over time │
│ • Emergency lane for truly urgent work │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ "PEOPLE ARE IDLE": │
│ ────────────────── │
│ Causes: │
│ • Limits too low │
│ • Team not cross-functional │
│ • Bottleneck elsewhere │
│ │
│ Fixes: │
│ • Increase limits slightly │
│ • Cross-train team members │
│ • Find bottleneck, add capacity there │
│ • Use idle time for improvement │
│ │
│ ─────────────────────────────────────────────────────────── │
│ │
│ "ONE COLUMN ALWAYS BLOCKED": │
│ ───────────────────────────── │
│ Causes: │
│ • Bottleneck in that stage │
│ • Insufficient capacity │
│ • Too much upstream work │
│ │
│ Fixes: │
│ • Add capacity to bottleneck │
│ • Reduce WIP before bottleneck │
│ • Everyone helps bottleneck stage │
│ • Don't start new work until bottleneck clears │
└─────────────────────────────────────────────────────────────┘