Lean Software Development Principles
Lean Software Development Principles
Development Principles
John P Vajda, PMP, CSM
A Lean
History
A Lean History
A Lean History
Lean is a manufacturing & production practice that considers
the expenditure of resources for any goal other than the
creation of value for the end customer to be wasteful, and
thus a target for elimination.
"value" is defined as any action or process that a customer
would be willing to pay for.
Lean is centered around preserving value with less work.
Lean manufacturing is based on optimizing flow, increasing
efficiency, decreasing waste, and using empirical methods to
decide what matters, rather than uncritically accepting preexisting ideas
Toyota was a leader in implementing lean practices in the 80s
Reference:
http://en.wikipedia.org/wiki/Lean_manufacturing
Eliminate Waste
Amplify Learning
Decide as Late as Possible
Deliver as Fast as Possible
Empower the Team
Build Integrity In
See the Whole
Reference:
http://en.wikipedia.org/wiki/Lean_manufacturing
Wastes of Software
Development
Inventory
Extra processing
Paperwork or excess
documentation
Overproduction
Extra features
Transportation
Waiting
Motion
Defects
Defects
Reference: M & T Poppendieck, Lean Software Development. 2003
: Chapter 1
1.1 Make a list of the 10 15 most important activities in your organization. Pretend you are a customer
and rate them 1 to 5. (1 being the customer doesnt really care, 5 being they value this highly)
1.2 Take the 2 lowest scoring (the waste) and plan to cut the time on these activities in half
1.3 At a team meeting, discuss the 7 principles of Lean and ask the following questions about the waste:
2. Develop a Value Stream of an incoming request a map a timeline of its progress. Compare added value
versus waiting. Take the biggest cause of delay and plan to cut that in half.
Principle #
3:Decide as Late
Concurrent
Breadth First
Delaying commitments
Principle # 4:
Deliver as Fast as
Possible
100% utilization isnt always the most efficient, as we need to room to change.
Practice the 80/20 rule for work load
Large batches of work take longer to process through the queue and requires more people to
be completed.
Rapid Development will save you time and money, management may think differently
Determine what delayed delivery will cost you by using a profit and loss statement
Develop an Economic Application Model (breakdown of costs)
Use your P&L and Economic Models to drive trade off decisions
Principle # 5:
Empowering the
Team
Leaders
Set Direction
Align People
Enable Motivation
Principle # 6: Build
Integrity In
Conceptual Integrity
Is usability consistent?
Developer
Tests
Customer Tests
Unit Tests
Functional Testing
System Tests
Acceptance Testing
Integration
Tests
Reference: M & T Poppendieck, Lean Software Development. 2003
: Chapter 6
Designs arent complete until developer tests are executed (Design Driven Development)
Feedback
Scaffolding
A supporting framework that lets you do things that would otherwise be dangerous
Lean techniques could be dangerous if you arent careful (late code changes, late decisions, etc)
A Comprehensive Test Suite of customer and developer tests let you assess the health of your product
To reduce overall maintenance costs, maintain a set of tests through the lifecycle of the system
On 5 large sheets of paper label them each with one of the following titles:
1. Simplicity
2. Clarity
3. Suitability for Use
4. No Repetition
5. No Extra Features
Take one application and ask each team member to list anything within the current
system that that doesnt meet these Lean Standards. Categorize them accordingly.
Choose 2 or 3 of the highest priority items and figure out a way to make them meet
the standards.
Principle # 7: See
the Whole
A system is not just a sum of its parts, its a product of those interactions
When systems start to break down, rigid more sequential rules are usually put in place
A sequential/rigid process may cure one symptom, but not the root cause. It will become increasingly difficult to keep up with changing needs.
A Common Pattern
Limits of Growth: even as one process produces a desired result, it creates a secondary constraint that eventually slows down the effect and limits growth.
The Theory of Constraints: you can remove a constraint to growth in one place, but it will shift to another place. Its an on going process.
Shifting the Burden: addressing the symptoms, instead of the root cause.
Sub Optimization: the more complex a system, the more you temptation it is to divide into parts
Why #1:
A: New modules were added, that are causing new issues.
Why #2: Why did the new modules generate defects in other modules?
A: They were not tested
Why #3: Why where they not tested?
A: Developers where pressured to deliver before testing could occur
Why #4: Why was there so much pressure?
A: A Manager thought a hard deadline would work to motive the developers
Why #5: Why did they think this approach was necessary?
A: A manager was worried about late delivery and schedule overruns
Now you can address the root cause: A manager doesnt grasp the burn down of the work and thinks hard deadlines motivate, instead of seeing the system converging and trusting in the progress of the team
When you are trying to measure performance, particularly of knowledge workers, you are asking for trouble
People will often optimize the measurements that their performance is measured against (sub-optimization)
Dont foster sub-optimized behavior! If you cant measure everything, dont try.
A defect in code, isnt always the fault of one person. Pointing the blame towards a developer doesnt address the root cause of the system.
Measurements should encourage optimizing the whole, and the team to collaborate to find better ways to do things.
Modern culture bases success on individual performance metrics, this drives sub-optimizing behavior.
Wont be covered in this training: for more information please read this book: Lean Software Development .
Appendix
This presentation was possible due to the amazing work done by Mary & Tom Poppendieck, in their book Lean Software Development. 2003
All slide intro images were borrowed from Google image search and are not proprietary to this presentation
Thank you!