Lean Software Development
Download
Report
Transcript Lean Software Development
Lean Software Development
Nathan Decker
February 4, 2010
Overview
What is lean development?
The basics of lean development
Origins of lean software development
Principles of lean software development
Recap
References
What is lean development?
Implementation of lean manufacturing principles into a
software development model
Goal : Reduce the waste in a system and produce a higher
value for the final customer
What is lean development?
Similarities to Agile Development
Agile Manifesto refresher: Developers shall value
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over customer negotiation
Responding to change over following a plan
Based on, yet a basis for Agile projects
Basics of Lean Development
Muda
Any activity that uses of resources, but adds no value
Examples of waste
Partially done work
Extra processes
Defects
Basics of Lean Development
Value
What the customer wants the product to do
45% of all software features go unused
What do customers really need?
Basics of Lean Development
Value Stream
All actions required to bring project from creation to
completion
Types of actions
Add value
No value added, but unavoidable
No value added, avoidable
Basics of Lean Development
Flow
Product is in motion at all time
Compare this with a classic batch + queue methodology
Which is more efficient?
Basics of Lean Development
Pull
No product is made until the customer requests it
Requires a process that flows
Pros:
Correct number of items every time
Easier to customize products
Cons:
No inventory to draw from
Basics of Lean Development
Pursuit of perfection
After a project flows… keep improving it
Long-term improvement and short-term improvement
Luckily, perfection is not a reachable goal!
Origins of Lean Software Development
Lean development at Toyota
Original author : Taiichi Ohno
“Costs do not exist to be calculated. Costs exist to be
reduced.”
Inventor of Just-In-Time manufacturing
Taiichi Ohno
Implementation at Toyota
Lean vs Batch and Queue
Origins of Lean Software Development
Adapted by Mary and Tom Poppendieck
Lean Software Development: An Agile Toolkit
http://www.poppendieck.com
Lean Software Development
Lean applied to software
Iterative cycles
Feedback vs Forecast
Essentially, an implementation of the Agile Manifesto
Based off and a basis
Principle 1: Eliminate Waste
Remove all wastes that add no value to project
Three types of waste
Waste in code development
Waste in project management
Waste in workforce potential
Wastes in Code Development
Partially completed work
Can become outdated and unusable
Solution: Iterative cycle with modular code
Defects
Correction and retesting
Solution: Up-to-date test suite, customer feedback
Wastes in Project Management
Extra processes
Code Handoffs
Wasteful/ Unnecessary documentation
Solution: Documentation review
Loss of knowledge
Solution: Don’t handoff code
Extra Functions
The customer doesn’t want or need a feature
Solution: Continuous interaction with customer
Wastes in Workforce Potential
Task Switching
The danger of multi-tasking
Solution: Focus on a task each release
Waiting for instructions or information
Developers are too expensive to be sitting around!
Allow developers to make decisions, access to information
Principle 2: Amplify Learning
Learning is not compulsory... neither is survival.
Deming
Full knowledge is impossible, need to learn as project is
developed
The customer should be learning too!
Principle 2: Amplify Learning
Use the scientific method
Create hypothesis
Conduct rapid tests of possible solutions
Compare results
Implement the best solution
Also used: Six Sigma
Lean Six Sigma / Six Sigma with lean
Principle 3: Delay Commitment
Decisions are often made on incomplete or incorrect
information
Delay until the last responsible moment
Benefits:
More knowledge for decision
Leave options open
Principle 4: Empower the Team
Make decisions as “low” as possible
Shift from complete documentation to goals and
guidelines
Developers closest to code know the problem best
Developers can get feedback for personal improvement
Developers must be experienced in domain
“The best executive is one who has sense enough to pick
good people to do what he wants done, and self-restraint
enough to keep from meddling with them while they do it.”
Theodore Roosevelt
Principle 5: Deliver Fast
Customers change their mind.
Short release cycles
Solution: Deliver so fast, they don’t have time to!
About two weeks
Requirements:
Don’t overload developers with requests
No partially completed work
Principle 5: Deliver Fast
Doesn’t fast delivery lead to hasty, buggy code?
Don’t confuse speed with rushing to get something done on
time!
Speed vs Schedule
Flowing processes
Development
Knowledge gathering
Principle 6: Build Integrity In
Perceived Integrity
Does exactly what the customer wants, even if they don’t
know it yet
Again, continual interaction with the customer
Conceptual Integrity
The product works smoothly and functions well
Principle 7: See the whole
Optimize the entire product, not just parts
Short delivery cycles can lead to optimized parts, sub
optimized whole
Don’t worry about scope!
By focusing on what customers want, scope will handle itself
Don’t have customer overestimate what the product will do
Recap
Lean development is focused on removing waste from a
system and improving value for the customer
Principles of Lean software development
Eliminate Waste
Amplify Learning
Delay Commitment
Empower the Team
Deliver Fast
Build Integrity in
See the whole
References
[1] Poppendieck.llc Retrieved from http://www.poppendieck.com/
[2] Womack, J.P., & Jones, D.T. (2003). Lean thinking: banish waste and create
wealth in your corporation, revised and updated. New York: Free Press.
[3] Womack, James, & Jones, Daniel. (2005). Lean solutions: how companies
and customers can create value and wealth together. New York: Free Press.
[4] Ødegård, F. (2007). Lean execution: six questions for software
executives. Retrieved from
http://www.leansoftwareinstitute.com/Lean%20Execution%20%20Six%20Questions%20for%20Software%20Executives.pdf
[5] Middleton, Peter, & Sutton, James. (2005). Lean software strategies.
Productivity Pr.
[6] Poppendieck, Mary, Poppendieck, Tom. (2002). Agile software development
ecosystems. Addison-Wesley Professional.
References
[7] Poppendieck, Mary. (2003, Fall). Lean software development. C++
Magazine, methodology issue, Retrieved from
http://www.poppendieck.com/pdfs/Lean_Software_Development.pdf
[8] Poppendieck, Mary. (2007, May). The Challenges of bringing lean to software
development. Retrieved from
http://www.poppendieck.com/pdfs/The%20Truck%20Driving%20Problem.pdf
[9] Poppendieck, Mary. (2001, May). Lean programming. Software Development
Magazine, Retrieved from http://www.poppendieck.com/lean.htm
[10] Manifesto for agile software development. (2001). Retrieved from
http://agilemanifesto.org/
[11] Poppendieck, Mary. (2002). Principles of lean thinking. Retrieved from
http://www.poppendieck.com/papers/LeanThinking.pdf
[12] Ophir, Eyal, Nass, Clifford, & Wagner, Anthony D. (2009). Cognitive
control in media multitaskers. Retrieved from
http://www.pnas.org/content/106/37/15583.abstract