In software product development, continuous delivery is the successful execution of continuous deployment. Whereas continuous deployment aims to reduce the amount of time between writing code and pushing it live, continuous delivery is the process by which these efforts successfully and sustainably reach the end user.
In the early days of software development, waterfall was all the rage. Then in the 90’s, parts of what is now broadly referred to as “agile software development” were practiced piecemeal by software practitioners who wanted to get products out in the world faster and make improvements incrementally. For many years, agile principles and frameworks have been the status quo for software development practices.
However, in recent years, concepts like DevOps, Continuous Delivery, and Continuous Deployment have emerged as contenders for “the next big thing” in software development. While each of them has its roots in agile principles, it’s important to understand the nuances of these new software development approaches–especially in the context of their implications on your role as a product manager.
Today’s article will get you up to speed on Continuous Delivery. We hope to help you understand what continuous delivery means to modern product managers.
What is Continuous Delivery?
Broadly defined, continuous delivery refers to a software organization’s ability to quickly and easily push product updates to customers.These updates can include anything from new features, to bug fixes, to new interface designs, or even different types of tests. Continuous delivery means you have defined processes and protocol for pushing code live at a moment’s notice.
But, don’t get continuous delivery mixed up with continuous deployment. While the two terms are sometimes correlated, they are often confused.
- Continuous delivery is the ability to deploy changes to software frequently and is a prerequisite for practicing continuous deployment.
- Continuous deployment refers to the action of deploying changes frequently and automatically. Often this means they deploy multiple updates every day.
“Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery,” Martin Fowler explains.
And like most things in the software world, there’s a defined framework for CD. “While the details of Continuous Delivery may vary from company to company and product to product, the process normally includes planning the change, development, testing, merging the code, building the code, testing again, releasing, and validating the change. Ideally, most of this process is automated and reproducible to increase speed and decrease waste such as bugs,” explains Adam Zolyak.
Principles of Continuous Delivery
According to Jez Humble, there are five guiding principles behind continuous delivery:
- Build quality in
- Work in small batches
- Computers perform repetitive tasks, people solve problems
- Relentlessly pursue continuous improvement
- Everyone is responsible
Many of these principles align closely of those outlined in The Agile Manifesto. And in many ways, continuous delivery and its related concepts are adaptations of agile.
Benefits of Continuous Delivery
For product managers in particular, continuous delivery comes with many benefits. Perhaps the most obvious benefit of continuous delivery is that it can increase the cadence of feedback loops.
Think about it: every time you deliver updates, you have a new opportunity for feedback from users and customers. So when you deliver updates more frequently, you have more opportunities to get this valuable insight.
In addition to the benefits of increased cadence, shortened feedback loops provided through continuous delivery can help reduce risk. In software development in particular, moving forward with an initiative in the midst of uncertainty can be daunting. Engineering resources are generally not cheap. However, in theory, if you can increase the cadence of feedback from customers, you can reduce your risk of building the wrong thing. Furthermore, continuous delivery provides more frequent opportunities for course correction than what you’d see in environments with longer development cycles.
Meanwhile, the same technologies enabling us to practice continuous delivery also enable competitors to do the same. While this practice may have been a competitive advantage a few years ago, it’s now nearly a requirement for staying competitive in today’s fast-paced world.