l e a nsoftware development
www.poppendieck.comMary [email protected]@poppendieck.com
Lean Software DevelopmentDiscovering Waste
l e a n
Two Kinds of Software Development
Product Development Software intensive products.
Almost never referred to as IT by the people who do it.
Development generally does not report to a CIO.
Accounts for a large and growing majority of software developed today
Process SupportThe Application Development
portion of IT organizations.If you divide IT into Operations
and Application DevelopmentTHEN
“Standard” Lean Tools are appropriate for IT Operations
Avoid “Standard” Lean Tools for Application Development
October 112 Copyright©2011 Poppendieck.LLC
l e a n
Lean for Development
Old-Fashioned Chocolate Layer Cake“We baked 130 cakes in search of the perfect wedge.”
October 11 Copyright©2011 Poppendieck.LLC3
What about? Standard workDo it right the first timeVariation 5 S’s
Why not? Learning cyclesDo it wrong lots of timesManage flow, not projects Simplicity
OperationsToolkit Development
Toolkit
l e a n
Software Development
1. Build the Right Thing2. Build the Thing Right3. Deliver (& Learn) Fast
October 11 Copyright©2011 Poppendieck.LLC4
l e a n
Build the Right Thing
There is nothing so useless as doing efficiently that which should not be done at all. – Peter Drucker
October 11 Copyright©2011 Poppendieck.LLC5
Most product failures are caused by
a lack of Customers.“Don’t to what customers say they want, understand their problems and solve them.”– Per Haug Kogstad,
founder, Tandberg (now Cisco)
Think Like a Customer
l e a n
What is Design Thinking?
Diverse Design TeamFramingObserve the SituationConceptualize the Problem
IdeationObtain Customer InsightsVisualize/Prototype Ideas
ExperimentationTry Tentative SolutionsRefine Mental Models
October 11 Copyright©2011 Poppendieck.LLC6
Refr
ame*
Iter
ate
*Pivot
l e a n
Waste 1: Extra Features
Cost of Complexity
The Biggest opportunity for increasing Software Development Productivity: Write Less Code!
Cos
tTime
Features / Functions Used in a Typical System
Standish Group Study Reported at XP2002 by Jim Johnson, Chairman
Always 7%
Often 13%
Sometimes16%
Rarely 19%
Never 45%
Rarely / NeverUsed: 64%
Often / AlwaysUsed: 20%
October 11 Copyright©2011 Poppendieck.LLC7
l e a n
Waste 2: Handovers A handover occurs whenever we separate:* Responsibility Knowledge Action Feedback
− What to do− How to do it− Actually doing it− Learning from results
*Alan Ward: Lean Product and Process Development
Not this: But this:PRIORITIZED!
October 11 Copyright©2011 Poppendieck.LLC8
l e a n
The Lean Startup
October 11 Copyright©2011 Poppendieck.LLC9
†https://elearning.industriallogic.com/gh/submit?Action=PageAction&album=blog2009&path=blog2009/2011/agileVsLeanStartup&devLanguage=Java
Agile Vs. Lean Startup Adapted from similar chart posted by Joshua Kerievsky, Industrial Logic Blog† August, 2011
AgileProduct RoadmapProduct VisionRelease Plan
On-Site CustomerProduct Owner
BacklogUser Story
Acceptance TestDefinition of Done
Iteration ReviewIteration
Continuous Integration
Customer Feedback
Lean StartupBusiness Model CanvasProduct Market FitMinimal Viable Product
“Get Out Of The Building”Entrepreneur
“To Learn” ListHypothesis
Split TestValidated Learning
Persevere or PivotBuild-Measure-Learn Loop
Continuous Deployment
Cohort-based Metrics
l e a n
Software Development
1. Build the Right Thing2. Build the Thing Right3. Deliver (& Learn) Fast
October 11 Copyright©2011 Poppendieck.LLC10
l e a n
Build Quality In
How good are you?When in your release cycle do you try to freeze code and test the system? What percent of the release cycle remains for this “hardening”?
Typical: 30%
Sometimes: 50%
Top Companies: <10%
Release Cycle
Every software development process ever invented has had the same primary goal – find and fix defects as early in the development process as possible. If you are finding defects at the end of the development process – your process is not working for you.
October 11 Copyright©2011 Poppendieck.LLC11
l e a n
Waste 3: Defects
The Longer Defects are Undetected, the Harder They are to Find.
October 11 Copyright©2011 Poppendieck.LLC12
l e a n
Waste 4: Technical Debt
Sloppy CodeCode reviews standards, quality, knowledge transfer.
October 11 Copyright©2011 Poppendieck.LLC13
DependenciesA divisible architecture is fundamental.
Technical Debt: Anything that makes code difficult to change
Unsynchronized Code BranchesThe longer two code branches remain apart, the more difficult they are to merge together.
No Test Harness (=Poka Yoke)Code without a test harness is Legacy Code.
l e a nMatch?
A Defect Injection Process
Specifications
Tests Code
October 11 Copyright©2011 Poppendieck.LLC14
l e a n
A Defect Prevention Process
Specifications
TestsCode
October 11 Copyright©2011 Poppendieck.LLC15
l e a nRe
port
sM
etad
ata
Repo
rts
Met
adat
a
BIN
ARI
S
Discipline on Steroids
Testers
Self-ServiceDeployments
SourceCode & Tests
UAT StageConfigure Environment
Deploy BinariesSmoke Test
Manual Testing
Repo
rts
Met
adat
a
Capacity StageConfigure Environment
Deploy BinariesSmoke Test
Run Capacity Tests
OperationsPush-Button
Releases
Testers
ProductionConfigure Environment
Deploy BinariesSmoke Test
Acceptance StageConfigure Environment
Deploy BinariesSmoke Test
Run Acceptance Tests
Commit StageCompile
Commit TestsAssembly
Code Analysis
BIN
ARI
S
VERSION CONTROL
ARTIFACT REPOSITORY
Environment& ApplicationConfiguration
Scripts
BIN
ARI
S
Develop StageDesign
Code & ScriptUnit TestRefactor
Repo
rts
Met
adat
a
October 11 Copyright©2011 Poppendieck.LLC16
l e a n
Software Development
1. Build the Right Thing2. Build the Thing Right3. Deliver (& Learn) Fast
October 11 Copyright©2011 Poppendieck.LLC17
l e a n
The Fastest Learner Wins
October 11 Copyright©2011 Poppendieck.LLC18
Model Build
MeasureLearn
l e a nPro
Pro
Waste 5: Work in Progress
Technical Debt: Change
is too expensive
Defects! Not found until
integration…Too Slow
Risk:Building the Wrong Thing
RISK:Building the
Wrong Thing.Competition Introduces a
better product. Poor UI
Work in Progress hides problems.
Lower the Work in Progress gradually;Expose the biggest problems first.
Wor
k in
Pro
gres
s Shrink the problems one at a time, biggest problem first.
Wor
k in
Pro
gres
s
October 11 Copyright©2011 Poppendieck.LLC19
l e a n
Waste 6: Task Switching
October 11 Copyright©2011 Poppendieck.LLC20
l e a n
Waste 7: Delays
October 11 Copyright©2011 Poppendieck.LLC21
l e a n
Total Cycle Time
Quick & Dirty Value Stream Map:
Release Cycle6 Months
October 11 Copyright©2011 Poppendieck.LLC22
Release CycleRelease Cycle
HardenSelect
Features UATDevelopFeatures
Request Features
Release Cycle
Total Cycle TimeValue-Added Time
Average Start EndStart
Request Features
Business Model: Software installed at customer site Support each release Avoid releases
Model Build
MeasureLearn
l e a n
Release CycleQuarterly
Hardening must be 2 weeks.Typically: 2-4 week iterationsCode from each iteration goes to integration testingAutomated integration testing becomes necessary
October 11 Copyright©2011 Poppendieck.LLC23
Business issues: How to price and sell releases?Which releases to support?
Supporting multiple branches can create a support nightmare
Public vs. Private releases?
Model Build
MeasureLearn
l e a n
Release CycleMonthly
Now you need:Cross Functional Team VisualizationShort Daily MeetingsSBE/TDD working!Hardening 3 days
Business EnvironmentWorks best for:Software as a Service (SaaS) Internal Software
October 11 Copyright©2011 Poppendieck.LLC24
Model Build
MeasureLearn
l e a n
Release CycleWeekly/Daily/Continuous
Kanban works well
Iterations become irrelevant
High discipline is fundamental
Estimating is largely unnecessaryRapid cycles of learning drive portfolio decisions
October 11 Copyright©2011 Poppendieck.LLC25
DevOps:Test & deployment automation is essential
Business Issues: Increasingly common in startups
The team is everyone.
Model Build
MeasureLearn
l e a nsoftware development
www.poppendieck.comMary [email protected]@poppendieck.com
Thank You!More Information: www.poppendieck.com