Lean Software Development

advertisement
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?
Download