Combining Scrum And Kanban To Better Handle Unplanned Work
What is the core problem?
A key challenge in software development is balancing planned work carried out through structured sprints with unplanned work that arrives unpredictably. Using either Scrum or Kanban frameworks alone can make it difficult to efficiently incorporate emerging work while maintaining focus on pre-planned features and objectives. Carefully integrating the two approaches, however, allows teams to realize the benefits of both.
Visualizing Workflows with Kanban
Kanban revolves around a board which visually depicts the flow of work. By defining explicit policies around work-in-progress limits, managing flow through swimlanes, and making process rules transparent, Kanban boards shine light on bottlenecks and support teams in optimizing output.
Defining work-in-progress limits
A key tactic in Kanban is to establish constraints on the amount of work allowed into each part of the process at any one time. This reduces multi-tasking and puts focus on finishing existing items before pulling in new ones. Teams typically determine WIP limits through experimentation by incrementally adjusting caps until finding an optimal balance.
Managing flow through swimlanes
Swimlanes separate a Kanban board into distinct categories – often distinguishing between types like bugs, features, infrastructure. By limiting WIP per lane teams can ensure different workstreams don’t block one another while still allowing overall flexibility if priorities shift.
Making policies explicit
Explicit policies associated with each step in the workflow communicate expected service levels and make the rules of the game transparent. Common examples include a “definition of ready” outlining prerequisites for pulling work into coding and a “definition of done” for incremental completion.
Planning Work with Scrum
In contrast to Kanban’s continuous flow, Scrum is structured around fixed-length sprints focused on delivering predefined increments of customer value. Scrum brings order through backlogs, story points, and priorities.
Creating user stories
Product functionality is articulated as short user stories capturing who needs what and why, formulated like: “As a [type of user], I want [some goal] so that [some reason]”. Framing requirements this way grounds discussions around value.
Estimating story points
Rather than hours and dates, Scrum teams estimate effort using abstract story points judged relative to other stories. Points gauge complexity not time, relying on historical velocity rather than individual guessing about tasks.
Prioritizing the product backlog
All needed features are maintained in a product backlog ranked by business priority. Teams select top items they believe can be completed within a sprint, while the product owner is responsible for backlog prioritization based on goals.
Integrating the Approaches
Combining Scrum and Kanban allows using Scrum for sprint execution focused on planned priorities, while Kanban absorbs emerging work through its continuous flow. Some tips on fusing these systems:
Using Kanban for unplanned work
Add a lane on your Kanban board for unplanned requests. Items pulled here won’t disrupt the current sprint but can be tackled when there is available capacity, providing quicker turnaround.
Continuing sprints for planned work
Keep utilizing standard Scrum practices like timeboxed sprints, backlogs, points, and burndowns to maintain cadences of shipping and gathering feedback on defined roadmap items.
Reviewing process policies
Improving whole systems requires regularly stepping back to review overall performance. Are WIP limits reflecting reality? Is the sprint length allowing completion? Inspect and adapt!
Example Code for a Kanban Board
const columns = { backlog: { name: 'Backlog', items: [] }, inProgress: { name: 'In Progress', items: [] }, complete: { name: 'Complete', items: [] } } const addItem = (item, column) => { columns[column].items.push(item); } const moveItem = (item, from, to) => { const source = columns[from].items; const destination = columns[to].items; if (!source.includes(item)) { return; } source.splice(source.indexOf(item), 1); destination.push(item); }
Measuring Success
Quantitative tracking through metrics like cycle time and work-in-progress combined with qualitative customer feedback helps assess process improvements.
Tracking cycle time
Cycle time calculates the duration from when work enters the teams process to when its completed by measuring elapsed time per item. Reduced cycle time implies better flow.
Monitoring work-in-progress
Work-in-progress tracks how much work sits in intermediate states across the workflow. Lower WIP indicates less multitasking and handoffs allowing teams to get items to done faster.
Gathering customer feedback
Early and frequent gathering of insights from actual users tells if delivered capabilities map to expectations. Teams course correct based on whether functionality achieves intended value.
Continuous Improvement
Consistently inspecting and adapting the integrated Scrum-Kanban implementation through metrics, feedback, and process review allows incrementally improving outcomes.
Inspecting and adapting
Fixed regular meetings to review system performance against goals, identify issues, brainstorm experiments, and deploy tweaks provide cadence for evidence-based adjustments towards better results.
Addressing bottlenecks
Analyzing cycle time segment durations, work-in-progress levels, and feedback themes highlights parts of the process causing impedance to value delivery so targeted solutions can be tested.
Balancing planning with flexibility
Data insights balanced with evolving business realities allow determining ideal sprint lengths and backlog sizes while using Kanban to steer capacity towards emergent priorities in harmony with pre-planned roadmaps for structural change.