A continuous delivery rhythm is a very popular and important factor in agile software development projects. Most of the development methods (such as SCRUM) use fixed delivery rhythms (so called “iterations”) of two weeks or so.
At the beginning of these iterations, the backlog gets filled with tickets for that iteration. During that iteration, all steps as analysis, planning, development and testing are executed. At the best, all tickets are finished exactly at the end of the iteration.
In most cases, however, the team either has some time left or not all of the tickets are finished at the end of the iteration.
Kanban stops these fixed iteration periods and separates prioritization, development and delivery, since all of these tasks can have their own rhythms. Furthermore, Kanban uncouples prioritization rhythm from both the cycle time and the delivery rhythm.
That doesn’t mean that Kanban doesn’t follow the agile manifesto. Kanban wants continuous delivery along with short delivery periods.
The advantage is that it prevents problems and waste created by pressing tasks into fixed time boxes.
In this article, let us show you show how to establish a continuous delivery rhythm.
Delivery Coordination Costs
The more important a software is, the more roles and necessary tasks are affected by its release. For example, planning and executing of:
- Marketing activities
- Trainings (for customers / for sales and support teams)
- Social Media Campaigns
- Documentation creation (online / offline)
TODO: To determine efficient delivery rhythms, you should calculate all coordination costs and optimize them as much as possible.
Delivery Transaction Costs
All the incurred costs necessary to deliver a software to the users are defined as transaction costs. In web development projects, they are typically deployment costs, which can also be more than just a click. But in other types of business, the transaction costs can be much more expensive (shipment, installing a washing machine, sending dvds to stores worldwide and so on).
How to calculate the delivery efficiency?
Calculating the delivery efficiency is quite easy:
Delivery Efficiency in % = 100% x (Total Costs of the release – (Coordination Costs + Transaction Costs)) / Total Costs of the release
How to optimize the efficiency?
There are three ways to optimize the delivery efficiency:
A. Increase the delivery rhythm
B. Reduce Coordination and Transaction Costs
C. Do both 😉
Defining a Delivery Rhythm
The team must be aware, that every delivery creates costs.
When you realize what the value of the delivery is, then you can make successful decisions about the length of your rhythm.
Now, we can define a new efficiency calculation:
Delivery Efficiency in % = 100% x (1-((Transaction Costs + Coordination Costs) / (Profit Margin + Transaction Costs + Coordination Costs)))
The length of the rhythm depends on many important issues; and it is not easy to calculate, even if you have all the data.
What is more, it relies upon the market and the competitors. If your strategy is always to have the newest features, then short delivery rhythms could make sense. If your focus is on a cost efficient and very stable software, longer delivery rhythms could be the way for you.
Increasing the Delivery Efficiency
A modern and optimized software development and deployment process, along with better tools, can help to reduce the effort for every release. It would allow you to reduce the delivery rhythm from two month to two weeks, or every week.
But you should start conservatively.
Well, let’s think, why not start with a monthly delivery?
At the same time you ought to focus on the coordination and transaction costs!
To reduce these should have priority in order to reduce waste. You should also talk to other stakeholders (sales, marketing, trainers) how to increase their efficiency for the same reason.
Optimizing the software development and delivery process can occur simultaneously during the following weeks and months. It always makes sense!
Fixed Delivery Rhythms or Spontaneous Deliveries?
I would say that it depends on your business model and the maturity level of your organization.
Continuous delivery rhythms always establish trust. Other departments can plan their activities around these releases, which makes it easier to implement further improvements.
Under some circumstances it can also make sense to deliver spontaneously.
If your coordination and transaction costs are low, the value for the customer or your development team justifies spontaneous deliveries. Organizations with a high maturity level and a fitting business model deliver multiple times per day.
But even if fixed delivery rhythms are defined, there are some situations which allow spontaneous deliveries. For example:
- Tickets with the service class “Very important”
- Very important bug fixings
- An external event, a fair for example
- Anderson, David J. (2010): Kanban: Successful Evolutionary Change for Your Technology Business – Blue Hole Press (ISBN 978-0-9845214-0-1), page 5.