Speed is the key to delivering innovative ideas. Unfortunately, a lot of organizations struggle with long release cycles. They aren’t able to bring new ideas to market fast enough, users wait months for the simplest bug fixes, and features are already outdated when they are released.
Imagine rolling out features as soon as they’re ready, instead. Users receive rapid bug fixes, and new features hit the market right on time to have a big impact. Instead of long release cycles, you release continuously. If you want to achieve continuous deployment, there’s one metric you should watch: lead time.
Lead time is a concept from lean manufacturing. It’s a metric that can help to deliver new solutions faster. Wikipedia defines lead time as “the latency (delay) between the initiation and execution of a process,” and that delay is what business leaders fear. They want to be able to roll out new ideas as fast as possible: They want a short lead time.
Release More Often
Having a release every couple of months can easily leave you with a year-long lead time. That means that all your brand new features are more than a year old when they reach the users. Reacting on changes in your business environment becomes close to impossible. Competitors with shorter lead times will be able to outperform you.
If your organization is able to move toward continuous delivery, your lead time will go down. You cut out the biggest delays in your delivery process: finished features waiting for the next big release. Instead of a few big releases each year, release every feature as soon as it’s ready.
Automate Your Deployment Pipeline
To be able to release every feature as soon as it’s ready, you need to automate your deployment pipeline. Continuous integration will make sure that no automated tests are broken by the latest feature.
Infrastructure automation will help to ensure that the development, test, and production environments are identical. Only if they’re identical can you be sure that what works in the test environment will work in production.
Release automation is necessary to push out the latest feature to the test or production environments. To be able to know how your new feature behaves in production, you need application management.
Ensure the Quality of Each Release
“But releasing so often is madness,” you might say. “How on earth can I ensure the quality of each one?” Adopt the notion of the application always being production ready. Ensure that you have a releasable product at any time. Developers must be aware that their code may be shipped to production right after they commit it. To make sure they don’t break your application, you need to have automated tests and error-detection mechanisms in place. That way, you can make sure that no bug goes unnoticed.
Embrace Smaller Releases
Releasing every feature as soon as it’s ready leads to smaller releases, and smaller releases are less complex than bigger ones. Less complexity means less potential for trouble. In short, the quality of your releases will go up.
How often have you seen big releases blow up, even though you applied rigorous testing beforehand? Combining a multiple changes increases the chances for errors proportionally, but you can avoid that over-proportional growth of failure opportunities. With continuous delivery, you ship each feature separately. If something breaks, you know exactly which feature introduced the failure.
Focus on Lead Time
Focusing on lead time will help you measure the advantages of continuous delivery. By introducing continuous delivery, you’ll end up with faster and smaller releases. Faster releases will benefit your users, because they can realize value faster, and smaller releases will increase the quality of your product because of the lower complexity of each release. You’ll see your lead time go down, and that is a good sign for your users.