At its core, Continuous Delivery is about delivering features to customers as soon as they are ready. This rapid delivery has several benefits for both business and development. First and foremost it lets us adapt continuously and rapidly to customer feedback and changes in the market—it enables us to gain insights from real usage. As a result we have a better basis for knowing if we are building the right product.
A lot have been said and written about the technical aspects of continuous delivery—why it reduces overhead for development by automating everything that can be automated. This blog post, however, will focus on three core business aspects of delivering continuously.
Smaller deltas of change means lower risk
We call the amount of changes between two deploys the delta of change. Reducing this delta means that less can go wrong when a new version is deployed. Why? Both from a technical and business perspective it is far easier to pinpoint the problem when there are less changes in the product. By delivering fewer changes at a time we can be more certain that we are actually delivering the right thing.
When releasing fewer changes it is also easier for business to understand the impact of each additional change. This enable us to learn more about customers and not waste money building features that don't add value.
Also, fewer changes means that we can deploy more often. And deploying more often means shorter feedback loops. And shorter feedback loops means we will learn more about customers.
Shorter feedback loops
There is a feedback loop between the team developing the product and the customers using it: The development and delivery of the product, the customers usage of it, the interpretation of this usage, and the final decision regarding possible changes to the product and the strategy. Delivering continuously shortens the feedback loop, which enables us to learn more—and more rapidly—about our customers and making the correct decisions faster.
The developers of a product often have several layers between them and the customer. Smaller code changes delivered often means shorter feedback loops, which will increase the developers understanding of what the customer wants. This improvement can lead to improved decisions and technical innovations that are more aligned with what the user needs. The more you know your customers, the easier it is to build the right thing.
By continuously delivering small changes rapidly you can be more responsive with regards to customers, the market, and your competitors. Increased responsiveness means that you are able to adapt faster to customer needs and market changes. For example, the faster you are able to deliver on a customer request the happier and more satisfied the customer will be.
Why keep a feature that is already developed and ready for production just lay around waiting to be deployed in a year? Or for that matter, in a month or a week? A feature only adds value after being delivered to the customers, if not it's only inventory waste.