Using the Theory of Constraints to Using the Theory of Constraints - - PDF document

using the theory of constraints to using the theory of
SMART_READER_LITE
LIVE PREVIEW

Using the Theory of Constraints to Using the Theory of Constraints - - PDF document

T8 Concurrent Session Thursday 12/06/2007 12:45 PM Using the Theory of Constraints to Using the Theory of Constraints to Coach Agile Teams Coach Agile Teams Presented by: Naresh Jain ThoughtWorks Presented at: Agile Development Practices


slide-1
SLIDE 1

T8

Concurrent Session

Thursday 12/06/2007 12:45 PM

Using the Theory of Constraints to Using the Theory of Constraints to Coach Agile Teams Coach Agile Teams

Presented by: Naresh Jain ThoughtWorks

Presented at: Agile Development Practices December 3-6, 2007; Orlando, FL, USA 330 Corporate Way, Suite 300, Orange Park, FL 32043 888-268-8770 904-278-0524 sqeinfo@sqe.com www.sqe.com

slide-2
SLIDE 2

Naresh Jain Naresh Jain is a software craftsman working as a consultant for ThoughtWorks India. He has worked on a variety of software projects utilizing XP, Scrum, Crystal and CMMI5i in India and the US. Naresh is the founder and vice-chairman of the Agile Software Community of India (ASCI ) and the organizer of the Simple Design and Testing Conference (SDTConf). He has helped start various agile user groups including the Agile Philly User Group and several groups in

  • India. By becoming part of a team, Naresh helps

software companies embrace agile. Naresh enjoys beer, music, adventure sports, and spicy food of any

  • color. You can reach him at naresh@agilefaqs.com.
slide-3
SLIDE 3

Using ToC and JIT to Coach Agile Teams

Naresh Jain naresh@agilefaqs.com

1

slide-4
SLIDE 4

Agenda

  • Some background about ToC and JIT
  • Context
  • Technique
  • Examples

2

slide-5
SLIDE 5

“Theory of Constraints”

3

slide-6
SLIDE 6

“Theory of Constraints”

Global optimization does not emerge from local optima

3

slide-7
SLIDE 7

“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)

3

slide-8
SLIDE 8

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

4

slide-9
SLIDE 9

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

4

slide-10
SLIDE 10

Assumes current constraints cannot be changed in the short-run

5

slide-11
SLIDE 11

Assumes current constraints cannot be changed in the short-run

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

5

slide-12
SLIDE 12

ToC 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

6

slide-13
SLIDE 13

How to apply ToC?

7

slide-14
SLIDE 14

How to apply ToC?

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

7

slide-15
SLIDE 15

How to apply ToC?

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

constraint(s).

7

slide-16
SLIDE 16

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.

7

slide-17
SLIDE 17

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

7

slide-18
SLIDE 18

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.

7

slide-19
SLIDE 19

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

8

slide-20
SLIDE 20

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

  • Goal?

8

slide-21
SLIDE 21

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

  • Goal?
  • Throughput?

8

slide-22
SLIDE 22

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

  • Goal?
  • Throughput?
  • Inventory?

8

slide-23
SLIDE 23

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

  • Goal?
  • Throughput?
  • Inventory?
  • Operating Expense?

8

slide-24
SLIDE 24

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

9

slide-25
SLIDE 25

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

10

slide-26
SLIDE 26

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

11

slide-27
SLIDE 27

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

What might happen if the constraint is elevated?

12

slide-28
SLIDE 28

ToC : 3 things can increase profitability of a plant

  • Decrease Inventory
  • Decrease Operating Expense
  • Increase Throughput

13

slide-29
SLIDE 29

How does ToC apply to Software projects?

14

slide-30
SLIDE 30

How does ToC apply to Software projects?

  • Inventory

14

slide-31
SLIDE 31

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

14

slide-32
SLIDE 32

How does ToC apply to Software projects?...

15

slide-33
SLIDE 33

How does ToC apply to Software projects?...

  • Operating expenses

15

slide-34
SLIDE 34

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

15

slide-35
SLIDE 35

How does ToC apply to Software projects?...

  • Throughput
  • Large batch Size - Queuing Theory

16

slide-36
SLIDE 36

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

Utilization (%)

Queuing Theory

17

slide-37
SLIDE 37

How does ToC apply to Software projects?...

18

slide-38
SLIDE 38

How does ToC apply to Software projects?...

  • Throughput

18

slide-39
SLIDE 39

How does ToC apply to Software projects?...

  • Throughput
  • Large batch Size - Queuing Theory
  • Heavyweight methodology
  • Poor choice of tools
  • Real resource shortage

18

slide-40
SLIDE 40

Using Lean principles to Identify Waste

19

slide-41
SLIDE 41

Using Lean principles to Identify Waste

  • Overproduction = Extra Features

19

slide-42
SLIDE 42

Using Lean principles to Identify Waste

  • Overproduction = Extra Features
  • Inventory = Requirements

19

slide-43
SLIDE 43

Using Lean principles to Identify Waste

  • Overproduction = Extra Features
  • Inventory = Requirements
  • Extra Processing Steps = Extra Steps

19

slide-44
SLIDE 44

Using Lean principles to Identify Waste

  • Overproduction = Extra Features
  • Inventory = Requirements
  • Extra Processing Steps = Extra Steps
  • Motion = Finding Information

19

slide-45
SLIDE 45

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

19

slide-46
SLIDE 46

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

19

slide-47
SLIDE 47

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

19

slide-48
SLIDE 48

Just In Time

20

slide-49
SLIDE 49

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.

20

slide-50
SLIDE 50

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

20

slide-51
SLIDE 51

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

20

slide-52
SLIDE 52

21

slide-53
SLIDE 53

Can we benefit more from ToC, JIT and Lean?

21

slide-54
SLIDE 54

Context

  • Large Enterprise clients [450 ppl + 30 teams]
  • Huge communication and delivery issues
  • Help teams adopt Agile thinking

22

slide-55
SLIDE 55

What if...

  • We consider software team members as the

machines in our software factories?

  • Can we apply ToC and benefit?

23

slide-56
SLIDE 56

Consider this...

24

slide-57
SLIDE 57

Consider this...

Time in days

24

slide-58
SLIDE 58

Consider this...

Time in days

Bug reported

24

slide-59
SLIDE 59

Consider this...

Time in days

Bug reported Reproduce Bug 8

8

24

slide-60
SLIDE 60

Consider this...

Time in days

Bug reported Reproduce Bug 8

8

Write failing test 10

2

24

slide-61
SLIDE 61

Consider this...

Time in days

Bug reported Reproduce Bug 8

8

Write failing test 10

2

Fix Bug 30

20

24

slide-62
SLIDE 62

Consider this...

Time in days

Bug reported Reproduce Bug 8

8

Write failing test 10

2

Fix Bug 30

20

Regression Testing 38

8

24

slide-63
SLIDE 63

Consider this...

Time in days

Bug reported Reproduce Bug 8

8

Write failing test 10

2

Fix Bug 30

20

Regression Testing 38

8

Making a release 69

31

24

slide-64
SLIDE 64

Consider this...

Time in days

Bug reported Reproduce Bug 8

8

Write failing test 10

2

Fix Bug 30

20

Regression Testing 38

8

Making a release 69

31

Customer Signoff 71

5

24

slide-65
SLIDE 65

Consider this...

Time in days

Bug reported Reproduce Bug 8

8

Write failing test 10

2

Fix Bug 30

20

Regression Testing 38

8

Making a release 69

31

Customer Signoff 71

5

24

slide-66
SLIDE 66

Challenges making a Release

  • Developers not checking in frequently
  • Complicated and non-standard build process
  • Real Build owned by Config Mgmt Team
  • ...

25

slide-67
SLIDE 67

Fixing Release issues by applying JIT Practice

26

slide-68
SLIDE 68

Fixing Release issues by applying JIT Practice

  • Standardize build process for the whole team

26

slide-69
SLIDE 69

Fixing Release issues by applying JIT Practice

  • Standardize build process for the whole team
  • Manual integration on developers machines

before checking in

26

slide-70
SLIDE 70

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

26

slide-71
SLIDE 71

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

26

slide-72
SLIDE 72

After optimizing biggest bottleneck...

Time in days

Bug reported Reproduce Bug Write failing test Fix Bug Regression Testing Making a release Customer Signoff 8 10 30 38 44 49

8 2 20 8 6 5

27

slide-73
SLIDE 73

After optimizing biggest bottleneck...

Time in days

Bug reported Reproduce Bug Write failing test Fix Bug Regression Testing Making a release Customer Signoff 8 10 30 38 44 49

8 2 20 8 6 5

27

slide-74
SLIDE 74

After recursively applying ToC

  • Total time to fix any bug was 10 days...one

two-week iteration

28

slide-75
SLIDE 75

Thank You

naresh@agilefaqs.com

29