lean and kanban-based software development

42
Tathagat Varma http://managewell.net Lean and Kanban-based Software Development http://www.toyota-global.com/company/history_of_toyota/75years/text/entering_the_automotive_business/chapter1/section4/images/l02_01_04_04_img01.jpg

Upload: tathagat-varma

Post on 19-May-2015

1.398 views

Category:

Software


1 download

DESCRIPTION

My deck for an introduction to Lean and Kanban-based Software Development.

TRANSCRIPT

Page 1: Lean and Kanban-based Software Development

Tathagat Varma http://managewell.net

Lean and Kanban-based Software Development

http://www.toyota-global.com/company/history_of_toyota/75years/text/entering_the_automotive_business/chapter1/section4/images/l02_01_04_04_img01.jpg

Page 2: Lean and Kanban-based Software Development

What is Lean?

•  maximize customer value while 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.

Page 3: Lean and Kanban-based Software Development

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.

Page 4: Lean and Kanban-based Software Development

http://www.shmula.com/lean-history-and-timeline-toyota-production-system/5993/

Page 5: Lean and Kanban-based Software Development

Lean Principles

1. Identify Value

2. Map the Value Stream

3. Create Flow

4. Establish

Pull

5. Seek Perfection

Page 6: Lean and Kanban-based Software Development

Lean Principles

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

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

2. May the Value Stream

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

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

• As value is specified, value streams are identified, wasted steps are removed, 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.

5. Seek Perfection

http://www.lean.org/whatslean/principles.cfm

Page 7: Lean and Kanban-based Software Development

What is Value?

http://mikehohnen.com/2008/04/19/oplevelse/

Page 8: Lean and Kanban-based Software Development

Perceived Value?

http://blogs.forrester.com/norbert_kriebel/13-06-04-use_the_value_equation_to_drive_successful_meetings

Page 9: Lean and Kanban-based Software Development

Value Equation of a Smartphone

http://www.jtklepp.com/2009/12/03/a-value-based-framework-for-the-smartphone-os-war/

Page 10: Lean and Kanban-based Software Development

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)

Page 11: Lean and Kanban-based Software Development

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/

Page 12: Lean and Kanban-based Software Development

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

Page 13: Lean and Kanban-based Software Development

Process Cycle Efficiency (PCE)

•  PCE = Value-added Time / Total Lead Time •  Also known as Value Added Ratio

•  How efficient is your process?

Page 14: Lean and Kanban-based Software Development

Value Stream for Cola Cans

Lean Thinking – Womack and Jones

Page 15: Lean and Kanban-based Software Development

Software Development Value Stream

http://softwarecreation.org/2009/reliable-software-development-process-the-toyota-way/

Page 16: Lean and Kanban-based Software Development

Kent Beck’s Value Stream Map

Page 17: Lean and Kanban-based Software Development

Agile Value Stream Map

Lean Software Development, An Agile Toolkit – Mary Poppendeick

Page 18: Lean and Kanban-based Software Development

Wastes in Lean

http://nantachit.exteen.com/20120131/muda-muri-mura

Page 19: Lean and Kanban-based Software Development

How they manifest?

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

Page 20: Lean and Kanban-based Software Development
Page 21: Lean and Kanban-based Software Development

Wastes in Software Development

Wastes in Manufacturing

Wastes in Software Development

Inventory Partially done work

Extra Processing Extra processes

Overproduction Extra features

Transportation Task Switching

Waiting Waiting

Motion Motion

Defects Defects

www.poppendieck.com

Page 22: Lean and Kanban-based Software Development
Page 23: Lean and Kanban-based Software Development

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

Page 24: Lean and Kanban-based Software Development

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

Page 25: Lean and Kanban-based Software Development

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

Page 26: Lean and Kanban-based Software Development

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

Page 27: Lean and Kanban-based Software Development

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

Page 28: Lean and Kanban-based Software Development

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 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.

www.poppendieck.com

Page 29: Lean and Kanban-based Software Development

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

Page 30: Lean and Kanban-based Software Development

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

Page 31: Lean and Kanban-based Software Development

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

Page 32: Lean and Kanban-based Software Development

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

Page 33: Lean and Kanban-based Software Development

What is Kanban? •  Kanban (literally signboard or billboard) is a scheduling system

for lean and just-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 led Toyota to 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

Page 34: Lean and Kanban-based Software Development

Kanban System

http://www.toyota-global.com/company/vision_philosophy/toyota_production_system/just-in-time.html

Page 35: Lean and Kanban-based Software Development

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

Page 36: Lean and Kanban-based Software Development

Kanban in the context of Software Development

•  Kanban is 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.

•  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[1] and Lean manufacturing.[2]

https://en.wikipedia.org/wiki/Kanban_(development)

Page 37: Lean and Kanban-based Software 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

Page 38: Lean and Kanban-based Software Development

Why Kanban in Software Engineering?

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

https://leanandkanban.files.wordpress.com/2009/04/kanban-for-software-engineering-apr-242.pdf

Page 39: Lean and Kanban-based Software Development

A Kanban System at my Toyota dealership

https://twitpic.com/het3u

Page 40: Lean and Kanban-based Software Development

Kanban board

Page 41: Lean and Kanban-based Software Development
Page 42: Lean and Kanban-based Software Development

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/