10 min read • Guide 789 of 877
Sprint Anti-patterns to Avoid
Sprints can go wrong in predictable ways. GitScrum helps teams spot anti-patterns early through metrics and workflow visibility.
Planning Anti-patterns
Over-commitment
OVER-COMMITMENT:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ Team commits to more than they can deliver │
│ Sprint ends with significant incomplete work │
│ │
│ SYMPTOMS: │
│ • Burndown never reaches zero │
│ • Stories carry over every sprint │
│ • Team stressed at sprint end │
│ • Quality suffers │
│ │
│ BURNDOWN SIGNATURE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 30│● ││
│ │ │ ╲ ││
│ │ 20│ ╲▲ ││
│ │ │ ╲ ▲▲ ││
│ │ 10│ ╲ ▲▲▲▲▲▲▲▲▲ ││
│ │ │ ╲ ← Never reaches zero ││
│ │ 0│──────● ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ROOT CAUSES: │
│ • PO pressure to commit more │
│ • Optimistic estimation │
│ • Not accounting for overhead (meetings, reviews) │
│ • Not tracking actual capacity │
│ │
│ FIXES: │
│ ✅ Use historical velocity, not wishes │
│ ✅ Factor in time off, holidays, meetings │
│ ✅ Leave buffer (10-15% for unknowns) │
│ ✅ PO prioritizes, team commits │
│ ✅ "No" is a valid answer │
└─────────────────────────────────────────────────────────────┘
Insufficient Refinement
UNPREPARED BACKLOG:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ Stories pulled into sprint without proper refinement │
│ Team discovers requirements during development │
│ │
│ SYMPTOMS: │
│ • Long planning meetings │
│ • "What does this even mean?" │
│ • Scope changes mid-sprint │
│ • Developers blocked waiting for clarification │
│ │
│ EXAMPLE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ STORY-456: Improve reporting ││
│ │ ││
│ │ Description: Make reports better ││
│ │ Acceptance criteria: ??? ││
│ │ Estimate: ??? ││
│ │ ││
│ │ Day 3: "Wait, which reports?" ││
│ │ Day 5: "The PM wants charts too" ││
│ │ Day 8: "Actually, can we add export?" ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ROOT CAUSES: │
│ • Skipping or rushing refinement │
│ • PO not available for questions │
│ • No Definition of Ready │
│ │
│ FIXES: │
│ ✅ Mandatory refinement sessions │
│ ✅ Definition of Ready enforced │
│ ✅ Stories refined 1-2 sprints ahead │
│ ✅ Team can reject unrefined stories │
│ ✅ Clear acceptance criteria required │
└─────────────────────────────────────────────────────────────┘
Execution Anti-patterns
Scope Creep
MID-SPRINT SCOPE CHANGES:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ Work added during sprint without removing anything │
│ Committed scope keeps growing │
│ │
│ SYMPTOMS: │
│ • "Just one more thing" │
│ • Burnup shows scope increasing │
│ • Sprint commitment meaningless │
│ • Team never feels done │
│ │
│ BURNUP SIGNATURE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 40│ ═══════════ ││
│ │ 35│ ═════ ← Scope keeps growing ││
│ │ 30│═══════════════ ││
│ │ 25│ ▲ ││
│ │ 20│ ▲ ││
│ │ 15│ ▲ ││
│ │ 10│ ▲ ││
│ │ 5│ ▲ ││
│ │ 0│▲ ││
│ │ Work can't keep up with scope ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ROOT CAUSES: │
│ • PO can't say no to stakeholders │
│ • "Urgent" requests bypass process │
│ • No clear sprint commitment │
│ │
│ FIXES: │
│ ✅ Sprint commitment is sacred │
│ ✅ New work waits for next sprint │
│ ✅ If must add, remove equal work │
│ ✅ Emergency process for real emergencies │
│ ✅ SM protects sprint boundary │
└─────────────────────────────────────────────────────────────┘
Mini-Waterfalls
WATERFALL WITHIN SPRINT:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ All coding happens early, all testing at end │
│ Sequential instead of parallel work │
│ │
│ SYMPTOMS: │
│ • QA overloaded at sprint end │
│ • Bugs found too late to fix │
│ • "Done" stories pile up for testing │
│ • Burndown flat then drops suddenly │
│ │
│ TIMELINE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Day 1 2 3 4 5 6 7 8 9 10 ││
│ │ ──────────────────────────────────── ││
│ │ Dev ████████████████████░░░░░░ ││
│ │ QA ░░░░░░░░░░░░░░░░░░░░████████ ← Crunch! ││
│ │ Done ░░░░░░░░░░░░░░░░░░░░░░░░░███ ││
│ │ ││
│ │ QA gets everything last 2 days ││
│ │ Bugs found too late ││
│ │ Quality or deadline suffers ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ IDEAL: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Day 1 2 3 4 5 6 7 8 9 10 ││
│ │ ──────────────────────────────────── ││
│ │ Dev ████░░████░░████░░████░░░░░░ ││
│ │ QA ░░░░████░░████░░████░░████░░ ← Steady flow ││
│ │ Done ░░░░░░██░░██░░██░░██░░██████ ││
│ │ ││
│ │ Continuous flow of work ││
│ │ Early bug detection ││
│ │ Steady completion ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ FIXES: │
│ ✅ Slice stories smaller │
│ ✅ Dev + QA work together │
│ ✅ Testing starts day 2-3, not day 8 │
│ ✅ WIP limits prevent pile-up │
│ ✅ "Done" means tested │
└─────────────────────────────────────────────────────────────┘
Ceremony Anti-patterns
Useless Standups
STANDUP THEATER:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ Standups are status reports, not collaboration │
│ No value, just routine │
│ │
│ SYMPTOMS: │
│ • People tune out during others' updates │
│ • "Yesterday I worked on X. Today X. No blockers." │
│ • 30+ minutes for 5 people │
│ • Team would prefer to skip it │
│ │
│ WHAT IT SOUNDS LIKE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ @dev1: "Yesterday I worked on the login. Today ││
│ │ I'll continue working on the login. ││
│ │ No blockers." ││
│ │ ││
│ │ @dev2: "Yesterday I did code review. Today I'll ││
│ │ work on the dashboard. No blockers." ││
│ │ ││
│ │ [Everyone checking phones] ││
│ │ ││
│ │ @dev3: "Yesterday I worked on tests. Today I'll ││
│ │ continue with tests. No blockers." ││
│ │ ││
│ │ [30 minutes later...] ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ FIXES: │
│ ✅ Walk the board instead │
│ ✅ Focus on blockers only │
│ ✅ "What do you need from others?" │
│ ✅ Try async standups │
│ ✅ Timebox strictly (15 min max) │
└─────────────────────────────────────────────────────────────┘
Skipping Retrospectives
NO-RETRO SYNDROME:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ Team skips retros or they're ineffective │
│ Same problems repeat sprint after sprint │
│ │
│ SYMPTOMS: │
│ • "We don't have time for retro" │
│ • "Same issues every sprint" │
│ • Action items never completed │
│ • Team feels unheard │
│ │
│ THE CYCLE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ┌──────────────────────────────────────┐ ││
│ │ │ │ ││
│ │ ▼ │ ││
│ │ ┌─────────┐ ┌─────────┐ ┌───────────┐│ ││
│ │ │ Sprint │───→│ Skip │───→│ Same ││ ││
│ │ │ Problems│ │ Retro │ │ Problems │├──┐ ││
│ │ └─────────┘ └─────────┘ └───────────┘│ │ ││
│ │ ▲ │ │ ││
│ │ └──────────────────────────────────────┘ │ ││
│ │ │ ││
│ │ Never improves ←──────────────────────────┘ ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ROOT CAUSES: │
│ • "Too busy" (actually too busy not to) │
│ • Action items not tracked │
│ • Retros feel useless │
│ • Unsafe to speak up │
│ │
│ FIXES: │
│ ✅ Retro is mandatory (non-negotiable) │
│ ✅ Track action items in GitScrum │
│ ✅ Review last retro's actions first │
│ ✅ Limit to 2-3 actions per retro │
│ ✅ Assign owners and due dates │
│ ✅ Create safe environment │
└─────────────────────────────────────────────────────────────┘
Team Anti-patterns
Siloed Work
ISOLATED WORK:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ Each person works on their own stories │
│ No collaboration or knowledge sharing │
│ │
│ SYMPTOMS: │
│ • "That's not my story" │
│ • Bus factor = 1 for each area │
│ • No code reviews or pairing │
│ • Blocked when person is out │
│ │
│ BOARD PATTERN: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ IN PROGRESS ││
│ │ ──────────── ││
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ││
│ │ │ Story │ │ Story │ │ Story │ │ Story │ ││
│ │ │ Alex │ │ Jordan │ │ Pat │ │ Sam │ ││
│ │ │ │ │ │ │ │ │ │ ││
│ │ │ (only │ │ (only │ │ (only │ │ (only │ ││
│ │ │ Alex) │ │ Jordan)│ │ Pat) │ │ Sam) │ ││
│ │ └────────┘ └────────┘ └────────┘ └────────┘ ││
│ │ ││
│ │ No pairing, no shared ownership ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ROOT CAUSES: │
│ • Individual performance metrics │
│ • Specialization encouraged │
│ • "Faster alone than together" mindset │
│ │
│ FIXES: │
│ ✅ Swarming on high-priority items │
│ ✅ Pair programming encouraged │
│ ✅ Code reviews required │
│ ✅ Team metrics, not individual │
│ ✅ Cross-training built into capacity │
└─────────────────────────────────────────────────────────────┘
Hero Culture
HERO SYNDROME:
┌─────────────────────────────────────────────────────────────┐
│ │
│ THE PATTERN: │
│ One person saves the sprint repeatedly │
│ Unsustainable and risky │
│ │
│ SYMPTOMS: │
│ • "Thank god Alex stayed late" │
│ • Sprint always "saved" at the last minute │
│ • One person does disproportionate work │
│ • Team depends on hero │
│ │
│ THE REALITY: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ If Alex is the hero every sprint: ││
│ │ ││
│ │ • Alex will burn out ││
│ │ • Others won't learn ││
│ │ • Bus factor is 1 ││
│ │ • Problems get hidden ││
│ │ • Team doesn't improve ││
│ │ ││
│ │ The "hero" often enables the dysfunction ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ ROOT CAUSES: │
│ • Over-commitment needs saving │
│ • Hero rewarded, problems not addressed │
│ • Fear of missing sprint commitment │
│ │
│ FIXES: │
│ ✅ Commit to realistic scope │
│ ✅ It's OK to not complete sprint │
│ ✅ Address why rescue was needed │
│ ✅ Distribute work more evenly │
│ ✅ Celebrate team, not individuals │
└─────────────────────────────────────────────────────────────┘