Lean Based Sofware Development

Post on 06-Apr-2017

33 views 2 download

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