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.

Leave a Reply

Your email address will not be published. Required fields are marked *