Engineering velocity is one of the key elements to deliver valuable and innovative ideas to the customers. That is speed, but with a purposeful direction.
Lead time is defined as: the amount of time spent between the moment work begins (on a feature, product or project) until it’s delivered to the end customer.
In the following sections we look at how short lead times make you competitive and generate real value by exploring the impacts of continuous delivery and squads.
How do you achieve a shorter lead time?
We analyze two ways with which you can reduce the lead time within your software delivery pipeline: continuous delivery and a team-based organizational structure.
1. Adopting continuous delivery
Continuous delivery refers to the process building, testing and delivering software improvements to existing code or user environments in smaller increments with the help of automated tools. Software can be released at any time, and the team will always be ready to deliver to production.
Continuous delivery has two main advantages: 1) features and bug fixes are being released more frequently, and 2) code releases are smaller.
Release code more often
The problem of releasing big periodic updates is:
- Outdated releases: Released features reach the market already outdated. This increases the risk of competitors outperforming your organization to market.
- Inflexibility to market changes: It becomes close to impossible to react to changes in your business environment.
This doesn’t mean that a significant new feature can’t occupy your team for weeks or months. But it doesn’t need to be delivered all at once. High-performance software organizations structure big chunks into meaningful small tasks. The benefit? They can then be delivered the same day.
Embrace smaller releases
Big releases tend to blow up even though rigorous testing has been done beforehand. When you combine multiple features you exponentially increase the potential for errors. This increases the lead time of your team or organization, made worse by that code reviews become more tedious, time consuming and costly.
If you adopt continuous delivery, you start shipping each feature separately, which means your pull request size will automatically decrease. Smaller releases are less complex than bigger ones, meaning they have less potential for trouble. And if something fails, you know the where, when and what.
How does continuous delivery reduce lead time?
- Reduces time in individual stages of the pipeline: Continuous delivery makes it easier to test and find bugs early on due to the reduced complexity. It also helps you avoid the biggest delay in your software delivery process: having finished features waiting for their integration in the next big release.
- Allows confident deployment: Since features are split, pull requests become smaller. This reduces the complexity of each PR and creates fewer merge conflicts.
- Reduces deployment risk and interdependence: When continuous delivery is used, the update of the codebase isn’t limited by its weakest link. This reduces the risk during deployment.
2. Incorporate mission-based teams
Many software engineering organizations have adopted mission-based team structures. These are also known as pods or squads. Traditionally, engineering teams worked strictly within their specific roles. Nowadays, squads focus on one aspect of the company (e.g. a feature, a customer group or a project.)
Mission-based teams allow for decision making to be pushed towards those who are directly involved with the problem they are solving. Allowing engineers to work more independently, and make decisions faster.
Working in mission-based teams will reduce time spent in the individual stages of the software delivery pipeline. For example, in the review stage everyone is familiar with the purpose of the code. And in the work in progress stage, less productivity and focus is lost by not sparsely multitasking.
"Keeping the ratio of WIP to contributors below 1.0 helps us decrease cycle time by minimizing multitasking." - SoundCloud
How can Athenian help you decrease your lead time?
Athenian’s main goal is to help you measure and decrease your lead time. It is crucial to understand how your lead time is broken down because it will help you identify the areas of the software delivery pipeline that require attention.
At Athenian we measure lead time as the average time for pull requests to go from the initial commit until they are released. It sums the time pull requests spend in all the stages of the software delivery pipeline.
Using Athenian you can quickly check and analyze live key metrics, compare it to past performance and decide how to move forward.
Decrease your bottlenecks:
- Identify pull requests that cause bottlenecks before they become a costly problem to your organization by visualizing with our Software Delivery Dashboard the biggest pull requests that slow down the delivery pipeline as a whole.
- Analyze the impact of pull request size on your end-to-end delivery.
- Evaluate the amount of code bypassing pull requests in the review process.