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