Lean Based Sofware Development
-
Upload
semen-cirit-safe-agilist -
Category
Leadership & Management
-
view
33 -
download
2
Transcript of Lean Based Sofware Development
LEAN BASED SOFWARE
DEVELOPMENT
Semen Cirit
@semencirit
2016
What is Lean?
• Maximize customer value while minimizing waste.
• Continiously increasing customer value.
• The ultimate goal is to provide perfect value to the
customer through a perfect value creation process that
has zero waste.
Lean Thinking
• Optimizing the flow of products and services through
entire value streams
• Eliminating waste along entire value streams, instead
of at isolated points
• Creates processes that need less human effort, less
space, and less time to make products and services at
far less costs and with much fewer defects, compared
with traditional business systems.
• Companies are able to respond to changing customer
desires with high variety, high quality, low cost, and
with very fast throughput times.
Lean Principles
Lead Time and Cycle Time
• Lead Time:
– Time between request to delivery
– This is what the customer sees!
• Cycle Time:
– Time between production start to completion
– Not visible to customer
Takt Time
• Calculated as the available production time divided by customer
demand.
• The purpose of takt time is to precisely match production with
demand.
• If customers want two new products per month, takt time is two
weeks.
Value Stream for Cola Cans
Software Development Value Stream
Agile Value Stream Map
Wastes in Lean
How they manifest?
Wastes in Software Development
Waste in Manufacturing Waste in Software development
Inventory Partially work done
Extra Processing Extra procceses and meetings
Overproduction Extra not value added features
Transportation Task switching
Waiting Waiting
Motion Unused creativity
Rework Defects
7 Principles of Lean Software
Development
Optimize the Whole
• Focus on the Entire Value Stream
• From concept to cash.
• From customer request to deployed software.
• Deliver a Complete Product
• Customers don't want software; they want their problems solved.
• Think Long Term
Eliminate Waste
• Waste is anything that does not add customer value.
• Building the Wrong Thing – That customer does not want
• Failure to Learn - interfere with the learning that is the essence of
development.
• Thrashing –task switching, long lists of requests, big piles of partly
done work
Build Quality In
• Final Verification Should Not Find Defects!
• Primary purpose to find and fix defects as early in the development process as possible.
• Proof your Process with Test-First Development
• Establish confidence in the correctness of the system at any timeduring development, at every level of the system.
• Break Dependencies
• System architecture should support the addition of any feature at any time.
Learn Constantly and Fast
• Predictable Performance is Driven by Feedback
• Maintain Options
• Think of code as an experiment – make it change-tolerant.
• Last Responsible Moment
• Learn as much as possible before making irreversible decisions.
• Rapid Delivery, High Quality, and Low Cost are Fully
Compatible
• Queuing Theory Applies to Development, not Just
Servers
• Managing Workflow is a lot easier than Managing
Schedules
Keep Getting Better
• Failure is a Learning Opportunity
• Standards Exist to be Challenged and Improved
• Use the Scientific Method
Engage Everyone
• Autonomy
• The most effective work groups are semi-autonomous teams with an internal leader with end-to-end responsibility for complete, meaningful tasks.
• Mastery
• Respect for people means providing the challenge, feedback, and environment that enables everyone to become excellent.
• Purpose
• Tie work to value. Only by believing in the purpose of their work will people become engaged in achieving that purpose.
What is Kanban?
• Kanban is not an inventory control system; it is a
scheduling system that helps determine what to
produce, when to produce it, and how much to produce.
• In addition, it proved to be an excellent way for
promoting improvements because reducing the number
of kanban in circulation highlighted problem areas.
• Kanban in the context of software development can mean
a visual process management system that tells what to
produce, when to produce it, and how much to produce
inspired by the Toyota Production System and Lean
manufacturing.
Kanban for Software
• Visualize the Workflow: Represent the work items and
the workflow on a card wall or electronic board
• Limit Work-in-Progress (WIP): Set agreed upon limits
on how many work items are in progress at a time
• Measure and Manage Flow: Track work items to see if
they are proceeding at a steady, even pace
• Make Process Policies Explicit: Agree upon and post
policies about how work will be handled
• Use Models to Evaluate Improvement Opportunities:
Adapt the process using ideas from Systems Thinking,
Deming, etc
Kanban Way / Just in Time(JIT)
• Don’t build features that nobody needs right now
• Don’t write more specs than you can code
• Don’t write more code than you can test
• Don’t test more code than you can deploy
Kanban Board