99
Licensed Under Creative Commons by Naresh Jain Using ToC and JIT Practice to Coach Agile Teams Naresh Jain [email protected] 1

Using ToC And JIT Practice To Coach Agile Teams

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 2: Using ToC And JIT Practice To Coach Agile Teams

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

Page 3: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Customer Signoff

71

Consider this...

3

Page 5: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

After Value Stream Mapping

4

Page 6: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

After Value Stream Mapping

4

Page 7: Using ToC And JIT Practice To Coach Agile Teams

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

Page 8: Using ToC And JIT Practice To Coach Agile Teams

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

Page 9: Using ToC And JIT Practice To Coach Agile Teams

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

Page 10: Using ToC And JIT Practice To Coach Agile Teams

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

Page 11: Using ToC And JIT Practice To Coach Agile Teams

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

Page 12: Using ToC And JIT Practice To Coach Agile Teams

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

Page 13: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Identify Constraints/bottleneck

Subordinate everything else and Elevate the Constraints/bottleneck

Set Goals

5

Page 14: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Agenda

Some background about ToC and JIT

Technique

Open Discussion with examples from audience

6

Page 15: Using ToC And JIT Practice To Coach Agile Teams

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

Page 17: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

“Theory of Constraints”

Global optimization does not emerge from local optima

8

Page 18: Using ToC And JIT Practice To Coach Agile Teams

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

Page 19: Using ToC And JIT Practice To Coach Agile Teams

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

Page 20: Using ToC And JIT Practice To Coach Agile Teams

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

Page 21: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Assume current constraints cannot be changed in the short-run

10

Page 22: Using ToC And JIT Practice To Coach Agile Teams

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

Page 24: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How to apply ToC?

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

11

Page 25: Using ToC And JIT Practice To Coach Agile Teams

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

Page 26: Using ToC And JIT Practice To Coach Agile Teams

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

Page 27: Using ToC And JIT Practice To Coach Agile Teams

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

Page 28: Using ToC And JIT Practice To Coach Agile Teams

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

Page 30: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

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

Goal?

12

Page 31: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

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

Goal?

Throughput?

12

Page 32: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

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

Goal?

Throughput?

Inventory?

12

Page 33: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

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

Goal?

Throughput?

Inventory?

Operating Expense?

12

Page 34: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

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

13

Page 35: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

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

14

Page 37: Using ToC And JIT Practice To Coach Agile Teams

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

Page 38: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

ToC : 3 things can increase profitability of a plant

Decrease Inventory

Decrease Operating Expense

Increase Throughput

17

Page 41: Using ToC And JIT Practice To Coach Agile Teams

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

Page 43: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

19

Page 44: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

Idle team members - Phased approach

19

Page 45: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Operating expenses

Idle team members - Phased approach

Commercial Tools

19

Page 46: Using ToC And JIT Practice To Coach Agile Teams

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

Page 47: Using ToC And JIT Practice To Coach Agile Teams

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

Page 48: Using ToC And JIT Practice To Coach Agile Teams

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

Page 49: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

20

Page 50: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

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

Utilization (%)

Queuing Theory

21

Page 52: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

22

Page 53: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

22

Page 54: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

How does ToC apply to Software projects?...

Throughput

Large batch Size - Queuing Theory

Heavyweight methodology

22

Page 55: Using ToC And JIT Practice To Coach Agile Teams

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

Page 56: Using ToC And JIT Practice To Coach Agile Teams

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

Page 58: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

23

Page 59: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

23

Page 60: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Using Lean principles to Identify Waste

Overproduction = Extra Features

Inventory = Requirements

Extra Processing Steps = Extra Steps

23

Page 61: Using ToC And JIT Practice To Coach Agile Teams

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

Page 62: Using ToC And JIT Practice To Coach Agile Teams

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

Page 63: Using ToC And JIT Practice To Coach Agile Teams

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

Page 64: Using ToC And JIT Practice To Coach Agile Teams

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

Page 66: Using ToC And JIT Practice To Coach Agile Teams

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

Page 67: Using ToC And JIT Practice To Coach Agile Teams

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

Page 68: Using ToC And JIT Practice To Coach Agile Teams

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

Page 69: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

25

Page 70: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Can we benefit more from ToC, JIT and Lean?

25

Page 71: Using ToC And JIT Practice To Coach Agile Teams

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

Page 74: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Consider this...

27

Page 75: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

Write failing test

102

Consider this...

27

Page 76: Using ToC And JIT Practice To Coach Agile Teams

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

Page 77: Using ToC And JIT Practice To Coach Agile Teams

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

Page 78: Using ToC And JIT Practice To Coach Agile Teams

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

Page 79: Using ToC And JIT Practice To Coach Agile Teams

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

Page 80: Using ToC And JIT Practice To Coach Agile Teams

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

Page 81: Using ToC And JIT Practice To Coach Agile Teams

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

Page 83: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Fixing Release issues by applying JIT Practice

Standardize build process for the whole team

29

Page 84: Using ToC And JIT Practice To Coach Agile Teams

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

Page 85: Using ToC And JIT Practice To Coach Agile Teams

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

Page 86: Using ToC And JIT Practice To Coach Agile Teams

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

Page 88: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

After optimizing biggest bottleneck...

30

Page 89: Using ToC And JIT Practice To Coach Agile Teams

Licensed Under Creative Commons by Naresh Jain

Time in days

Bug reported

0

Reproduce Bug

88

After optimizing biggest bottleneck...

30

Page 90: Using ToC And JIT Practice To Coach Agile Teams

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

Page 91: Using ToC And JIT Practice To Coach Agile Teams

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

Page 92: Using ToC And JIT Practice To Coach Agile Teams

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

Page 93: Using ToC And JIT Practice To Coach Agile Teams

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

Page 94: Using ToC And JIT Practice To Coach Agile Teams

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

Page 95: Using ToC And JIT Practice To Coach Agile Teams

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

Page 97: Using ToC And JIT Practice To Coach Agile Teams

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

Page 98: Using ToC And JIT Practice To Coach Agile Teams

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

Page 99: Using ToC And JIT Practice To Coach Agile Teams

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