Using ToC And JIT Practice To Coach Agile Teams

Post on 06-May-2015

7972 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

My approach on coaching Agile teams using Theory of Constraints and Just In Time Practice concepts.

Transcript

Licensed Under Creative Commons by Naresh Jain

Example Context

Large Enterprise clients [450 ppl + 30 teams]

Huge communication and delivery issues

Help teams adopt Agile thinking

2

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

After Value Stream Mapping

4

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

After Value Stream Mapping

4

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

After Value Stream Mapping

4

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

After Value Stream Mapping

4

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

6931

After Value Stream Mapping

4

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

6931

Customer Signoff

712

After Value Stream Mapping

4

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

6931

Customer Signoff

712

After Value Stream Mapping

4

Licensed Under Creative Commons by Naresh Jain

Identify Constraints/bottleneck

Subordinate everything else and Elevate the Constraints/bottleneck

Set Goals

5

Licensed Under Creative Commons by Naresh Jain

Agenda

Some background about ToC and JIT

Technique

Open Discussion with examples from audience

6

Licensed Under Creative Commons by Naresh Jain

Theory of Constraint is based on the premise that...

“Every real system, such as a business, must have within it at least one constraint. If this were not the case then the system could produce unlimited amounts of whatever it was striving for, profit in the case of a business.……………….”

Dr Eli Goldratt

7

Licensed Under Creative Commons by Naresh Jain

“Theory of Constraints”

Global optimization does not emerge from local optima

8

Licensed Under Creative Commons by Naresh Jain

“Theory of Constraints”

Global optimization does not emerge from local optima

Managing by cost (optimizing local performance) is usually at odds with managing by throughput (exploiting constraints)

8

Licensed Under Creative Commons by Naresh Jain

Significance of bottlenecks

Maximum speed of the process is the speed of the slowest operation

Any improvements will be wasted unless the bottleneck is relieved

Bottlenecks must be identified and improved if the process is to be improved

9

Licensed Under Creative Commons by Naresh Jain

Significance of bottlenecks

Maximum speed of the process is the speed of the slowest operation

Any improvements will be wasted unless the bottleneck is relieved

Bottlenecks must be identified and improved if the process is to be improved

9

Licensed Under Creative Commons by Naresh Jain

Assume current constraints cannot be changed in the short-run

10

Licensed Under Creative Commons by Naresh Jain

Assume current constraints cannot be changed in the short-run

What should be produced now, with current resources, to maximize profits?

10

Licensed Under Creative Commons by Naresh Jain

How to apply ToC?

Step 1: Identify the system's constraint(s).

11

Licensed Under Creative Commons by Naresh Jain

How to apply ToC?

Step 1: Identify the system's constraint(s).

Step 2: Decide how to exploit the system's constraint(s).

11

Licensed Under Creative Commons by Naresh Jain

How to apply ToC?

Step 1: Identify the system's constraint(s).

Step 2: Decide how to exploit the system's constraint(s).

Step 3: Subordinate everything else to the decisions of Step 2.

11

Licensed Under Creative Commons by Naresh Jain

How to apply ToC?

Step 1: Identify the system's constraint(s).

Step 2: Decide how to exploit the system's constraint(s).

Step 3: Subordinate everything else to the decisions of Step 2.

Step 4: Elevate the system's constraint(s).

11

Licensed Under Creative Commons by Naresh Jain

How to apply ToC?

Step 1: Identify the system's constraint(s).

Step 2: Decide how to exploit the system's constraint(s).

Step 3: Subordinate everything else to the decisions of Step 2.

Step 4: Elevate the system's constraint(s).

Step 5: Back to Step 1, identify next constraint.

11

Licensed Under Creative Commons by Naresh Jain

Step 1: Identify the system’s constraint(s)

Goal?

12

Licensed Under Creative Commons by Naresh Jain

Step 1: Identify the system’s constraint(s)

Goal?

Throughput?

12

Licensed Under Creative Commons by Naresh Jain

Step 1: Identify the system’s constraint(s)

Goal?

Throughput?

Inventory?

12

Licensed Under Creative Commons by Naresh Jain

Step 1: Identify the system’s constraint(s)

Goal?

Throughput?

Inventory?

Operating Expense?

12

Licensed Under Creative Commons by Naresh Jain

Step 3: Subordinate everything else to the decisions of Step 2

14

Licensed Under Creative Commons by Naresh Jain

Step 5: Back to Step 1, identify next constraint.

What might happen if the constraint is elevated?

16

Licensed Under Creative Commons by Naresh Jain

ToC : 3 things can increase profitability of a plant

Decrease Inventory

Decrease Operating Expense

Increase Throughput

17

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?

Inventory

Features requested but not specified

Features specified and documented but not built

Code that's written but not tested

Code that's tested but not deployed to users

Code that's deployed but not used

18

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

19

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

Idle team members - Phased approach

19

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

Idle team members - Phased approach

Commercial Tools

19

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

Idle team members - Phased approach

Commercial Tools

Cost of change curve - rework

19

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

Idle team members - Phased approach

Commercial Tools

Cost of change curve - rework

Constant thrashing of ideas

19

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

Idle team members - Phased approach

Commercial Tools

Cost of change curve - rework

Constant thrashing of ideas

Technical Debt

19

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

20

Licensed Under Creative Commons by Naresh Jain

Source: Beyond Agile Software Development Becoming Lean, Mary Poppendieck, Poppendieck.llc

Utilization (%)

Queuing Theory

21

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

22

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

Heavyweight methodology

22

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

Heavyweight methodology

Poor choice of tools

22

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

Heavyweight methodology

Poor choice of tools

Real resource shortage

22

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

23

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

23

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

Extra Processing Steps = Extra Steps

23

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

Extra Processing Steps = Extra Steps

Motion = Finding Information

23

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

Extra Processing Steps = Extra Steps

Motion = Finding Information

Defects = Defects Not Caught by Tests

23

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

Extra Processing Steps = Extra Steps

Motion = Finding Information

Defects = Defects Not Caught by Tests

Waiting = Waiting, Including Customers

23

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

Extra Processing Steps = Extra Steps

Motion = Finding Information

Defects = Defects Not Caught by Tests

Waiting = Waiting, Including Customers

Transportation = Handoffs

23

Licensed Under Creative Commons by Naresh Jain

Just In Time

A pull system, driven by actual demand. The goal is to produce or provide one part just-in-time for the next operation. Reduces stock inventories, but leaves no room for schedule error. As much a managerial philosophy as it is an inventory system.

24

Licensed Under Creative Commons by Naresh Jain

Just In Time

A pull system, driven by actual demand. The goal is to produce or provide one part just-in-time for the next operation. Reduces stock inventories, but leaves no room for schedule error. As much a managerial philosophy as it is an inventory system.

Last Responsible Moment

24

Licensed Under Creative Commons by Naresh Jain

Just In Time

A pull system, driven by actual demand. The goal is to produce or provide one part just-in-time for the next operation. Reduces stock inventories, but leaves no room for schedule error. As much a managerial philosophy as it is an inventory system.

Last Responsible Moment

Just-In-Time Training - Training provided to individuals or units just before the skills or function taught will be used in a practical application. Typically used to teach perishable or infrequently used skills

24

Licensed Under Creative Commons by Naresh Jain

25

Licensed Under Creative Commons by Naresh Jain

Can we benefit more from ToC, JIT and Lean?

25

Licensed Under Creative Commons by Naresh Jain

What if...

We consider software team members as the machines in our software factories?

Can we apply ToC and benefit?

26

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Consider this...

27

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Consider this...

27

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Consider this...

27

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

6931

Consider this...

27

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

6931

Customer Signoff

712

Consider this...

27

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

6931

Customer Signoff

712

Consider this...

27

Licensed Under Creative Commons by Naresh Jain

Challenges making a Release

Developers not checking in frequently

Complicated and non-standard build process

Real Build owned by Config Mgmt Team

...

28

Licensed Under Creative Commons by Naresh Jain

Fixing Release issues by applying JIT Practice

Standardize build process for the whole team

29

Licensed Under Creative Commons by Naresh Jain

Fixing Release issues by applying JIT Practice

Standardize build process for the whole team

Manual integration on developers machines before checking in

29

Licensed Under Creative Commons by Naresh Jain

Fixing Release issues by applying JIT Practice

Standardize build process for the whole team

Manual integration on developers machines before checking in

Manual integration on an independent server machine

29

Licensed Under Creative Commons by Naresh Jain

Fixing Release issues by applying JIT Practice

Standardize build process for the whole team

Manual integration on developers machines before checking in

Manual integration on an independent server machine

Continuous integration using CI servers like CruiseControl

29

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

435

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

435

Customer Signoff

452

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Fix Bug

3020

Regression Testing

388

Making a release

435

Customer Signoff

452

After optimizing biggest bottleneck...

30

Licensed Under Creative Commons by Naresh Jain

After recursively applying ToC

Total time to fix any bug was 10 days...one two-week iteration

31

Licensed Under Creative Commons by Naresh Jain

After recursively applying ToC

Total time to fix any bug was 10 days...one two-week iteration

Find practices or techniques that help solve this problem and recurse.

31

Licensed Under Creative Commons by Naresh Jain

Summary

ToC and JIT can be applied to software team’s “business” process

Using Retrospectives and other techniques Identify biggest stinkers [bottlenecks]

Use a JIT practice to elevate the bottleneck

Baby Steps - No Silver Bullets!

Recurse

32

top related