Agile methodology builds on the concept of iterations – time boxes – in which you create a piece of working software. Each iteration starts with a planning meeting where the team takes stories from the backlog and commits to the sprint goal. If you use a tool like Pivotal Tracker, you even get emergent iterations – the tool automatically cuts your backlog into iterations based on your team’s velocity.
In my post Agile on steroids I described how our team slowly dropped most of the agile estimation and planning practices in favor of optimizing cycle time of stories. Now we’re running a true hybrid of iterative development and kanban. So, what makes the difference?
Iterations Tell You When a Story Will be Finished
With time boxes and a known Velocity all stakeholders can easily find out, when a given story at a certain position in the backlog will be delivered. There will be variation in the velocity, but overall the estimation will be quite good.
Kanban Tells You, How Long a Story Will Take
In Kanban, you don’t measure how much you can do within a certain period of time, but how long a story needs from idea to roll out. You can’t really plan big feature packages, but you can optimize the time to market of any story. This is usually a good thing.
Iterations Provide Integration Points
As every iteration should result in working software, all stories need to be integrated by the end of the iteration. The iteration end acts as a reminder for the developers to integrate regularly (at least once an iteration, which isn’t often enough in my opinion).
Kanban Creates Continuous Flow
When you use a Kanban style, lean development process, there are no artificial iteration borders. Each and every story leads to working software and, optimally, to a release. This requires a higher degree of self discipline within the team.
If you need big synchronization points, e.g. for big marketing campaigns, you might be better off using an iterative development approach. If you want to ensure a continuous flow of features, which are optimized for time to market (cycle time), Kanban might work better for you. What are your experiences with the one or the other? Let us know in the comments or send me a tweet.