Skip to main content
Back to Blog
team velocitydeveloper productivityDORA metricsengineering workflowsmall product teams

How to Improve Team Velocity: A Practical Playbook

Greg Ceccarelli
Greg Ceccarelli
·16 min read

The most popular advice on how to improve team velocity starts in the wrong place: estimate more accurately, tighten the sprint, and help developers code faster. None of that fixes a ticket waiting for someone to decide what the customer should receive. Start by measuring elapsed time from an agreed decision to reliable production delivery, then shorten the queues inside that interval.

Table of Contents

Why Story Points Hide Your Real Slowdown

Say a seed-stage team closes its planned work, but customers still haven't received the feature. Product hasn't settled an edge case, design approval lives in a chat thread, and the release owner is waiting for everything else to be ready. The sprint looks successful while delivery stands still.

Story points describe estimated effort, complexity, and uncertainty. They don't measure elapsed customer waiting time. Hours worked have the same limitation: an engineer can stay busy while a valuable change sits untouched in a review queue.

Points can still help a team discuss scope. The mistake is turning them into a management target, then interpreting a higher total as proof that customers receive useful changes sooner.

Measure the whole delivery interval

Use decision-to-production time as the operating view of team velocity. Start when the team agrees on the intended outcome, and stop when the change works reliably in production. Keep discovery separate so exploratory ideas don't look like overdue delivery commitments.

Within that interval, track delivery flow and reliability together:

  • Change lead time measures commit to successful production deployment.
  • Deployment frequency records how often changes reach production.
  • Change failure rate captures the share of deployments that cause production failures.
  • Recovery time measures how quickly service returns after a failed deployment.

These are the delivery measures defined in Google Cloud's 2024 DORA report. A team that produces changes quickly but repeatedly breaks production isn't sustainably fast.

Faster coding can leave the queue untouched

In the 2024 Stack Overflow Developer Survey, 76% of developers surveyed were using or planning to use AI tools, and 81% identified increased productivity as the leading benefit. That interest makes delivery measurement more important, not less.

An AI assistant can draft an implementation while the team still disagrees about permissions, error handling, or the acceptance criteria. More generated code won't settle those decisions.

Practical rule: A faster coder doesn't automatically make a faster team. Check what the work is waiting for before optimizing how quickly someone writes it.

For your next delivery review, trace recently shipped tickets through idea, decision, first commit, merge, and deployment. Those timestamps expose waits that sprint totals can't explain.

Measure Lead Time and Run a Four-Week Test

Delivery benchmarks orient the discussion. They do not grade individual engineers. Architecture, deployment boundaries, and operational responsibilities change what a useful comparison looks like.

Establish a delivery-flow baseline

DORA performance bands for delivery flow

MetricEliteHigh performingLow performing
Deployment frequencyOn demandDaily to weeklyMonthly to twice yearly
Lead time for changesUnder one dayOne day to one weekOne to six months
Change failure rateAbout 5%Set from your own measured rateSet from your own measured rate
Time to recover from failureUnder one hourUnder one dayOne week to one month

Don't force the team into a single label. A group can release frequently and still recover slowly, which calls for a different intervention than infrequent releases with dependable recovery.

DORA's metrics guide separates throughput measures from stability measures and explains that speed and stability generally improve together. Keep those paired. Faster merging that hides a worse production outcome is not a velocity gain. The number that matters is elapsed time from decision to production, with failure rate held steady.

Run one controlled experiment

Four weeks is an initial test, not a promise that every bottleneck will resolve inside the window.

  1. Pull repository and deployment history. Build a baseline for ordinary delivery work and connect commits to successful deployments. Keep incident fixes identifiable so urgent work doesn't obscure the feature-delivery pattern.

  2. Calculate median and upper-tail lead time. Use the median for a typical change and p75 for the slower portion of the distribution. Averages can make a queue look healthier or worse because of unusually large changes.

  3. Find the longest avoidable wait. Separate review waiting, test execution, release approval, and actual implementation. Use this cycle-time reduction guide to organize the diagnosis around stages instead of individual activity.

  4. Write a paired success condition. Set the lead-time improvement before changing the workflow, with no deterioration in failure rate or recovery time. Don't move the target after seeing the result.

  5. Change one operating rule. Try a review owner, a smaller release batch, or an automated approval check. Hold other conditions reasonably stable and record exceptions such as incidents or staff absence.

  6. Keep, revise, or retire the change. Retain it when the improvement persists without weaker reliability. If the sample is small, extend the observation period instead of declaring victory.

Stoa tracks open questions the team can't settle during a meeting. That can put an upstream blocker beside the delivery experiment. To start, create a Space, invite a teammate, and run the next meeting in it. No setup or configuration is required.

Don't pad deployment counts with trivial changes or rank teams running different architectures. Start the baseline on Monday, assign an experiment owner, and agree who can change the workflow when evidence warrants it.

Find the Idle Time Between Decision and First Commit

For recently shipped tickets, record the idea, decision, first-commit, merge, and deploy dates. Compare the gaps, then inspect the longest one rather than assuming implementation consumed most of the calendar.

The decision-to-first-commit interval deserves its own measurement. A ticket can look ready while the engineer is still hunting for the approved design, confirming an assumption, or waiting for the person authorized to resolve a contradiction.

A diagram illustrating the idle time between a team making a decision and the first code commit.

Make the implementation handoff explicit

LinearB's engineering benchmark guidance identifies upfront planning and context-sharing as contributors to faster cycle times. Apply that principle with a lightweight decision record, not another specification nobody maintains.

  1. Log the decision, date, owner, and reason. Explain the chosen outcome and the important alternative the team rejected, so an implementer doesn't reopen the same debate without new evidence.

  2. Put assumptions and open questions in a shared artifact. Link the relevant conversation, but write the current answer directly in the shared artifact so nobody has to reconstruct agreement from messages.

  3. Define an observable acceptance signal. Describe what a user or operator must be able to do when the change is complete, which gives reviewers something firmer than an impression of completeness.

  4. Circulate the brief before the review. Give design, product, and engineering time to inspect dependencies and arrive with questions rather than first reactions.

  5. Assign an owner and deadline to every unresolved question. State whether each question blocks implementation, because a cosmetic uncertainty shouldn't hold up an independent backend change.

  6. Review decision-to-first-commit time regularly. Record why paused items waited, so you can distinguish deliberate scheduling from missing context or unavailable decision-makers.

For client-facing design work, use PinDrop to collect client feedback before approval, then record which feedback was accepted and who authorized the final direction. Feedback collection and approval are different events; confusing them leaves engineers implementing a design that stakeholders still consider provisional.

Diagnose clarity before capacity

Don't turn readiness into an exhaustive document gate. Capture enough context to execute the next independently useful change, and let the team discover details that require implementation.

If decision-to-commit waiting regularly exceeds implementation time, investigate clarity and ownership before adding engineering capacity. A bottleneck identification process helps distinguish missing decisions from an engineer who has more committed work than they can start.

Work that nobody can begin isn't ready, even if the ticket sits in a column called Ready.

Start with the most recently shipped tickets. Time the gaps, identify who could have resolved the longest wait, and change that handoff before rewriting the whole delivery process.

Cut Planning Waste and Cap Work in Progress

A crowded board makes everyone look occupied. It also gives reviewers, designers, and release owners more competing requests than they can resolve promptly.

The useful planning question isn't how much work the team can start. It's which work the team can finish without creating another queue.

A checklist titled Cut Planning Waste and Cap Work in Progress detailing three team productivity improvement steps.

Keep the backlog actionable

Separate commitments from possibilities. A backlog that mixes customer promises, speculative ideas, stale bug reports, and implementation-ready tasks forces the team to repeat prioritization every time someone needs work.

At planning, archive inactive tickets unless someone can explain their current relevance. Archiving should preserve the context and allow reopening; it shouldn't become an argument about deleting useful history.

Define ready to start with a short checklist: acceptance criteria, the relevant design or specification, and named dependencies. If a dependency is unresolved, identify its owner and explain whether the team can safely build around it.

Planning capacity should come from observed completions and known availability, not the fullest sprint anyone remembers. Reserve room for operational work explicitly. Otherwise, routine fixes become evidence that the team failed a plan that never allowed for them.

Limit active work across the whole workflow

Set a conservative work-in-progress limit based on the people available to move items through implementation, review, and release. Count work waiting for review as active work; excluding it makes the board look clear while reviewers carry an invisible backlog.

When the limit is reached, don't start another ticket just because an engineer has finished coding. Help review, test, document, or unblock an existing item.

The trade-off is real. An engineer may temporarily wait for the right collaboration opportunity rather than immediately taking another feature. That can feel inefficient if you measure utilization, but it gives the team a chance to finish work before accumulating more obligations.

Use this operational checklist:

  • Maintain a ready-to-start list. Keep only work the team could begin without chasing a missing decision.
  • Make the WIP rule visible. Define which columns count and who can authorize an exception.
  • Review aging items weekly. Ask what prevents completion, not whether the assignee has been busy.
  • Reserve capacity for support. Make the cost visible in the plan rather than absorbing it through overtime.
  • Finish before replenishing. Close, split, or deliberately pause an active item before adding another.

A workflow-streamlining review should remove duplicate approvals and redundant status work, not merely rename columns. Preserve checks that catch meaningful risks, and remove steps whose output nobody uses.

Board rule: When work stops moving, reduce competing commitments before asking people to multitask harder.

Engineering Practices That Shorten the Path to Production

Once an engineer has executable context, the delivery path should provide fast feedback and a safe route to production. Adopt practices in the order that makes the next change safer, rather than attempting a tooling overhaul all at once.

A diverse team of software developers collaborating in an office while reviewing code tests on monitors.

Build a dependable integration path

Start with build and test feedback. Inspect the pipeline's critical path, cache dependencies, isolate flaky tests, and run independent checks in parallel. Keep a fast verification path for routine changes while retaining broader integration coverage where the risk requires it.

The test suite must be trustworthy, not merely quick. If engineers habitually rerun a failing job until it passes, they can't distinguish a broken change from a broken signal.

Then shorten branch lifetimes. Move toward trunk-based development with frequent integration into main. Split changes into compatible increments so a feature doesn't need to remain isolated until every screen and backend behavior is complete.

Use feature flags where they separate deployment from exposure. Default unfinished behavior off and test both relevant paths. Give each temporary flag an owner and removal condition, or the team will inherit a growing set of combinations nobody confidently understands.

Make review and release routine

Keep pull requests focused on a single understandable change. Separate mechanical formatting, refactoring, and behavioral changes when that improves reviewability. A small diff isn't automatically safe, but a reviewer should be able to explain its purpose without reconstructing an entire feature.

Assign a rotating review owner with an explicit backup. The owner's responsibility is to get an appropriate reviewer engaged, not approve unfamiliar code just to clear the queue.

Automate deployment with a tested recovery path. Promote the same verified artifact, check production health, and define how to roll back or disable the change. RapidNative's explanation of how continuous deployment accelerates delivery provides useful context for replacing a calendar-based release gate with repeatable verification.

Some changes still deserve deliberate coordination, particularly irreversible migrations or sensitive permission changes. Automate the routine path so those exceptions receive attention rather than disappearing into a standing approval meeting.

Hold AI-generated code to the same ownership standard

DORA's 2025 review describes AI as an amplifier of a team's underlying strengths and weaknesses. More code generation doesn't compensate for unreliable tests or weak review.

Require authors to disclose substantial AI assistance in the pull request and identify anything they haven't fully validated. Reviewers should scrutinize unfamiliar dependencies, security assumptions, failure handling, and tests that merely reproduce the implementation's mistaken assumptions.

The author remains responsible for explaining the change. Keep an engineering practice when production delivery becomes quicker without weaker failure and recovery outcomes, not because the repository contains more activity.

Diagnose Velocity Drops and Protect Focus Time

Start a slowdown investigation with an interruption audit, not a discussion about motivation. Classify incoming work as planned delivery, production support, clarification, or nonurgent requests, and record the source, urgency, current task, and effort needed to resume.

A software-development interruption study examines the cognitive costs of task switching and interruptions. Don't measure only lost typing time: engineers also need to reconstruct code context, reread review discussions, and recover the reasoning behind an unfinished change.

Route requests without cutting off communication

Give urgent incidents a rotating intake owner with backup. Batch nonurgent questions into office hours or an asynchronous queue, and protect agreed blocks for implementation and review.

Keep a clearly marked incident channel so a focus policy doesn't delay real emergencies. Compare delivery time, review waiting, and rework across periods with different interruption loads, separating operational work from feature delivery.

In Stack Overflow's 2024 Developer Survey findings, 53% of developers agreed or strongly agreed that waiting for answers disrupts their workflow. Protected time and accessible answers must work together; blocking messages while leaving decisions undocumented just replaces interruptions with waiting.

Match the symptom to a first check

Velocity symptoms, likely causes and first checks

SymptomLikely causeFirst check
Reviews wait more than a dayPull requests too large or no review ownerCount changed lines and review wait per pull request
Tickets sit in Ready for weeksBacklog never prunedInspect ticket age and whether readiness criteria still hold
Many items started, few finishedWork in progress above team capacityCompare items started with items finished each week
Deploys bunch up at week's endLong-lived branches or a manual release gateMeasure branch age at merge
Lead time rises after a reorganization or hireUnclear decision ownersCount open questions with no owner
Engineers report constant context switchingUnplanned requests reach engineers directlyLog interruption minutes per engineer

Treat these as hypotheses, not verdicts. Large pull requests might reflect tangled architecture rather than careless authors, and an apparent review delay might stem from a missing product decision.

Check whether people can surface problems safely

The 2021 Accelerate State of DevOps report found that teams with a generative culture, where members felt included and that they belonged, were half as likely to experience burnout during the pandemic. That finding doesn't prove psychological safety alone causes faster delivery, but it supports protecting the human capacity delivery depends on.

Ask whether engineers can challenge scope, report uncertainty, and disclose defects without being punished for slowing the plan. Run blameless failure reviews and give concerns a named resolution owner.

When velocity drops, check interruption load and blocked decisions before blaming the team. Hidden waiting won't improve because someone applies more pressure.


SpecStory, Inc. builds Stoa, a multiplayer AI workspace that turns live product conversations into executable context and code. Visit SpecStory, Inc. to capture decisions and unresolved questions with your team, then use that shared context to shorten the gap between agreement and implementation.

Newsletter

Get new posts in your inbox

Bring your team together to build better products. Fresh takes on remote collaboration and AI-driven development.