You are on page 1of 42

Lean and Kanban-based

Software Development
Tathagat Varma
http://managewell.net
http://www.toyota-global.com/company/history_of_toyota/75years/text/entering_the_automotive_business/chapter1/section4/images/l02_01_04_04_img01.jpg
What is Lean?
maximizecustomer valuewhile minimizing
waste.
A lean organization understands customer value
and focuses its key processes to continuously
increase it. The ultimate goal is to provide
perfect value to the customer through a
perfect value creation process that has zero
waste.
Lean Thinking
Lean thinking changes the focus of management from
optimizing separate technologies, assets, and vertical departments
to optimizing the flow of products and services through entire
value streams that flow horizontally across technologies, assets,
and departments to customers.
Eliminating waste along entire value streams, instead of at
isolated points, creates processes that need less human effort,
less space, less capital, 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. Also, information
management becomes much simpler and more accurate.
http://www.shmula.com/lean-history-and-timeline-toyota-production-system/5993/
Lean Principles

1. Identify
Value

2. Map
5. Seek
the Value
Perfection
Stream

4.
3. Create
Establish
Flow
Pull
Lean Principles

1. Identify Value Specify value from the standpoint of the end customer by product family.

2. May the Value Identify all the steps in the value stream for each product family, eliminating
whenever possible those steps that do not create value.
Stream

3. Create Flow Make the value-creating steps occur in tight sequence so the product will flow
smoothly toward the customer.

4. Establish Pull As flow is introduced, let customers pull value from the next upstream activity.

As value is specified, value streams are identified, wasted steps are removed,
5. Seek Perfection and flow and pull are introduced, begin the process again and continue it until
a state of perfection is reached in which perfect value is created with no waste.

http://www.lean.org/whatslean/principles.cfm
What is Value?

http://mikehohnen.com/2008/04/19/oplevelse/
Perceived Value?

http://blogs.forrester.com/norbert_kriebel/13-06-04-use_the_value_equation_to_drive_successful_meetings
Value Equation of a Smartphone

http://www.jtklepp.com/2009/12/03/a-value-based-framework-for-the-smartphone-os-war/
Value Stream Map (VSM)
Special type of flow chart that uses symbols
known as "the language of Lean" to depict and
improve the flow of inventory and information
Purpose is to provide optimum value to the
customer through a complete value creation
process with minimum waste in
Design (concept to customer)
Build (order to delivery)
Sustain (in-use through life cycle to service)
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

http://www.whatissixsigma.net/cycle-time/
Takt Time
The pace at which customer
requires products.
Calculated as the available
production time divided by
customer demand.
The purpose of takt time is to
precisely match production with
demand.
For example, if a widget factory
operates 480 minutes per day
and customers demand 240
widgets per day, takt time is two
minutes.
Similarly, if customers want two
new products per month, takt
time is two weeks.

http://www.lean.org/Common/LexiconTerm.aspx?termid=337 http://www.beyondlean.com/takt-time.html
Process Cycle Efficiency (PCE)
PCE = Value-added Time / Total Lead Time
Also known as Value Added Ratio

How efficient is your process?


Value Stream for Cola Cans

Lean Thinking Womack and Jones


Software Development Value Stream

http://softwarecreation.org/2009/reliable-software-development-process-the-toyota-way/
Kent Becks Value Stream Map
Agile Value Stream Map

Lean Software Development, An Agile Toolkit Mary Poppendeick


Wastes in Lean

http://nantachit.exteen.com/20120131/muda-muri-mura
How they manifest?

https://leanandkanban.wordpress.com/2011/03/22/lean-is-about-eliminating-waste-right/
Wastes in Software Development

Wastes in Wastes in Software


Manufacturing Development
Inventory Partially done work
Extra Processing Extra processes
Overproduction Extra features
Transportation Task Switching
Waiting Waiting
Motion Motion
Defects Defects

www.poppendieck.com
5S in Software Development
Sort (Seiri): Sort through the stuff on the team workstations and servers, and find the
old versions of software and old files and reports that will never be used any more.
Back them up if you must, then delete them.

Systematize (Seiton): Desktop layouts and file structures are important. They should
be crafted so that things are logically organized and easy to find. Any workspace that is
used by more than one person should conform to a common team layout so people
can find what they need every place they log in.

Shine (Seiso): Whew, that was a lot of work. Time to throw out the pop cans and
coffee cups, clean the fingerprints off the monitor screens, and pick up all that paper.
Clean up the whiteboards after taking pictures of the important designs that are
sketched there.

Standardize (Seiketsu): Put some automation and standards in place to make sure
that every workstation always has the latest version of the tools, backups occur
regularly, and miscellaneous junk doesn't accumulate.

Sustain (Shitsuke): Now you just have to keep up the discipline.

Implementing Lean Software Development from Concept to Cash Mary Poppendeick


5S in Java
Sort (Seiri): Reduce the size of the code base. Throw away all unneeded items immediately. Remove:
Dead code
Unused imports
Unused variables
Unused methods
Unused classes
Refactor redundant code

Systematize (Seiton): Organize the projects and packages. Have a place for everything and everything in its place.
Resolve package dependency cycles
Minimize dependencies

Shine (Seiso): Clean up. Problems are more visible when everything is neat and clean.
Resolve unit test failures and errors ( passed == 100%)
Improve unit test coverage ( > 80%)
Improve unit test performance
Check AllTests performance
Resolve checkstyle warnings
Resolve PMD warnings
Resolve javadoc warnings
Resolve TODO's

Standardize (Seiketsu): Once you get to a clean state, keep it that way. Reduce complexity over time to improve ease
of maintenance.

Sustain (Shitsuke): Use and follow standard procedures.

Implementing Lean Software Development from Concept to Cash Mary Poppendeick


7 Principles of Lean Software Development

Optimize the Whole

Eliminate Waste

Build Quality In

Learn Constantly

Deliver Fast

Engage Everyone

Keep Getting Better


www.poppendieck.com
Optimize the Whole
Optimizing a part of a system will always, over time,
sub-optimize the overall system.

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.
Complete solutions are built by complete teams.

Think Long Term


Beware of governance and incentive systems that drive short
term thinking and optimize local performance.
www.poppendieck.com
Eliminate Waste
Waste is anything that does not add customer value.
The three biggest wastes in software development are:

Building the Wrong Thing


"There is nothing so useless as doing efficiently that which should not be
done at all." Peter Drucker

Failure to Learn
Many of our policies for example: governance by variance from plan, frequent
handovers, and separating decision-making from work interfere with the
learning that is the essence of development.

Thrashing
Practices that interfere with the smooth flow of value task switching, long
lists of requests, big piles of partly done work deliver half the value for twice
the effort.
www.poppendieck.com
Build Quality In
If you routinely find defects in your verification process, your process is
defective.

Final Verification Should Not Find Defects!


Every software development process ever invented had as its primary
purpose to find and fix defects as early in the development process as
possible.

Mistake-Proof your Process with Test-First Development


Tests including, unit tests, end-to-end tests, and integration tests must be
available to establish confidence in the correctness of the systemat any
timeduring development,at every levelof the system.

Break Dependencies
System architecture should support the addition of any feature at any
time.
www.poppendieck.com
Learn Constantly
Planning is useful. Learning is essential.

Predictable Performance is Driven by Feedback


A predictable organization does not guess about the future and
call it a plan; it develops the capacity to rapidly respond to the
future as it unfolds.

Maintain Options
Think of code as an experiment make it change-tolerant.

Last Responsible Moment


Learn as much as possible before making irreversible decisions.
Don't make decisions that will be expensive to change before
their time and don't make them after their time!
www.poppendieck.com
Learn Fast
Start with a deep understanding of all stakeholders and what they will
value. Create a steady, even flow of work, pulled from this deep
understanding of value.

Rapid Delivery, High Quality, and Low Cost are Fully Compatible
Companies that compete on the basis of speed have a big cost advantage,
deliver superior quality, and are more attuned to their customers' needs.

Queuing Theory Applies to Development, not Just Servers


Focusing on utilization creates a traffic jam that actually reduces
utilization. Drive down cycle time with small batches and fewer things-in-
process. Aggressively limit the size of lists and queues

Managing Workflow is a lot easier than Managing Schedules


The best way to establish reliable, predictable deliveries is to establish
reliable, repeatable workflows with iterations or a kanban system.
www.poppendieck.com
Keep Getting Better
Results are not the point the point is to develop the people and the
systems capable of delivering results.

Failure is a Learning Opportunity


The most reliable performance comes when even small failures are deeply
investigated and corrected; when noise is not tolerated.

Standards Exist to be Challenged and Improved


Embody the current best known practice in standards that everyone
follows, while actively encouraging everyone to challenge and change the
standards.

Use the Scientific Method


Teach teams to: establish hypotheses, conduct many rapid experiments,
create concise documentation, and implement the best alternative.

www.poppendieck.com
Engage Everyone
The time and energy of bright, creative people are the scarce resources in today's
economy, and the basis of competitive advantage.
People who are paid fairly and adequately are motivated by autonomy, mastery,
and purpose.

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.

www.poppendieck.com
What is Kanban?
Kanban(literallysignboardorbillboard) is a scheduling system
forleanandjust-in-time(JIT) production. According to its
creator,Taiichi Ohno, kanban is one means through which JIT is
achieved.
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.
The need to maintain a high rate of improvement ledToyotato devise
the kanban system. Kanban became an effective tool to support the
running of the production system as a whole.
In addition, it proved to be an excellent way for promoting
improvements because reducing the number of kanban in circulation
highlighted problem areas.

https://en.wikipedia.org/wiki/Kanban
Kanban System

http://www.toyota-global.com/company/vision_philosophy/toyota_production_system/just-in-time.html
How Kanban helps achieve Just-in-
Time?
For example, to efficiently produce a large
number of automobiles, which can consist of
around 30,000 parts, it is necessary to create a
detailed production plan that includes parts
procurement. Supplying "what is needed,
when it is needed, and in the amount
needed" according to this production plan can
eliminate waste, inconsistencies, and
unreasonable requirements, resulting in
improved productivity.
http://www.toyota-global.com/company/vision_philosophy/toyota_production_system/just-in-time.html
Kanban in the context of Software
Development
Kanbanis a method for managing knowledge work
with an emphasis on just-in-time delivery while not
overloading the team members. In this approach,
the process, from definition of a task to its delivery
to the customer, is displayed for participants to see
and team members pull work from a queue.
Kanbanin the context of software development
can mean a visualprocess managementsystem that
tells what to produce, when to produce it, and how
much to produce inspired by the
Toyota Production System[1]and
Lean manufacturing.[2]
https://en.wikipedia.org/wiki/Kanban_(development)
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: Successful Evolutionary Change for your Technology Business David Anderson
Why Kanban in Software Engineering?

Dont build
Dont write Dont write Dont test
features that
more specs more code more code
nobody
than you can than you can than you can
needs right
code test deploy
now

https://leanandkanban.files.wordpress.com/2009/04/kanban-for-software-engineering-apr-242.pdf
A Kanban System at my Toyota
dealership

https://twitpic.com/het3u
Kanban board
References
http://poppendieck.com/
http://refcardz.dzone.com/refcardz/getting-
started-kanban
http://refcardz.dzone.com/refcardz/getting-
started-lean-software
http://www.djaa.com/
https://en.wikipedia.org/wiki/
Lean_software_development
http://kanbanblog.com/explained/

You might also like