Recently, I’m hearing a lot about continuous delivery, and even continuous deployment. Both are fantastic, and I’ve seen many places reap the benefits of such models.
Continuous delivery is when the practices used by the team enable the software to be reliably released at anytime. Every change has the confidence to go straight out to production.
Continuous Deployment is the next step, where the software is not only ready to be released, but is released out to users. Every commit out to production.
I see software which is released less often, because it is risky, and often, a scary proposition. The objective of both practices is to make deployment a “non-issue”.
If it hurts, do it more often
Left out of the conversations is the value it provides. Not from a technical perspective, but from the business. After all, that is the reason we do anything. For provide value / benefit to the business.
Our objective is to minimise our time to market, which is a another topic in its own right due to the many factors that impact that metric.
We need to ensure our software development keeps its agility, and enables quickly responding to feedback.
The main reason why these models are so beneficial is because packaging, regression testing, deploying, waiting and so on, are non-value adding activities. These activities can be mundane, tedious, and should be automated if possible.
Business should not be waiting for Technology, Technology should be waiting for the Business.
As we all strive for that goal, these two models take great strides in getting closer to the mark.
If we find resistance for these two approaches, you will most likely be dealing with software which has lost its agility, or struggling for quality, and we all know what happens in that case…