47
Kanban Kanban Creating a Kaizen Culture and evolving Creating a Kaizen Culture and evolving Lean Software Engineering Solutions Lean Software Engineering Solutions David J. Anderson President, Modus Cooperandi, Performance Through Collaboration

A Kanban System for Software Engineering

Embed Size (px)

DESCRIPTION

Ideas from Lean Thinking have been growing in popularity with the Agile software development community. Over the past year, the use of kanban (literally signal cards) popular in manufacturing has been seen as the significant innovation in managing agile work and is growing in adoption at irms such as Yahoo!David Anderson introduced the first electronic kanban system at Microsoft in 2004 and has since extended the technique through his work at Corbis. Kanban acts to limit work-in-progress and focus the team on achieving a continuous flow of value to the customer. Kanban innovates on accepted agile management practice by providing an teration-less process with a regular release cadence.It helps achieve a balance of demand against capacity on the team and eliminate multi-tasking. David will present a brief history of the technique through case study reports from teams at Microsoft and Corbis. The kanban system enables David to deliver on his Recipe for Success: focus on quality; reduce work-in-progress; balance demand against throughput; and prioritize.Watch a video at http://www.bestechvideos.com/2009/03/29/a-kanban-system-for-software-engineering

Citation preview

Page 1: A Kanban System for Software Engineering

KanbanKanbanCreating a Kaizen Culture and evolving Creating a Kaizen Culture and evolving Lean Software Engineering SolutionsLean Software Engineering Solutions

David J. AndersonPresident, Modus Cooperandi,Performance Through Collaboration

Page 2: A Kanban System for Software Engineering

What is a kanban system?

Page 3: A Kanban System for Software Engineering

Kanban allows us to implement my recipe for success

� Focus on Quality� Reduce (or limit) Work-in-Progress� Balance Demand against Throughput� Prioritize� Prioritize

Page 4: A Kanban System for Software Engineering

Case Study Microsoft 2004/2005

� XIT one of Microsoft’s 8 IT departments

� XIT Sustained Engineering� Small team� Change requests� Supports over 80 applications (and growing)� Supports over 80 applications (and growing)� Engineering responsibilities moved from Redmond

(Washington, USA) to Hyderabad (India) in 2004� Hyderabad vendor is CMMI Level 5 and uses

TSP/PSP� Initial quality is very high

Page 5: A Kanban System for Software Engineering

Dark Days in July 2004

Dev MgrDev Mgr Test MgrTest MgrPMPMChangeChange

RequestsRequests

� Manager resigns end June 2004 – open position Q3 Jan-04

Apr-04Jul-04

Supply

0

10

20

30

40

50

60

70

80

90

Change Requests

Sustained Engineering Supply v Demand

ProductProductManagersManagers

User Acceptance TestUser Acceptance Test

BacklogBacklog 155 Days155 Days

Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the queue is growingqueue is growingqueue is growingqueue is growingqueue is growingqueue is growingqueue is growingqueue is growing

Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the Demand is outstripping supply and the queue is growingqueue is growingqueue is growingqueue is growingqueue is growingqueue is growingqueue is growingqueue is growing

2004 – open position Q3 2004

� Backlog is 80+ and growing about 20 per quarter

� Lead time is 155 days� Customer satisfaction –

lowest in IT department

Jul-04Supply

Quarters

Supply Demand

Page 6: A Kanban System for Software Engineering

Estimation (ROM) was Top Priority

Dev MgrDev Mgr Test MgrTest MgrPMPMChangeChange

RequestsRequests

ROMROM

ROMROM

� Open and Read Source Code

� Read Application Guide

� Whole process about 1 day per developer and tester

3 Developers,3 Developers,3 Testers3 Testers

But…But…80 Applications80 ApplicationsEstimation was usingEstimation was using

33%33%--40%40%

ProductProductManagersManagers

User Acceptance TestUser Acceptance Test

BacklogBacklog 155 Days155 Days

� SLA – 48 hours to return a rough order of magnitude estimate (ROM)

� All change requests are ROM estimated

� ROMs are expedited as top priority due to SLA

What What happens?...happens?...

33%33%--40%40%of available capacity!!!of available capacity!!!

Page 7: A Kanban System for Software Engineering

Actual effort was miniscule compared to lead time of 155 days

Dev MgrDev Mgr Test MgrTest MgrPMPMChangeChange

RequestsRequests

ROMROM

ROMROM

15

20

25

Ch

ang

e R

equ

ests

Historical data gathered over

ProductProductManagersManagers

User Acceptance TestUser Acceptance Test

BacklogBacklog 155 Days155 Days

1 to 2 3 to 5 6 to 10 11 to15

> 15

0

5

10

Ch

ang

e R

equ

ests

Effort in Days

Dev Test

� Historical data gathered over 9 months showed that a typical change request took approx 5 business days to process through development

� Low end was 1 day� High end 15 days

Page 8: A Kanban System for Software Engineering

Are Estimates muda?

Dev MgrDev Mgr Test MgrTest MgrPMPMChangeChange

RequestsRequests

ROMROM

ROMROM

� Only 52% of requests were actually ever completed

� Other 48%� Too big

(bigger than 15 days)� Too expensive (low

value versus cost)� Overtaken by events,

application decommissioned

ProductProductManagersManagers

User Acceptance TestUser Acceptance Test

BacklogBacklog 155 Days155 Days

decommissioned before request is processed

� ROMs are taking 40% of capacity but 48% of ROMs represent analysis that is never used beyond estimate, schedule and go/no go decision!

� Knowledge work is perishable. ROM analysis is done months before work is conducted and there is no guarantee that ROM is conducted by same engineer who will code or test.

� Conclusion – all ROMs are muda

Page 9: A Kanban System for Software Engineering

Could it get worse? Expediting

Dev MgrDev Mgr Test MgrTest MgrPMPMChangeChange

RequestsRequests

ROMROM

ROMROM

PTCPTCNonNon--code Fixcode Fix

ProductProductManagersManagers

User Acceptance TestUser Acceptance Test

BacklogBacklog 155 Days155 Days

� Production Text Change� E.g. graphical changes, data changes,

anything that didn’t require a developer� Must be expedited

� Need to make formal QA pass

Page 10: A Kanban System for Software Engineering

Backlog Dev Queue

Dev

New

Approved

StartedOn

Hold

Test Queue

Test

StartedOn

Hold

Resolved

Failed

UAT Queue

Passed

Transferred to Proj Team

New

Analysis

More Info

Info

Received

XIT Change Request

Resolved

Re-opened

State Model

Virtual Kanban UAT Queue

UAT

Started

Failed,

Scope Changed

SOX

Production Queue

Complete

Passed

ClosedReleased

Pending Future Project

By Design

Duplicate

Won’t Fix

No Repro

Abandoned

(needs

exception)

Virtual Kanban limit initially8 = WIP + 7 days buffer

Virtual Kanban limit initially8 = WIP + 7 days buffer

Page 11: A Kanban System for Software Engineering

Intervention 1Pace the Line from Development

Local MgrLocal MgrPMPM

ChangeChangeRequestsRequests

KanbanKanban8 cards8 cards(3 WIP(3 WIP

5 Buffer)5 Buffer)

KanbanKanban8 cards8 cards

PTCPTCExpediteExpedite

ProductProductManagersManagers

User Acceptance TestUser Acceptance Test

BacklogBacklog 25 Days25 Days

� Development Kanban� Typically enough for WIP + 7 days

� Test Kanban� Typically enough for WIP + 7 days

� Pace line at rate of consumption� At times of high expediting levels, kanban insures that line is paced

from Test not Dev� Reduces lead time by insuring single-tasking� Focuses customer acutely on selection of highest priority (urgency)

requests for insertion into empty buffer slots

Page 12: A Kanban System for Software Engineering

Intervention 2 – Stop Estimating

Local MgrLocal MgrPMPM

ChangeChangeRequestsRequests

KanbanKanban8 cards8 cards(3 WIP(3 WIP

5 Buffer)5 Buffer)

KanbanKanban8 cards8 cards

PTCPTCExpediteExpedite

� ROM activity abandoned� Freed up 40% capacity� Instant boost to productivity

numbers� Edge cases

� Too big (take risk, identify once in development)

� Too expensive (don’t care)

� Following Deming’s advice –

ProductProductManagersManagers

User Acceptance TestUser Acceptance Test

BacklogBacklog 25 Days25 Days

� Stop cost accounting� No such thing as a cost of change request� Costs are fixed� Funding is spent with vendor on 12 month contract and paid out on

monthly burn rate

� All changes would be treated equally for cost purposes� Based on average of 5 business days through development

� Following Deming’s advice –manage for the normal and treat exceptions as exceptional

Page 13: A Kanban System for Software Engineering

Throughput

30

40

50

60

4545

5656

and Costand Costand Costand Costand Costand Costand Costand Cost

4545

Zero Backlog Zero Backlog achievedachieved

Some idle timeSome idle timeLowers metricsLowers metrics

$7500$7500Highest Productivity per person

Sep-04Dec-04

Mar-05Jun-05

Sep-05Dec-05

0

10

20

30

1717$2900$2900 $3300$3300

Lowest cost

Shortest lead timeHighest customer satisfaction

Page 14: A Kanban System for Software Engineering

Why Lead Time is the best metric

XIT-SE TTRFrom 5 Months To 3 Weeks in 5 Quarters

120

140

160

180

Cal

enda

r Day

s

Other Sev TTR

Sev 1• New Manager• No More ROMs• New Prioritization Process• Flow Management

Changed dev : test ratio

Zero Backlog

0

20

40

60

80

100

FY04 Q4 FY05 Q1 FY05 Q2 FY05 Q3 FY05 Q4 FY06 Q1 FY06 Q2

Quarter

Cal

enda

r Day

s

from 3:3 to 4:2

Increased dev : test from 4:2 to 5:3

Lowest cost

Highest Productivity per person

Shortest lead timeHighest customer satisfaction

Page 15: A Kanban System for Software Engineering

At Corbis in December 2006, we implemented a detailed kanban system for sustaining engineering

Page 16: A Kanban System for Software Engineering

Kanban limits create a pull system and white board provides visualization of flow through to delivery

Pull

Kanban Limit –regulates WIP at each stage in the process

Flow – from Engineering Ready to Release Ready

Page 17: A Kanban System for Software Engineering

Colors are used to designate classes of service for work items

Change Requests and Production Bugs – Customer valued and prioritized by governing board

Page 18: A Kanban System for Software Engineering

Quantity of blue tickets on the board is an immediate indicator of development quality that is

impeding flow of customer valued work and reducing throughput

Engineering Defects – direct indicator of quality impact on productivity, linked to yellow sticky, not counted against kanban limit

Page 19: A Kanban System for Software Engineering

Non-customer valued but essential work is tracked as a different class of work

IT Maintenance Work –Technology department reserving capacity for its own maintenance – difficult to prioritize with business – count against kanban limits

Page 20: A Kanban System for Software Engineering

Expediting – the Silver Bullet

� Process allows for a single Silver Bullet expedite request

� Silver bullet is hand carried through the system� Personal attention from project

manager� Automatically jumps queues� Required specialist resources drop

other work in preference to working the silver bullet

� Release dates may be adjusted to accommodate required delivery date

Page 21: A Kanban System for Software Engineering

Quantity of pink issue tickets on board directly indicates flow impacting problems that need

attention from management

Issues are the exception –attached to work items that are blocked for external reasons and call attention to problems preventing smooth flow

Page 22: A Kanban System for Software Engineering

Temporary classes of work may be introduced tactically to maximize exploitation of the system

Extra Bug – Special class of production bug, worked by slackdeveloper resources and specially selected not to impact solutions analysis. Tested by developers not testers. Allows maximum exploitation for improved throughput

Page 23: A Kanban System for Software Engineering

Kanban tickets hold a lot of information that enable decentralized control and local decision

making when deciding priority of items to pull through the system

Electronic ID number Hard delivery date –for regulatory, legal, or strategic reasons

Issue attached to change request –indicates management attention required

Date Accepted – clock starts on SLA

Signifies item that has exceeded SLA – indicates that item should be prioritized if possible

Assigned engineer

Page 24: A Kanban System for Software Engineering

Kanban delivers iterationless development

� Releases were agreed and planned for every 2nd Wednesday

� Prioritization Board meetings were held every Monday

� Release content is bound and published only 5 days prior5 days prior

� Prioritization meetings are required only to answer the question, “Which items from the backlog do we want to select this week to fill any empty slots in the input queue?”

� Prioritization holds change request selection until the last responsible moment

� It keeps (real) options open

Page 25: A Kanban System for Software Engineering

Kanban innovates on typical agile/iterative development by introducing a late binding release commitment

� Kanban system breaks constraint of typical agile/iterative 2-4 week cycle

� Requests can take up to 100 days to process but releases still made every 14 days

� Average item takes 14 days of engineering� Input and sizing is decoupled from cadence � Input and sizing is decoupled from cadence

of releases� Decision on content of release made 5 days

prior to release� No estimation is done on individual items� Effort to estimate is turned back to

productivity (analysis, coding, testing)

Page 26: A Kanban System for Software Engineering

Look how the board has changed by March! Empirically adjusted Kanban limits reacting to industrial engineering

issues. Much neater presentation – pride in the process is forming

Page 27: A Kanban System for Software Engineering

And again in April, more changes to Kanban limits and forward extension of the process to business analysis

Page 28: A Kanban System for Software Engineering

Waste bin spontaneously introduced by team to visually communicate rejected CRs that wasted energy and

sucked productivity

Page 29: A Kanban System for Software Engineering

Spontaneous Quality Circles started forming

� Kanban board gives visibility into process issues –� Kanban board gives visibility into process issues –ragged flow, transaction costs of releases or transfers through stages in process, bottlenecks

� Daily standup provides forum for spontaneous association to attack process issues affecting productivity and lead time

� For example, 3 day freeze on test environment was a transaction cost on release that caused a bottleneck at “build” state. This was reduced to 24 hours after a 3 person quality circle formed to investigate the policies behind the freeze. Result was improved smooth flow resulting in higher throughput and shorter lead time

Page 30: A Kanban System for Software Engineering

Other spontaneous quality circle kaizen events

� Empirically adjusted kanban limits several times� E.g. test kanban too small, causing ragged flow

� UAT state added� UAT state added� Prompted by test who were experiencing slack time

� Expanded kanban limit on Build Ready state, added Test Ready state� Introduced to smooth flow post release due to

environment outage transaction cost� Introduced kanban board, daily standup, colored post-it

notes for different classes of service, notations on the post-its

� Poor requirements causing downstream waste resulted in an upstream inspection to eliminate issues with poorly specified requests

Page 31: A Kanban System for Software Engineering

September 2007 – Business Analysis and Systems Analysis merged eliminating 25% of lead time consumed

as queuing waste

Page 32: A Kanban System for Software Engineering

And the process is spreading inside Corbis …

Page 33: A Kanban System for Software Engineering

And externally at companies like Yahoo! …

Page 34: A Kanban System for Software Engineering

… this one on the Mash social network team

Page 35: A Kanban System for Software Engineering

And the technique is being introduced to major projects with much longer time horizons. This example has a

monthly “integration event” rather than a release every two weeks

Page 36: A Kanban System for Software Engineering

5 months later significant changes are evident

Page 37: A Kanban System for Software Engineering

Major project with two-tiered kanban board

Page 38: A Kanban System for Software Engineering

Major Project with two-tiered kanban board using swim lanes for feature sets

Page 39: A Kanban System for Software Engineering

Less mature major project in trouble adopts kanban to bring a focus to daily routine and visibility to work-in-

progress to team and management

Page 40: A Kanban System for Software Engineering

Next Day – Team is maturing quickly and has refactored the board with swim lanes for functional areas

Page 41: A Kanban System for Software Engineering

Kanban has allowed scaling standup meetings to much larger teams than is typical with Scrum

In this example more than 40 people attend a standup for a large project

with 6 concurrent development teams. The meeting is usually

completed in approximately 10 minutes. Never more than 15.

Page 42: A Kanban System for Software Engineering

Bargaining, Democracy & Collaboration

� First 8 weeks prioritization board would bargain against the available slots and WIP limit� I’ve got two small requests can you treat them as

one?

� People started to lobby each other and build business cases to get items selected

� Familiarity with the system led to the consensus decision to adopt a democratic process

� 3 months later it was evident that democracy didn’t always select the best candidate

� And it was replaced with a collaborative process based on strategic and current tactical marketing objectives

Page 43: A Kanban System for Software Engineering

The process has shown remarkable robustness to gaming from the business

� Prioritization board consists of VPs from 6 business units

� Understanding that expediting costs throughput and lead time has resulted in an expectation that only critical items qualify for Silver Bullet statusAttempts to game prioritization by setting a � Attempts to game prioritization by setting a delivery date are tightly scrutinized by the board

� As a result the process is self-regulating with the prioritization board enforcing the anti-gaming rules

� As a result the Silver Bullet and delivery date options are seldom used

Page 44: A Kanban System for Software Engineering

Summary

� Culture Change� Trust, empowerment, objective data measurement,

collaborative team working and focus on quality

� Policy Changes� Late-binding release scope, no estimating, late-binding

prioritization

� Regular delivery cadenceCross-functional collaboration� Cross-functional collaboration� Previously unheard of VP level selfless collaboration on

business priority

� Self-regulating process robust to gaming and abuse

� Continuous Improvement� Increased throughput, high quality, process continually

evolving, kanban limits empirically adjusted

Page 45: A Kanban System for Software Engineering

Learn More

� Join the Kanbandev Yahoo! Group� Corey Ladas’ Lean Software Eng Blog

� http://leansoftwareengineering.com/

� Agile Management Blog� http://www.agilemanagement.net/Articles/Weblog/blog.html

Page 46: A Kanban System for Software Engineering

Thank you!

[email protected]://www.agilemanagement.net/

Page 47: A Kanban System for Software Engineering

About…David Anderson is a thought leader in managing effective software teams. He is the President of Modus Cooperandi, a consulting firm dedicated to improving leadership in the IT and software development sectors.

He has 25 years experience in the software development business starting with computer games in the early 1980’s. As a pioneer in the agile software movement David has managed teams at Sprint, Motorola and Corbis delivering superior productivity and quality. At Microsoft he developed the MSF for CMMI Process developed the MSF for CMMI Process Improvement methodology.

David’s book, Agile Management for Software Engineering – Applying the Theory of Constraints for Business Results, introduced many ideas from Lean and Theory of Constraints in to software engineering.

David was a founder and is a current board member of the APLN, a not for profit dedicated to promoting better standards of leadership and management in knowledge worker industries. He can be contacted at…Email: [email protected]