The Big Idea: Apply lean production principles (Theory of Constraints) to software development. Reduce the work-in-progress to let developers concentrate on only one task at a time.
- Agile development with Kanban means creating a kanban board with tasks posted and a well-defined workflow.
- There are no milestones or sprints and there is minimal overhead.
- Inspired by lean operations, the focus is on a continuous flow of tasks (small batch sizes) throughout the process and on limiting Work-In-Process (WIP) of the bottleneck resource (developers), thereby keeping developers focused on deep-work and maximizing bottleneck throughput.
- 1. Backlog. The first bucket is Backlog. Put unlimited number of tasks here for later. Backlog should be continuously prioritized.
- 2. Breakdown. The second bucket is Breakdown. A product manager moves a task here for analysis. As part of the analysis, the product manager breaks tasks down into smaller tasks here.
- 3. Implement (WIP). The third bucket is Implement. A developer should only be working on one task at a time. Limiting WIP keeps the developer focused on deep-work.
- 4. Validate. The fourth bucket is Validate. A developer moves a task here when it’s complete. The product manager or a tester verifies the task is done.
- Standup meetings should be limited to discussing if anyone’s work is blocked and how to remove the block.
- Another variation is: 1. Pending (all todos, prioritized, ready for breakdown, added by PM) => 2. Ready (ready for implementation, added by PM) => 3. Implement (in-progress, added by engineering) => 4. Done (ready for validation, added by engineering) => 5. Validate (fully validated, added by PM/QA)
- Kanban is a natural fit for continuous deployment environments.
- For theoretical background: read up on Theory of Constraints.