Skip to main content
CodePulse
All Stories
For Predictability6 min read

The Predictability Problem

58% sprint completion despite working overtime. The problem wasn't estimation - it was invisible queues. How one team hit 89% by fixing flow.

Ashley Russell, Founder, CodePulsePublished November 28, 2025Updated January 22, 2026
Sprint Completion
58%89%
+31 points
Cycle Time (P50)
5.2 days1.9 days
63% faster
WIP per Developer
4.7 PRs2.1 PRs
55% reduction
Flow Efficiency
31%68%
+37 points

Executive Summary

A 12-engineer team at CloudSync Solutions consistently delivered only 58% of sprint commitments despite working extended hours. Analysis of 847 pull requests over 90 days revealed the root cause wasn't estimation accuracy - it was work-in-progress overload creating invisible queues. After implementing WIP limits and flow-based practices, sprint completion rose to 89% within 8 weeks.

Background

Company: CloudSync Solutions, a B2B data integration platform serving mid-market enterprises.

Team: 12 engineers across 3 squads (Platform, Integrations, Core API)

Initial Problem: Sprint completion rate averaging 58% over the previous 6 months

Management Hypothesis: Poor estimation skills and unclear requirements

Trigger for Analysis: Q3 planning failure where only 4 of 11 committed features shipped

Methodology

The analysis examined:

  • Data Source: 847 pull requests over 90 days (July-September 2024)
  • Metrics Analyzed: Cycle time distribution, WIP counts, time-in-state breakdown, review latency, context switch indicators
  • Benchmarks: DORA metrics (2023 State of DevOps Report), internal historical baselines
  • Sample Size: All merged PRs from 12 developers, excluding bot-generated PRs

Key Finding #1: Excessive Work-in-Progress

MetricObservedRecommendedGap
Avg Open PRs per Developer4.71-2+135%
Max Concurrent PRs (any dev)93+200%
PRs Open > 5 Days34%<10%+240%

Each engineer was simultaneously juggling nearly 5 pieces of work. The cognitive load was unsustainable. Context switching between 4-5 different features meant no single item received focused attention.

High WIP doesn't mean high productivity - it means high wait times.

Key Finding #2: Cycle Time Variance

PercentileObservedDORA EliteGap
P50 (Median)5.2 days1.5 days+247%
P758.1 days3.0 days+170%
P9512.8 days7.0 days+83%

The high variance (P95 = 2.5x P50) made sprint planning nearly impossible. A story estimated at 3 days could take anywhere from 2 to 13 days to actually ship. This unpredictability cascaded through every sprint.

Key Finding #3: Flow Efficiency

Flow Efficiency: 31% (vs. 60-70% target)

Breaking down where time was spent:

State% of Cycle TimeAvg Duration
Active Development31%1.6 days
Waiting for Review42%2.2 days
In Review12%0.6 days
Waiting for Merge/Deploy15%0.8 days

Engineers spent less than a third of cycle time actually writing code. The rest was waiting - waiting for review, waiting for feedback, waiting for deployment slots.

Root Cause Analysis

The data revealed a classic queuing theory problem, described by Little's Law: Lead Time = WIP / Throughput

With high WIP and constrained review capacity, queues formed everywhere. The team wasn't slow - they were stuck in traffic they couldn't see.

Why traditional metrics missed it:

  • Jira tracked story status, not PR status - work appeared "in progress" but was actually waiting
  • Sprint velocity showed points completed, not how long they took
  • Standups surfaced blockers reactively, not systemically

Intervention

Based on the analysis, the team implemented three changes:

1. WIP Limits (Week 1)

  • Maximum 2 open PRs per developer at any time
  • New work can't start until existing PRs are merged or closed
  • CodePulse alerts when any developer exceeds limit

2. Review-First Culture (Week 2)

  • Daily "review hour" at 9 AM - no new code until reviews cleared
  • Review SLA: First review within 4 hours during business hours
  • Rotating review champion per squad

3. Smaller PRs (Week 3)

  • Target PR size: <300 lines of changes
  • Larger features split into stacked PRs
  • Automated alerts for PRs exceeding 500 lines

Results: Week-by-Week Progression

WeekCycle Time (P50)WIP/DevSprint CompletionFlow Efficiency
0 (baseline)5.2 days4.758%31%
24.1 days3.267%41%
42.8 days2.478%54%
62.2 days2.284%61%
81.9 days2.189%68%

3-Month Sustained Results

Follow-up analysis confirmed the improvements were durable:

MetricBaseline3-Month AverageImprovement
Sprint Completion58%88%+30 points
Cycle Time (P50)5.2 days2.0 days-62%
Cycle Time (P95)12.8 days5.1 days-60%
WIP per Developer4.72.0-57%
Flow Efficiency31%66%+35 points

Business Impact

  • Time recovered: ~18 engineer-hours/week previously lost to context switching
  • Planning accuracy: Quarterly commitments now hit at 85%+ vs. previous 40%
  • Developer satisfaction: Internal survey scores improved from 6.2 to 8.1 (out of 10)
  • Reduced overtime: Average weekly hours dropped from 48 to 42 with no productivity loss

Key Takeaways

1. Measure flow, not just output. Sprint velocity and story points don't reveal where work gets stuck. Cycle time and WIP expose the queues.

2. High WIP is a symptom, not a virtue. Many concurrent tasks feels productive but creates exponential delays. Limiting WIP increases throughput.

3. Predictability requires visibility. You can't estimate accurately when work spends 70% of its time in invisible queues. Fix the queues first, then calibrate estimates.

The Lesson

"Sprint predictability isn't about better estimation - it's about reducing the invisible queues where work gets stuck."

About CloudSync Solutions

A B2B data integration platform serving mid-market enterprises across finance, healthcare, and retail. Founded in 2020, they've grown to 45 employees with 12 engineers.

Names and some details have been changed to protect confidentiality. Metrics are representative of actual improvements.

What's hiding in your GitHub data?

Every engineering organization has invisible bottlenecks, hidden risks, and unrecognized performers. Find yours in minutes.

Prefer a walkthrough? Talk to sales