When a release slips, the usual response is predictable: shorten the deadline, add more work to the sprint, and ask engineering to move faster.
That response confuses urgency with strategy.
A team can increase activity without improving delivery. Developers can open more pull requests, managers can increase sprint commitments, and product leaders can mark more work as urgent. None of that guarantees that a useful, reliable change reaches production sooner.
“Move fast” describes a business need. It does not explain how engineering should respond.
A credible software delivery strategy must answer harder questions:
- What outcome matters most?
- What work should stop?
- Where is delivery actually slowing down?
- Which risks are acceptable?
- Which quality boundaries cannot be crossed?
- How will the organization know whether it became faster?
The central argument is simple: engineering speed is a property of the delivery system, not a personality trait of the people inside it.
“Move Fast” Is Too Vague to Guide Engineering Decisions
The instruction to move fast leaves the most important decisions unresolved.
Does the organization need to release more frequently? Validate a product assumption earlier? Recover from incidents faster? Meet a fixed regulatory deadline? Reduce the time required to onboard customers?
These are different problems.
A team trying to validate demand may need a narrow prototype and limited rollout. A team trying to improve reliability may need better observability and rollback procedures. A team trying to deliver a committed roadmap may need to stop lower-priority work.
Using the same response for every form of urgency usually creates the wrong optimization.
Define the type of speed required
Before changing the engineering process, leaders should identify the result they need.
For example:
- Faster learning: Reduce the time between an idea and evidence from users.
- Faster releases: Reduce the time between completed code and production.
- Faster delivery: Reduce the full time from an approved need to a usable outcome.
- Faster recovery: Reduce the time required to detect and resolve production failures.
- Faster response: Reduce the time needed to react to market, customer, or regulatory changes.
A team may improve one while making another worse.
Releasing more frequently does not guarantee faster learning if nobody measures user behavior. Coding faster does not improve recovery time if the system is difficult to observe. Starting more initiatives does not improve delivery if shared dependencies block all of them.
Make trade-offs explicit
Urgent work usually requires a trade-off. The mistake is pretending that no trade-off exists.
A team may reduce scope while keeping reliability requirements intact. It may accept a temporary manual operation to validate demand before automating it. It may choose a reversible implementation instead of a more elegant long-term design.
Those choices can be responsible.
The irresponsible version is allowing teams to infer that testing, security, maintainability, or operational readiness should be reduced because the date has not changed.
Engineering leaders should state clearly:
- What can be reduced
- What can be deferred
- What must remain unchanged
- Who accepts the resulting risk
Without this, “move fast engineering” becomes an exercise in hidden risk transfer.
Coding Speed Is Not Software Delivery Speed
Engineering organizations often focus on coding because it is visible.
Pull requests can be counted. Tickets can be closed. Story points can be discussed in planning meetings. Waiting is harder to see.
Consider a feature that requires ten working days of implementation but takes eight weeks to reach production.
The remaining time may include:
- Five days waiting for product clarification
- One week waiting for another team’s API
- Four days waiting for code review
- One week waiting for a stable test environment
- Several days waiting for security approval
- One week waiting for a release window
In this example, asking developers to implement the feature 20% faster saves two days. Removing one approval delay may save a week.
That is the difference between local productivity and end-to-end software delivery speed.
Measure where work waits
A useful delivery review should reconstruct the actual path of completed work.
For a small sample of recent features, record:
- When the work was requested
- When it became clear enough to start
- When implementation began
- When the first review was requested
- When review completed
- When testing completed
- When the change became deployable
- When it reached production
- When meaningful feedback became available
The goal is not to create a perfect measurement system. The goal is to find the largest delays.
This often reveals that the main constraint is not engineering capacity. It may be unclear ownership, unavailable environments, centralized approvals, or too many concurrent priorities.
Use velocity metrics carefully
Story points can help a team plan its own work. They are weak evidence of organizational productivity.
A team can increase reported velocity by changing estimation behavior, splitting work differently, or taking on more predictable tasks. None of those necessarily improve customer outcomes.
Engineering leaders should prefer a balanced view that includes:
- Lead time
- Cycle time
- Time waiting for review
- Time blocked by dependencies
- Deployment delay
- Rework
- Release predictability
- Production failure patterns
- Time to restore service
- Evidence of customer or business impact
These metrics should diagnose the system. They should not be used to rank individual developers.
AI Can Accelerate Work and Still Slow Delivery
AI-assisted development changes implementation capacity, but it does not remove the rest of the delivery process.
A team may use AI to generate code, tests, migration scripts, or documentation faster. That can be valuable.
But imagine that the team doubles its pull-request volume while senior review capacity remains unchanged. The review queue grows. Integration conflicts increase. Test environments become busier. More generated code requires architectural validation.
Implementation became faster. Delivery did not.
The correct question is therefore not:
How much code did AI generate?
It is:
Did AI reduce the total time required to deliver a correct, maintainable, production-ready change?
This distinction matters for organizations adopting AI-assisted software development. AI can improve engineering velocity when it reduces a real constraint. It can also move the constraint into review, testing, architecture, security, or production support.
A practical approach is to introduce AI into a specific part of the workflow and measure the effect on the entire path.
For example:
- If AI generates tests faster, did review time fall or rise?
- If AI drafts migrations, did deployment confidence improve?
- If AI creates more pull requests, did lead time decrease?
- If AI supports code review, did defect escape increase?
- If AI helps with debugging, did recovery time improve?
The benefit should be measured at the system level, not only at the point where the tool is used.
What a Software Delivery Strategy Must Contain
A software delivery strategy should turn urgency into a set of operating decisions.
It does not need to be a large transformation document. It needs to define how work will move from an identified need to production feedback.
1. A clear outcome
Every significant initiative should answer:
- What problem are we solving?
- Who is affected?
- What evidence would show improvement?
- What is the smallest valuable result?
- Which assumption is most likely to be wrong?
This prevents teams from delivering a large amount of functionality before discovering that the original assumption was weak.
2. A real priority order
If five initiatives are all called critical, none of them is truly prioritized.
Real prioritization requires leadership to decide:
- Which work receives capacity now
- Which work is paused
- Which work is reduced in scope
- Which commitments are displaced by new urgent work
Adding a new priority without removing an old one is not prioritization. It is queue growth.
3. Limits on concurrent work
Too much work in progress creates context switching, coordination overhead, and dependency queues.
Suppose five initiatives all need the same platform engineer and the same test environment. Starting all five does not increase throughput. It creates five partially completed streams competing for the same constraint.
A more effective decision may be to finish two initiatives before starting the remaining three.
This can feel slower because fewer projects are visibly active. It is often faster because valuable work reaches completion sooner.
4. Smaller delivery units
Large changes delay feedback and increase the cost of failure.
Teams should look for ways to release:
- Thin vertical slices
- Smaller pull requests
- Backward-compatible API changes
- Incremental migrations
- Features behind flags
- Limited-audience rollouts
The objective is not to split work into meaningless technical tasks. Each slice should either deliver value, validate an assumption, or reduce a known risk.
5. Clear decision ownership
Work often waits because nobody knows who can decide.
A delivery strategy should distinguish between:
- Decisions teams can make independently
- Decisions requiring consultation
- Decisions requiring explicit approval
- Decisions that must be escalated immediately
For example, a team may be free to choose an implementation approach within agreed architectural and security boundaries. A change to shared customer data may require broader approval.
This reduces unnecessary escalation without removing governance.
6. Non-negotiable quality boundaries
Teams should not renegotiate basic safety for every deadline.
Typical non-negotiable boundaries may include:
- Authentication and authorization
- Data integrity
- Backward compatibility
- Critical automated tests
- Monitoring and alerting
- Rollback capability
- Regulatory requirements
The exact boundaries depend on the system. A marketing experiment and a payment service should not receive identical treatment.
The principle is to match assurance to risk, reversibility, and impact.
7. A feedback loop
The strategy should define how the organization will learn whether the change worked.
Shipping is not the end of delivery. The team needs evidence.
That may include:
- Adoption
- Conversion
- Reduced operational effort
- Fewer support requests
- Lower failure rates
- Faster processing
- Improved customer completion rates
Without feedback, the organization can become faster at delivering the wrong thing.
How Engineering Teams Move Faster in Practice
The most useful question is not, “How can the team work faster?”
It is:
What causes work to wait, expand, or return?
That question leads to practical interventions.
Reduce work before increasing capacity
Start by listing active initiatives and assigning each one a clear status:
- Continue
- Pause
- Reduce
- Cancel
- Complete before starting new work
This is often more effective than immediately hiring more developers.
Additional engineers help when implementation capacity is the main constraint. They may make matters worse when the bottleneck is review, product clarification, architecture ownership, or deployment.
Hiring into the wrong constraint increases coordination without increasing throughput.
Replace large releases with thin slices
Suppose a team plans a three-month customer onboarding redesign.
Instead of releasing the entire flow at once, it could first release one improved step for a limited customer segment. That may reveal whether the expected drop-off point was correctly identified.
The result informs the rest of the investment.
This is a concrete way to improve delivery speed without sacrificing quality: reduce the size of the decision, not the level of care.
Move routine decisions closer to the team
If every security, architecture, and deployment question requires a committee meeting, work will wait.
Create reusable boundaries:
- Approved implementation patterns
- Standard threat checks
- Defined data classifications
- Deployment templates
- Service ownership rules
- Clear escalation triggers
The team should not need executive involvement for a decision it makes repeatedly.
Automate the path that blocks delivery
Automation should be selected based on delay, not enthusiasm.
If deployments are manual and risky, automate deployment and rollback.
If developers wait days for environments, automate environment creation.
If a slow test suite delays every pull request, improve test execution before adding more coding tools.
If product clarification causes repeated rework, automation is not the first answer. Better decision-making is.
Review the system regularly
Once per month, select a few completed and delayed items and examine:
- Where they waited
- Why they returned for rework
- Which dependencies blocked them
- Which decisions arrived late
- Which controls added value
- Which controls added delay without reducing risk
Then improve the largest current constraint.
Do not launch ten process initiatives at once. The improvement system can suffer from the same excessive work in progress as the delivery system.
How to Move Fast Without Breaking Things
The phrase “move fast without breaking things” is sometimes treated as unrealistic.
It is realistic only when “without breaking things” does not mean eliminating every failure.
Complex systems will fail. The practical goal is to reduce the probability, impact, and recovery cost of failure.
Teams can do this by making changes:
- Smaller
- Easier to observe
- Safer to reverse
- Continuously validated
- Released to limited audiences first
A small change behind a feature flag can be tested with a limited group and disabled quickly. A large tightly coupled release has a wider failure surface and fewer recovery options.
Quality and speed are not automatically aligned. Poorly designed quality gates can create delay without reducing meaningful risk. Weak quality practices can also create incidents and rework that destroy delivery speed.
The engineering task is to apply the right level of assurance to the specific risk.
What Engineering Leaders Should Say Instead
Leaders do not need to remove urgency. They need to make it actionable.
Instead of saying, “Move faster,” ask:
- What is the main constraint on this work?
- What should stop so this becomes the priority?
- What is the smallest valuable release?
- Which assumption should we test first?
- Where is the work waiting?
- Which dependency requires leadership intervention?
- Which risks are reversible?
- Which quality boundaries cannot change?
- How will we know the outcome was achieved?
- What did we learn from the last delayed initiative?
These questions convert pressure into decisions.
They also make accountability clearer. Engineering owns technical execution and risk. Product owns problem clarity and value. Leadership owns priority conflicts, organizational constraints, and accepted trade-offs.
Speed improves when those responsibilities are explicit.
Conclusion: Do Not Ask for Speed Before Finding the Constraint
“Move fast” is a valid expression of urgency. It is not a plan.
A strong software delivery strategy does not begin by asking developers to produce more. It begins by identifying why valuable work is not reaching production sooner.
Sometimes the answer is implementation capacity.
Often it is something else: unclear priorities, too much concurrent work, late decisions, shared dependencies, unstable environments, manual release processes, or feedback that arrives too late.
The practical sequence is straightforward:
- Define the outcome.
- Map the delivery path.
- Find the largest delay.
- Improve that constraint.
- Measure the end-to-end effect.
- Repeat.
Before asking an engineering team to move faster, find the place where the work has stopped moving.
Discussion question: What is the largest source of delay in your delivery system today: implementation, decisions, dependencies, validation, or release?
Top comments (0)