Monday, June 16, 2014

Scrumban - framework overview and comparison to Scrum and Kanban

Scrumban is an agile software development framework which is getting significant traction lately.
This post is to provide concise definition for a Scrumban and a comparison to its parent frameworks - Kanban and Scrum.

All of Scrum, Kanban and Scrumban are agile frameworks and share the next key principles:
  • Delivery organization is split into small, cross-functional, self-organizing teams.
  • Overall scope being delivered is split into a list of small, concrete deliverables, which are sorted by priority - this list is called product backlog. 
Key Scrum characteristics are:
  • Delivery time is split into short fixed-length iterations (usually 1 – 4 weeks), these iterations are called sprints.
  • Sprint iteration scope (called sprint backlog) is defined at the start of sprint iteration during planning meeting, where the tasks for the sprint are identified, estimated and planned for implementation - with the goal to deliver potentially shippable code at the end of each sprint iteration.
  • Key differentiating principle of Scrum is time-boxed development: during a sprint, no one is allowed to change the spring backlog, i.e. requirements are frozen for that sprint.
  • Key metric of Scrum is iteration scope. It is tracked via tools like iteration burn-down charts and the ultimate process goal is to maximize scope released as a result of each iteration.
Key Kanban characteristics are:
  • Delivery workflow is visualized with the help of Kanban card wall - where workflow states are represented with columns on a card wall and each specific work item is represented by a card (this card is called "kanban card" or just "kanban") and put on the wall into a specific column - in accordance with the state the work item belongs to. Kanban cards are moved between columns as the work item progresses through the delivery workflow.
  • Key differentiating principle of Kanban is limit on WIP (work in progress): explicit limits are set for each workflow state on how many items may be in progress at each state.
  • New work item (represented by a kanban card) is pulled out of product backlog when and only when amount of work items in the first workflow state (this may be called ToDo state) drops below WIP limit for this state. Finished work item is pulled into production as soon as it reaches the final state in a delivery workflow.
  • Key metric of Kanban is lead cycle time -average time to complete one work item. The ultimate process goal is to make lead time as small and predictable as possible.
Key Scrumban characteristics are:
  • 3 key principles of Kanban described above: visualization of a delivery workflow, limiting WIP for each workflow state and pulling work items from previous state are key to Scrumban as well
  • The Scrum-style notion of iteration is used by Scrumban, but planning and release periods are decoupled. Convenient interval is defined to run planning sessions, another convenient interval is defined to package features to release. 
  • In fact, Scrumban iteration scope may be defined by packaging work items after they have reached final development state - i.e. Scrumban iteration scope is defined at the finish of iteration 
  • Key metric of Scrumban is the same as in Kanban - lead time, average time to complete one work item.
So, above is, in my point of view, concise definition of three methods and a description of differences between them.
To make things even more concise, here's extra-brief summary of three methods comparison:
  • Scrum - work is devided into time-boxed iterations whith no possiblity to change scope within iteration.
  • Kanban - the workflow is continuous with work items released as soon as they are complete and new work undertaken as soon as there's someone available to do the work.
  • Scrumban - workflow is continuous with planning sessions and feature releases happening iteratively and independently of each other - next work items are defined periodically during planning sessions and features are packaged and then released together periodically as well.