Section650

Writing

TopicDelivery
Reading9 min

What Sprint Carryover Is Actually Telling an Engineering Team

Carryover is a symptom, not a diagnosis. The same number can mean bad estimates, hidden dependencies, an unreliable system or a leadership team that keeps changing its mind, and each one needs a different fix.

By Ka Lun Chan · Delivery / Leadership / Engineering judgment

Carryover is a symptom, not a diagnosis

Every sprint ends with a comparison: what the team said it would finish, and what it actually finished. The gap between the two is carryover.

Sprint carryover, also called spillover, is work a team committed to in a sprint that isn’t finished when the sprint ends, so it moves into the next one. On its own, it only tells you that the plan and the result didn’t match. Why they didn’t match is what tells you what to fix.

The usual reaction to carryover is some version of three things: estimate better, commit to less, or push harder. Sometimes one of those is right. Often it isn’t, because nobody has asked why the work didn’t finish.

In When Everything Is a Priority, Nothing Is, I wrote that when work keeps carrying over, I want to know the reason before I conclude anything about how fast engineers are delivering. This is the longer version: what each reason looks like, what it’s telling you, and what actually helps.

Is sprint carryover bad?

Not by itself. Some carryover is normal for a team doing work with real uncertainty. It becomes a problem when it’s persistent, when the same items carry over sprint after sprint, or when nobody can explain why it’s happening.

A team that never carries anything over isn’t necessarily healthy. Sometimes it’s a team that has learned to commit to less than it can do, or to pad every estimate, because missing a commitment gets punished. The number looks great. Delivery doesn’t improve.

So I look at three things instead of a single number:

  • The trend. Is carryover steady, growing or shrinking over several sprints?
  • The age. The same item carrying over three sprints in a row tells you far more than a dozen items that slipped by a day.
  • The cause. What actually stopped the work from finishing.

The third one matters most.

What causes sprint carryover?

When I look at why work didn’t finish, it usually comes down to one of six causes. They look the same on a burndown chart. They have very different fixes.

The work was bigger than we thought

This is the cause most people assume, and it’s real. A story that looked like two days takes five. A ticket stays “almost done” for most of the sprint. One piece of work quietly turns into three.

What it’s telling you is usually about how the work was shaped before it started. It was too big to estimate well, or the unknowns inside it weren’t named. Better estimation helps less than you’d think. Smaller slices help more. So does spiking the riskiest unknown before committing to the whole thing, and agreeing what “done” means before the work starts. It’s why I put so much weight on turning ambiguity into executable work.

The requirements changed during the sprint

The work started, and then what “done” meant changed underneath it. A stakeholder saw a demo and asked for something different. An edge case turned into a product decision nobody had made yet.

Sometimes that’s healthy: the team learned something, and the plan should change. Sometimes it means the work entered the sprint before it was ready. The fix for the second is a lightweight bar for “ready” and keeping discovery separate from delivery. The fix for the first is treating the change as a new decision, with its cost made visible, instead of letting it silently stretch the original commitment.

Another team blocked us

The work was waiting on an API, a review, an environment, a decision or a deploy from somewhere else. The team was busy, just not on the thing it committed to.

Occasional blockers mean dependencies weren’t visible at planning. Surfacing them earlier and sequencing around them usually fixes that. Constant blockers mean something bigger: the boundaries between teams are probably in the wrong place. If one team can’t finish its work without another team shipping at the same time, that’s the same coupling I look for when I decide whether something should actually be a microservice. It’s an ownership problem dressed up as a scheduling problem.

Production support consumed the capacity

Incidents, bugs, customer escalations and security fixes arrived during the sprint, and they had to win. Usually they should.

What this tells you depends on whether it’s a surprise. If the team spends a similar share of every sprint on unplanned work, the problem is the plan, not the interruptions. Planning at full feature capacity when a fifth of the team’s time has historically gone to support guarantees carryover. I wrote more about separating interruptions from strategy. If the unplanned share keeps growing, that’s a different signal. Something in the system is getting less reliable, and it needs investment, not a better plan.

We found unexpected complexity

The work was understood and scoped sensibly, and then the system turned out to be harder to change than anyone expected. Missing tests. An undocumented dependency. Code only one person understands.

When that happens once, it’s normal. When it keeps happening in the same parts of the system, carryover is pointing at technical debt that’s charging interest. That’s useful information. It tells you where paying down debt would speed up the roadmap, which is how I prefer to balance delivery and technical debt.

The priority changed halfway through

The team was pulled onto something else, and the original work was left partly done. On the board, it looks exactly like slow delivery.

This one has nothing to do with estimation or engineering speed. It’s a decision-making problem, and the fix belongs to whoever changed the priority: say what stops, say what moves, and update the dates. That’s the whole argument of my piece on leading through constant priority changes. If priority changes are behind a large share of your carryover, no amount of better estimation will fix delivery.

Reading carryover by cause

Side by side, the six causes point to very different fixes.

Fig. 655-1 What each cause of carryover is telling you
CauseWhat it’s telling youWhat tends to help
UnderestimatedThe work was too big, or its unknowns weren’t namedSmaller slices, spike the unknown first, agree on done
Requirements changedWork started before it was ready, or the team learned somethingA bar for ready; treat real learning as a new decision
Blocked by another teamHidden dependencies, or team boundaries in the wrong placeSurface dependencies at planning; fix ownership if it’s constant
Production supportPlanning ignores unplanned work, or reliability is slippingPlan around real capacity; invest if the share keeps growing
Unexpected complexityTechnical debt in specific parts of the systemPay down debt where carryover keeps showing up
Priority changedDecision-making, not engineeringMake the tradeoff explicit and move the dates

Notice that “push the team harder” doesn’t appear anywhere in the last column.

Record the reason, not just the number

Most teams already track carryover in some form. Jira will show you what moved from one sprint to the next. What it won’t show you is why.

The simplest fix I know is to record one primary reason for every item that carries over, at the end of the sprint, while people still remember. A few rules make it work:

  1. Use a short, fixed list. The six causes above, plus “other,” is enough. Free text is hard to add up.
  2. Pick one primary reason per item. Most items have several. Choose the one that mattered most.
  3. Ask the people who did the work. They know why it didn’t finish. A manager guessing afterward often doesn’t.
  4. Look across several sprints. One sprint is noise. A pattern over a quarter is information.
  5. Keep it blameless. The goal is to find the system problem, not a person to blame. If it turns into blame, people will pick the safest reason instead of the true one.

Within a few sprints, a pattern tends to show up. That’s where to start.

Carryover isn’t a performance metric

Sprint carryover shouldn’t be used to judge individual engineers or to compare teams. It reflects planning, dependencies, interruptions and decisions as much as effort. Once it becomes a target, teams learn to commit to less and pad estimates until the number looks fine.

Comparing carryover across teams is especially misleading. Teams estimate differently, carry different amounts of support work, and depend on different parts of the organization. The team with more carryover might be the one doing the harder, more uncertain work.

Used well, carryover is a diagnostic for a team and its leaders. Used as a scorecard, it stops telling you anything true.

The fixes that miss

Each of these is the right answer for one cause and the wrong answer for the rest.

Commit to less
Helps when the team is overcommitting. When blockers or priority changes are the cause, it hides the problem behind a smaller plan.
Estimate harder
Helps with underestimated work. It does nothing for blockers, interruptions or changing priorities.
Make sprints longer
Bigger batches take longer to finish and cost more to redirect when something changes.
Push the team harder
Longer hours mean more lost context, more mistakes and more rework. It might clear one sprint. It won’t change the pattern.

This is why the cause matters more than the number. The wrong fix can make the number look better while delivery stays exactly the same.

Report carryover with its causes

How carryover gets reported shapes the conversation that follows. “We missed our sprint commitment again” invites one question: why is the team slow?

Compare that with this:

“Five items carried over: two because priorities changed mid-sprint, two because of incident load, and one we underestimated.”

Now leadership can see which problems are theirs to solve. Two of the five came from decisions above the team. Two came from reliability. Only one is an estimation problem. That’s a much more useful conversation, and a much fairer one.

It’s also the first thing I’d want to look at if a company brought me in through Yippify to help with unpredictable delivery. Before estimates, before velocity, before any process change: what is the carryover actually telling us?

How do you reduce sprint carryover?

Find the cause before you fix anything. Record a reason for every item that carries over, look for the pattern across several sprints, fix the biggest cause first, and plan around the capacity the team actually has after support work.

In practice, that usually means a few targeted changes rather than a process overhaul:

  • Slice work smaller, so less of it is in flight when something goes wrong. It’s the same reason I improve execution with small, safe changes.
  • Reserve capacity for the unplanned work the team actually gets.
  • Surface dependencies at planning, and fix ownership where blockers are constant.
  • Make every mid-sprint priority change come with a stated tradeoff.
  • Pay down debt where complexity keeps surprising the team.

Carryover rarely goes to zero, and it doesn’t need to. The goal is carryover you understand, trending in the right direction, with causes that the team and its leadership are both working on.

Short answers

What is sprint carryover?

Sprint carryover, also called spillover, is work a team committed to in a sprint that isn’t finished when the sprint ends, so it moves into the next sprint. It shows that the plan and the result didn’t match; the reason behind it shows what to fix.

Is sprint carryover bad?

Not by itself. Some carryover is normal when work involves real uncertainty. It becomes a problem when it’s persistent, when the same items carry over sprint after sprint, or when nobody can explain why it’s happening.

What causes sprint carryover?

Most carryover comes from six causes: underestimated work, requirements that changed mid-sprint, blockers from other teams, production support consuming capacity, unexpected technical complexity, and priorities that changed halfway through the sprint.

How do you reduce sprint carryover?

Find the cause first. Record one reason for every carried-over item, look for the pattern across several sprints, fix the biggest cause, and plan around the capacity the team actually has after bugs, incidents and escalations.

Should sprint carryover be used as a performance metric?

No. Carryover reflects planning, dependencies, interruptions and leadership decisions as much as effort. Used to judge engineers or compare teams, it pushes people to commit to less and pad estimates instead of improving delivery.

The question I ask about carryover

Carryover is one of the most honest signals an engineering team produces. Sprint after sprint, it shows where the system around the team is getting in the way. So I don’t start by asking, “Why didn’t the team finish?”

I ask, “What stopped the work from finishing?”

The answers point to different owners and different fixes, and that’s exactly what makes them useful.

Talk through what your carryover is telling you Work with me through Yippify