Lean software d
evelopment
principles
Lean software developmen
t principles
A lean history
The seven principle of lean
The 22 tools of lean
History of lean thinking and lean software
development
Toyota has started in 1980s to revolutionize the automobile industry with
their approach of “Lean Manufacturing”
• To eliminate waste
• To streamline the value chain(even across enterprise) • To produce on request(just in time)
• To focus on the people who add value
► Lean Thinking capitalizes on the intelligence of front line workers, believing
that they are the ones who should determine and continually improve the way they do their jobs.
► Mary and tom Poppendieck have transferred principles and practices from
the manufacturing environment to the software development environment.
The seven principles of lean
Eliminate waste
Amplify learning
Decide as late as possible
Deliver as fast as possible
empower the team
Build integrity in
See the whole
22 tools
Learn to see waste
Learn to reduce waste
Feed back
(customer and market review)
Iterations
(small increments)
Synchronization
(communication b/w stake holders)
Set Base Development
(alternative Sol and trade-offs)
Options thinking
The Last responsible moment
Making decisions
Pull systems
(resource to be consumed)
22 tools
Cost of delay
Self determination
Motivation
Leadership
Expertise
Perceived integrity
(outside org)
Conceptual integrity
(design must proceed from one mind,
or from a very small number of agreeing resonant minds)
Refactoring
Testing
Measurement
Contracts (well define agreemets)
(Eliminate waste)
What is Waste?
Anything that doesn't add value to the product
Unnecessary code or functionality
Unclear requirements
Slow internal communications or processes
(Eliminate waste)
tool 1: Learn to see Waste
Waste of Manufacturing Waste of Software Development
Inventory Partially work done
Extra processing Paperwork or excess documentation
Overproduction Extra features
Transportation Waiting
Building the wrong thing
Motion Waiting for information
Defects Defects
(Amplify learning)
the nature of software development
Realization of purpose of use rather than conforming to requirements
Not intended to produce repeatable results, but to create solutions to unique
customer problems
Design is done best using discovery solutions: short, repeated cycles of
investigation, experimentation and check results
We like to try it, test it and fix it!
For knowledge generation(for feedback) loops are critical.
(Amplify learning)
tool 4: iterations
Are short useful cycles of software development : design programmed tested integrated delivered
Allow an option based (open options)approach
Allow the ability to “decide as late as possible”
Require team planning , short complete cycles and team commitment
(Decide as late as possible)
sequential vs concurrent
sequential concurrent
Depth first(drilling into the details too
fast) Breadth first(seeing things in full view over time)
Order of creation(on day 1, we created
requirements) Highest valued features first
Rigid , change is costly Adaptable, change is manageable
Cost escalation is high when issues are found late
Cost escalation is low, as issues are found incrementally
High stakes decisions are made based
on assumptions and with uncertainty High stakes decisions can be deferred Until the last responsible moment
(Decide as late as possible)
tool 7: options thinking
A right but not a obligation to do some thing in the future
Customer needs aren't always clear or understood
You can predict the future, so maintain flexibility ,until uncertainty is
removed
Options are like trade offs, they aren't free and have a cost
(Deliver fast as possible)
why deliver fast?
Customers like rapid delivery. Look at how UPS and FedEx provide ordered
products to customers in 1 to 3 days
Rapid delivery means less time for customer to change their minds
In process, or partially done work can have undiscovered defects
The faster you deliver the longer you can delay decisions. Being able to
make a change in a week, lets you wait to make a decisions until that week
(deliver fast as possible)
12: cost of delay
► 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
(Empower the team)
What is a “Mature ”Organization?
Lean Assumption#1- a mature organization look as a whole system; it does
not only focus on optimizing disparate or separate parts
Lean Assumption#2- A mature organization focus on learning effectively and
empower the people who do the work to make decisions
(Empower the team)
tool 16: expertise
Develop and faster communication of expertise
Promote mentorship and pair programing activities
Encourage training and continued self improvement
Develop software standard and practice them
Offer the “google” approach to personal project work=80/20
(Build integrity with in)
tool 19: refactoring
Complex system have effects that aren't understood at design time
Architecture must remain healthy as the system matures and evolves
Maintain conceptual integrity
Simplicity: simple designs are the best
Clarity: keep code understandable
Suitability for use: design for intended purpose
No repetition: never repeat code
No extra features: don't build which is not needed
(SEE the whole)
Ask The 5 Whys!
You have increasing defects on a project you ask:
Why#1: Why?
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 were 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
Advantages of lean software development
Elimination of waste
Overall efficiency
Speeds up the process of software development
Delivering the product early
More functionality in a shorter period of time
Empowerment of the development team
Motivated team
27
Disadvantages of lean software development
Dependent on cohesiveness of the team and the
individual commitments of the team members
How disciplined the team members
Business analyst is vital
Software requirements specification (SRS) to
evolve
.
28
Lean vs Agile
Lean Software Development
Agile Method
Team Empowered Empowered
Quality Key Focus Key Focus
Improvements Continuous Continuous
Workflow Continuous Iterative
Change Limited Embraced
Applicability Repeatable Operation Complex Project Based
29
Lean vs agile
Lean Software Development Agile Method
Respect for People Self-organizing Teams
Prevent/Eliminate Waste No unused specs
Deliver Fast Time boxed iterations with working
increments
The managerial approach The Self Empowered
Reduce Cost Cost can be higher but it has
quicker response and greater flexibility
Fixed Plan Flexible Plan
30