LEAN SOFTWARE
DEVELOPMENT
James Manning
Outline
Lean
History of Lean
Lean Manufacturing
Lean Software Development
Where to start
What is Lean?
Process of eliminating waste from within a
project, process, or company.
History
Toyota Production System – 1948 - 1975
Developed by Taiichi Ohno, Shigeo Shingo and Eiji
Toyoda
Toyoda – produce automobiles for the general
public of Japan.
Very similar to Henry Ford – 30 years later
Utilized Ford and W Edwards Deming
JIT production
History
Toyota became one of the top 10 companies in the
world
2007 - became the largest car manufacturer
TPS Focused on eliminating three kinds of waste
Muri
Mura
Muda
Muri
Overburdened/Unreasonable/Absurdity
Employees
Safety,
Ergonomic - standard of work
Searching for tools – having required tools
Waiting for help – empowering the team
Equipment
Overuse
Ford – Muri and not production line
Mura
Unevenness – lacking flow
Utilize resources, materials, and machinery as
efficiently as possible
JIT
Pull system
Piggly
Wiggly (1916)
JIT inventory
Muda
Wastefulness
Broad term
Anything that Does not directly add value to the
end user
Unneeded
processes or steps
Unneeded equipment
Unneeded employees
Ect.
Lean Manufacturing
Seven Types of Waste
Defects
Over-production
Transportation
Waiting
Inventory
Motion
Processing
Implementing Lean Techniques
Can this be applied to Software?
Lean Software Development
Mary
Poppendieck & Tom Poppendieck
Term introduced in The Poppendiecks’ book
Titled
Lean Software Development
The Poppendieck’s
Mary Poppendieck
MS, Mathematics
University of Maryland
BS, Mathematics
Marquette University
Tom Poppendieck
PhD, Physics
UW – Madison
BS, Physics
UW - Madison
Principles of Lean Software
Development
Eliminate Waste
Amplify Learning
Delay Commitment
Deliver Fast
Empower the Team
Build Integrity In
See the Whole
Eliminate Waste
Lean Software Development
Partially Done Work
Extra Processes
Extra Features
Task Switching
Waiting
Motion
Defects
Lean Manufacturing
Inventory
Processing
Overproduction
Transportation
Waiting
Motion
Defects
Partially Done Work
Tendency to become obsolete
Gets in the way
No idea if it will even work with the system
Bottle Neck
Ties up resources
No value to customer
Disrupts Flow
Extra Processes
Do all forms of required paperwork add value?
If required
Keep
it short
Keep it high level
Do it off line
Good Test – Someone is eager to use for coding,
testing, or writing manuals
Strive for most efficient, effective way of
transmitting information
Extra Features
Feature creep
Extra features “just in case” the customer will use them
Each extra feature need to be:
Tracked
Compiled
Integrated
Tested
Maintained
Every extra feature:
Increases complexity of code
Is a possible failure point
Could be obsolete before it is used
Extra Features
Extra Features
Frode L. Ødegår – List for quantifying value
What percentage of functionality in your products goes
mostly unused?
What percentage of functionality serves mostly to sell the
product?
How much of your development budget was expended on
developing these features?
Quantify performance characteristics of your product and
relate these numbers to impact on the customer's
performance.
Rank candidate product features and design ideas by their
quantifiable impact on customer value.
Task Switching
Assigning multiple people to multiple projects
A significant amount of time is wasted in the
transition of tasks
More teams and projects = more interrupts
More
task switching
Fastest to finish multiple projects
Do
them one at a time
Waiting
Common delays:
Email
responses
Climbing leadership chains
Starting a project
Excessive requirements documentation
Problems:
Customer
cannot visualize value early
Commitment – not waste
Motion
How readily available are others to answer
developer questions
Motion to walk to answer get a question answered
Lean development offices can help eliminate this
waste.
Defects
A defective product has little to no value to an end
user
AmtWaste = (DefectImpact)(TimeUndetected)
(Large Defect)(3Hours) < (Small Defect)(3Wks)
Ways of eliminating waste:
Find
defects quick
Test immediately
Integrate often
Release to production soon
Eliminate Waste
Principles of Lean Software
Development
Eliminate Waste
Amplify Learning
Delay Commitment
Deliver Fast
Empower the Team
Build Integrity In
See the Whole
Amplify Learning
4 Tools to Amplify Learning
Feedback
Iterations
Synchronization
Set
Based Development
Feedback
Most effective way of dealing with troubled
software projects
Types of feedback:
Run
tests asap
Check out ideas by writing code (spike solution)
Prototype instead of more requirements
Create web front to legacy system to try it out
Iterations
Full Iteration:
Designed
Programmed
Tested
Integrated
Delivered
Facts > Forecasts
More feedback from customer
Synchronization
Communication with other subsystems or devices
Develop interfaces first
Set Based Development
Point-Based scheduling
Set Based Scheduling
Set-Based Development
Apply set based development to software
Develop
multiple options
Communicate Constraints
Let solutions emerge
Principles of Lean Software
Development
Eliminate Waste
Amplify Learning
Delay Commitment
Deliver Fast
Empower the Team
Build Integrity In
See the Whole
Delay Commitment
Delay = waste?
Procrastinating = waste?
Idea:
Wait
until the last moment to make a critical decision
Make decision on fact rather than forecast
Large commitment not left to chance
Not always going to be easy – Customer generally
wants commitment
Delay Commitment
Methods of delaying commitment
Share partially complete design information.
Organize for direct, worker-to-worker collaboration.
Develop a sense of when decisions must be made.
Develop a sense of how to absorb changes
Avoid Repetition
Separate Concerns
Encapsulate Variation
Defer Implementation of Future Capabilities
Commit to Refactoring
Use Automates Test Suites
Principles of Lean Software
Development
Eliminate Waste
Amplify Learning
Delay Commitment
Deliver Fast
Empower the Team
Build Integrity In
See the Whole
Deliver Fast
Just In Time
Feedback
Prototyping
Create value as soon as possible
Empower the Team
Eliminates waste from:
Waiting
Climbing
management chains
Firefighter
Prepared
No
time to ask remote commanders
Anti-pattern
Empowering
Employee
employees who are not trained
being blamed for when things go wrong
Build Integrity In
Perceived Integrity
Pleases the user
without user asking
Google
Conceptual Integrity
All parts of the system
work together –
smooth well functioning
Cash vs. Credit card
Build Integrity in
Boeing 777 “Working Together” Program
Fuel
tank out of reach of fuel trucks caught early
Methods:
Test
early
Test often
Test exhaustively
Automated tests delivered
See the Whole
Look at the whole process
Mary Poppendieck
“Lean
thinking suggests that optimizing individual parts
almost always leads to sub-optimized overall system”
80% of defects – how the system is developed
Where to Start
Start as soon as possible
Can be applied to a project or process in progress
Road Map
Marry Poppendieck
Begin Where you are
Find your biggest constraint
Envision your biggest threat
Evaluate your culture
Train
Solve the Biggest Problem
Remove Accommodations
Measure
Implement
Repeat
Conclusion
Lean Software Development
Elimination
of waste
Improve:
Productivity
Efficiency
Bottom
line
References
Abilla, P., & Poppendieck, M. (2007, June 9). Lean for Software. shmula. Retrieved
March 28, 2011, from http://www.shmula.com/lean-for-software/401/
Ladas, C. (2009, June 15). Introduction to Lean Software Development. Shaping
Software . Retrieved March 28, 2011, from
http://shapingsoftware.com/2009/06/15/introduction-to-lean-softwaredevelopment/
Fiore, C. (2005). Accelerated product development: combining lean and Six sigma for
peak performance. New York, NY: Productivity Press.
Layton, R. (2010, August 12). 80-20 Rule: 80 percent of Product Features Are
Never Used. Klean. Retrieved March 28, 2011, from
http://www.klean.dk/weblog/80-20-rule-80-percent-of-product-features-arenever-used
Poppendieck, M. (2003, April, 25). Lean Software Development. LeanEssays.
Retrieved March 28, 2011, from http://www.leanessays.com/2003/04/leansoftware-development.html
References
Poppendieck, M. (2001, May 1). Lean Programming. LeanEssays. Retrieved March
28, 2011, from http://www.leanessays.com/2010/11/lean-programming.html
Poppendieck, M. (2004, June 24). An Introduction to Lean Software Development.
LeanEssays. Retrieved March 28, 2011, from
http://www.leanessays.com/2004/06/introduction-to-lean-software.html
Principles of Lean. lean.org - Lean Enterprise Institute| Lean Production | Lean
Manufacturing | LEI | Lean Services |. Retrieved March 28, 2011, from
http://www.lean.org/WhatsLean/Principles.cfm
Shalloway, A. (2007, August 8). Lean Anti-Patterns and What to Do About Them.
Agile Journal. Retrieved March 28, 2011, from
http://www.agilejournal.com/component/content/553?task=view
Ødegår, F. (2007, December 30). Lean Execution: Six Questions for Software
Executives. Lean Software Institute. Retrieved March 28, 2011, from
www.leansoftwareinstitute.com/wp-content/uploads/2007/08/Lean-Execution-SixQuestions-for-Software-Executives.pdf
Poppendieck, Mary , and Tom Poppendieck. Lean software development: an agile
toolkit. Reading, Massachusetts: Addison-Wesley, 2003. Print.
Thanks for you time
Questions?