Rebuilding a Dev Team's Delivery Engine
A Provider of SaaS Marketing Services · 6-Person Dev Team
The Situation
A 6-person development team at a SaaS marketing services provider was working on a legacy .NET platform with no structured sprint process. The team had no baseline for capacity, no visibility into velocity, and was constantly buried in unplanned work.
Beyond the process gaps, deeper systemic issues compounded the problem:
- • No true product management — reactive task assignment, not strategic prioritization
- • Data integrity bugs generating a constant stream of operational cleanup work
- • No sprint planning process or capacity awareness
- • Significant tech debt across the legacy .NET codebase
Phase 1: Build the Foundation
The first priority was establishing a predictable sprint process:
- ✓ Capacity-based planning — sprints scoped to actual team availability
- ✓ Proper story scoping — teaching the team what a right-sized story looks like: clear acceptance criteria, vertical slices through the stack, completable within a sprint
- ✓ Velocity and injection tracking — 3-sprint rolling averages and unplanned work measurement
Phase 2: Go Deeper
With the sprint process stable, the next phase tackled root causes:
- ✓ True product management — proper backlog grooming, story refinement, and strategic prioritization
- ✓ Root-cause bug fixes — targeting data integrity bugs that were generating constant cleanup injections, eliminating them at the source
- ✓ Reformed dev standards — new development patterns, practices, and AI-assisted workflows
The Results: 6 Sprints of Data
Injection Under Control
Unplanned work was drowning the team. In the first two sprints, injected work exceeded what was planned — a sign that the process around the team was broken. A combination of product management reform and targeted bug fixes that eliminated faulty data at the source drove injection down dramatically:
Injection as % of Committed Points
Bug fixes eliminated faulty data at the source, removing the need for constant data cleanup injections.
Capacity Visibility Grew 3.5x
As the process matured and the team built confidence, sprint commitments grew from 29 points to 101 points in five sprints. This isn't the team working harder — it's the planning process accurately reflecting what the team can deliver.
Feature Ratio Increased
With data cleanup work declining as root-cause fixes took hold, the team shifted toward product value:
Exposing the Real Constraint
Once the dev team was delivering predictably, the bottleneck shifted. The data made it undeniable:
UAT Backlog Growth (Points Awaiting Validation)
61 points of completed dev work sitting in UAT — nearly half a sprint's output — with no one testing it. Some items had been waiting for validation for over 55 days. The dev team delivered the work. The organization hasn't validated it.
This is the pattern: when you fix the dev team, you expose the constraints that were always there but hidden behind slower delivery. In this case, UAT processes depend on business users carving out time from their day jobs to test. That worked when the dev team was delivering a trickle. It breaks when the team is delivering a flood.
Key Takeaway
The team didn't change. The people didn't change. The systems changed. Capacity-based planning, right-sized stories, root-cause bug fixes, and true product management transformed the same team from no process to outpacing the rest of the organization. The next challenge is organizational: building UAT processes that can keep up with a high-performing dev team.