Iterations versus Continuous Flow
Last week I wrote a post on Iterative and Incremental development. In that post I pointed out that you can do iterative and incremental development without having time-boxed iterations. Mike Cottmeyer asked in a comment to clarify when time-boxed iterations made the most sense and when continuous flow made the most sense. This post answers that question.
When Time-boxed Iterations Make the Most Sense
Time-boxed iterations serve several purposes that are not well served in continuous flow. They create an opportunity for the team to stop and get feedback from the customer on their product. They can help with chunking up work to support the planning process and validation of the design of the solution. There are times when this is really important.
So, time-boxed iterations work best:
1. When there is a lot of opportunity for feedback on current deliverables to significantly update subsequent work
2. When the planning horizon is stable enough that a subset of the backlog can be prioritized for at least the duration of the iteration
3. When the backlog items can fit in the iteration time-box
4. When dependent resources (for example, planning and testing) can not be available to support continuous flow
For example, time-boxed iterations work best at the outset with a new product, new technology, or substantially new set of features.
When Continuous Flow Makes the Most Sense
Continuous flow has some advantages over time-boxed iterations. Overtime, the level of resources available to do work is higher and the backlog is much more flexible and adaptive to variation in the arrival of work. For example, once the product architecture is stable and well defined and work is arriving in bursts with various levels of urgency.
So, continuous flow works best:
1. When the work is arriving continuously
2. When the planning window can be (or must be) very small
3. When the outcome is pretty clear and feedback is not as likely to impact subsequent work
4. When there are multiple work streams operating at different cadences
For example, continuous flow when working on defects and small enhancements in a stable product or working with technical support issues.
Non-relevant factors
Effective planning. Data can be gathered from both iterations (velocity) and continuous flow (lead time) to determine when a product can be delivered and to establish visibility into the current status of the project.
Retrospectives. Iterations create a natural break for retrospectives. There is no reason why retrospectives must be tied to iteration releases. Continuous flow teams can have retrospectives on either an event driven or calendar driven basis.
Motivation to get to done. Iterations create pressure to complete work in a specific time-box. Continuous flow creates pressure to met lead-time commitments (policies).
How they can work together
We are making a standard practice of combining Kanban at the strategic planning level to support continuous flow of strategic initiatives across the organization and Scrum (or Kanban) at the development team level. It doesn’t make sense to us to create time-boxed deliverables at the strategy execution deliverable level. We generate plenty of pressure to move forward from the time commitments on the tasks on the Kanban board. At the development level – when there is a lot of opportunity for feedback to update subsequent work – we (may) use iterations to keep the team focused. For defects and minor enhancements we continue to use a continuous flow model – maybe within the same team.
Iterations versus Continuous Flow?
I believe this is a hammer versus saw discussion. Each approach is suited to fit different scheduling and feedback needs. In many cases, time-boxed iterations make a lot of sense but would result in a less than optimized approach then in other cases. I believe that early on in a product (when there is a lot to be learned and a lot of risk to manage) iterations probably make the most sense. At some point, when the product has switched primarily to support, continuous flow makes the most sense. I hope this answers Mike’s question from my previous post.
Dictionary.com defines a requirement as “that which is required; a thing demanded or obligatory”.