1. Using ToC and JIT Practice
to Coach Agile Teams
Naresh Jain
naresh@industriallogic.com
Licensed Under Creative Commons by Naresh Jain
1
2. Example Context
Large Enterprise clients [450 ppl + 30 teams]
Huge communication and delivery issues
Help teams adopt Agile thinking
Licensed Under Creative Commons by Naresh Jain
2
4. After Value Stream Mapping
Licensed Under Creative Commons by Naresh Jain
4
5. After Value Stream Mapping
Bug reported
0
Time in days
Licensed Under Creative Commons by Naresh Jain
4
6. After Value Stream Mapping
Reproduce Bug
Bug reported
0 8
8
Time in days
Licensed Under Creative Commons by Naresh Jain
4
7. After Value Stream Mapping
Write failing test
Reproduce Bug
Bug reported
0 8 10
8 2
Time in days
Licensed Under Creative Commons by Naresh Jain
4
8. After Value Stream Mapping
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30
8 2 20
Time in days
Licensed Under Creative Commons by Naresh Jain
4
9. After Value Stream Mapping
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38
8 2 20 8
Time in days
Licensed Under Creative Commons by Naresh Jain
4
10. After Value Stream Mapping
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 69
8 2 20 8 31
Time in days
Licensed Under Creative Commons by Naresh Jain
4
11. After Value Stream Mapping
Customer Signoff
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 69 71
8 2 20 8 31 2
Time in days
Licensed Under Creative Commons by Naresh Jain
4
12. After Value Stream Mapping
Customer Signoff
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 69 71
8 2 20 8 31 2
Time in days
Licensed Under Creative Commons by Naresh Jain
4
13. Identify Constraints/
bottleneck
Subordinate everything
else and Elevate the Set Goals
Constraints/bottleneck
Licensed Under Creative Commons by Naresh Jain
5
14. Agenda
Some background about ToC and JIT
Technique
Open Discussion with examples from audience
Licensed Under Creative Commons by Naresh Jain
6
15. 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
Licensed Under Creative Commons by Naresh Jain
7
17. “Theory of Constraints”
Global optimization does not emerge from local
optima
Licensed Under Creative Commons by Naresh Jain
8
18. “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)
Licensed Under Creative Commons by Naresh Jain
8
19. 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
Licensed Under Creative Commons by Naresh Jain
9
20. 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
Licensed Under Creative Commons by Naresh Jain
9
21. Assume current constraints cannot
be changed in the short-run
Licensed Under Creative Commons by Naresh Jain
10
22. Assume current constraints cannot
be changed in the short-run
What should be produced now, with current resources, to maximize profits?
Licensed Under Creative Commons by Naresh Jain
10
23. How to apply ToC?
Licensed Under Creative Commons by Naresh Jain
11
24. How to apply ToC?
Step 1: Identify the system's constraint(s).
Licensed Under Creative Commons by Naresh Jain
11
25. How to apply ToC?
Step 1: Identify the system's constraint(s).
Step 2: Decide how to exploit the system's constraint(s).
Licensed Under Creative Commons by Naresh Jain
11
26. 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.
Licensed Under Creative Commons by Naresh Jain
11
27. 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).
Licensed Under Creative Commons by Naresh Jain
11
28. 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.
Licensed Under Creative Commons by Naresh Jain
11
29. Step 1: Identify the system’s constraint(s)
Licensed Under Creative Commons by Naresh Jain
12
30. Step 1: Identify the system’s constraint(s)
Goal?
Licensed Under Creative Commons by Naresh Jain
12
31. Step 1: Identify the system’s constraint(s)
Goal?
Throughput?
Licensed Under Creative Commons by Naresh Jain
12
32. Step 1: Identify the system’s constraint(s)
Goal?
Throughput?
Inventory?
Licensed Under Creative Commons by Naresh Jain
12
33. Step 1: Identify the system’s constraint(s)
Goal?
Throughput?
Inventory?
Operating Expense?
Licensed Under Creative Commons by Naresh Jain
12
34. Step 2: Decide how to exploit
the system’s constraint(s)
Licensed Under Creative Commons by Naresh Jain
13
35. Step 3: Subordinate everything
else to the decisions of Step 2
Licensed Under Creative Commons by Naresh Jain
14
36. Step 4: Elevate the system’s constraint(s)
Licensed Under Creative Commons by Naresh Jain
15
37. Step 5: Back to Step 1, identify next
constraint.
What might happen if the constraint is elevated?
Licensed Under Creative Commons by Naresh Jain
16
38. ToC : 3 things can increase
profitability of a plant
Decrease Inventory
Decrease Operating Expense
Increase Throughput
Licensed Under Creative Commons by Naresh Jain
17
39. How does ToC apply to
Software projects?
Licensed Under Creative Commons by Naresh Jain
18
40. How does ToC apply to
Software projects?
Inventory
Licensed Under Creative Commons by Naresh Jain
18
41. 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
Licensed Under Creative Commons by Naresh Jain
18
42. How does ToC apply to
Software projects?...
Licensed Under Creative Commons by Naresh Jain
19
43. How does ToC apply to
Software projects?...
Operating expenses
Licensed Under Creative Commons by Naresh Jain
19
44. How does ToC apply to
Software projects?...
Operating expenses
Idle team members - Phased approach
Licensed Under Creative Commons by Naresh Jain
19
45. How does ToC apply to
Software projects?...
Operating expenses
Idle team members - Phased approach
Commercial Tools
Licensed Under Creative Commons by Naresh Jain
19
46. How does ToC apply to
Software projects?...
Operating expenses
Idle team members - Phased approach
Commercial Tools
Cost of change curve - rework
Licensed Under Creative Commons by Naresh Jain
19
47. 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
Licensed Under Creative Commons by Naresh Jain
19
48. 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
Licensed Under Creative Commons by Naresh Jain
19
49. How does ToC apply to
Software projects?...
Throughput
Large batch Size - Queuing Theory
Licensed Under Creative Commons by Naresh Jain
20
50. Queuing Theory
Utilization (%)
Source: Beyond Agile Software Development Becoming Lean, Mary Poppendieck, Poppendieck.llc
Licensed Under Creative Commons by Naresh Jain
21
51. How does ToC apply to
Software projects?...
Licensed Under Creative Commons by Naresh Jain
22
52. How does ToC apply to
Software projects?...
Throughput
Licensed Under Creative Commons by Naresh Jain
22
53. How does ToC apply to
Software projects?...
Throughput
Large batch Size - Queuing Theory
Licensed Under Creative Commons by Naresh Jain
22
54. How does ToC apply to
Software projects?...
Throughput
Large batch Size - Queuing Theory
Heavyweight methodology
Licensed Under Creative Commons by Naresh Jain
22
55. How does ToC apply to
Software projects?...
Throughput
Large batch Size - Queuing Theory
Heavyweight methodology
Poor choice of tools
Licensed Under Creative Commons by Naresh Jain
22
56. How does ToC apply to
Software projects?...
Throughput
Large batch Size - Queuing Theory
Heavyweight methodology
Poor choice of tools
Real resource shortage
Licensed Under Creative Commons by Naresh Jain
22
57. Using Lean principles to Identify Waste
Licensed Under Creative Commons by Naresh Jain
23
58. Using Lean principles to Identify Waste
Overproduction = Extra Features
Licensed Under Creative Commons by Naresh Jain
23
59. Using Lean principles to Identify Waste
Overproduction = Extra Features
Inventory = Requirements
Licensed Under Creative Commons by Naresh Jain
23
60. Using Lean principles to Identify Waste
Overproduction = Extra Features
Inventory = Requirements
Extra Processing Steps = Extra Steps
Licensed Under Creative Commons by Naresh Jain
23
61. Using Lean principles to Identify Waste
Overproduction = Extra Features
Inventory = Requirements
Extra Processing Steps = Extra Steps
Motion = Finding Information
Licensed Under Creative Commons by Naresh Jain
23
62. 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
Licensed Under Creative Commons by Naresh Jain
23
63. 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
Licensed Under Creative Commons by Naresh Jain
23
64. 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
Licensed Under Creative Commons by Naresh Jain
23
66. 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.
Licensed Under Creative Commons by Naresh Jain
24
67. 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
Licensed Under Creative Commons by Naresh Jain
24
68. 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
Licensed Under Creative Commons by Naresh Jain
24
70. Can we benefit more from
ToC, JIT and Lean?
Licensed Under Creative Commons by Naresh Jain
25
71. What if...
We consider software team members as the machines in our software
factories?
Can we apply ToC and benefit?
Licensed Under Creative Commons by Naresh Jain
26
74. Consider this...
Reproduce Bug
Bug reported
0 8
8
Time in days
Licensed Under Creative Commons by Naresh Jain
27
75. Consider this...
Write failing test
Reproduce Bug
Bug reported
0 8 10
8 2
Time in days
Licensed Under Creative Commons by Naresh Jain
27
76. Consider this...
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30
8 2 20
Time in days
Licensed Under Creative Commons by Naresh Jain
27
77. Consider this...
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38
8 2 20 8
Time in days
Licensed Under Creative Commons by Naresh Jain
27
78. Consider this...
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 69
8 2 20 8 31
Time in days
Licensed Under Creative Commons by Naresh Jain
27
79. Consider this...
Customer Signoff
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 69 71
8 2 20 8 31 2
Time in days
Licensed Under Creative Commons by Naresh Jain
27
80. Consider this...
Customer Signoff
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 69 71
8 2 20 8 31 2
Time in days
Licensed Under Creative Commons by Naresh Jain
27
81. Challenges making a Release
Developers not checking in frequently
Complicated and non-standard build process
Real Build owned by Config Mgmt Team
...
Licensed Under Creative Commons by Naresh Jain
28
82. Fixing Release issues by
applying JIT Practice
Licensed Under Creative Commons by Naresh Jain
29
83. Fixing Release issues by
applying JIT Practice
Standardize build process for the whole team
Licensed Under Creative Commons by Naresh Jain
29
84. Fixing Release issues by
applying JIT Practice
Standardize build process for the whole team
Manual integration on developers machines before checking in
Licensed Under Creative Commons by Naresh Jain
29
85. 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
Licensed Under Creative Commons by Naresh Jain
29
86. 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
Licensed Under Creative Commons by Naresh Jain
29
88. After optimizing biggest bottleneck...
Bug reported
0
Time in days
Licensed Under Creative Commons by Naresh Jain
30
89. After optimizing biggest bottleneck...
Reproduce Bug
Bug reported
0 8
8
Time in days
Licensed Under Creative Commons by Naresh Jain
30
90. After optimizing biggest bottleneck...
Write failing test
Reproduce Bug
Bug reported
0 8 10
8 2
Time in days
Licensed Under Creative Commons by Naresh Jain
30
91. After optimizing biggest bottleneck...
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30
8 2 20
Time in days
Licensed Under Creative Commons by Naresh Jain
30
92. After optimizing biggest bottleneck...
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38
8 2 20 8
Time in days
Licensed Under Creative Commons by Naresh Jain
30
93. After optimizing biggest bottleneck...
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 43
8 2 20 8 5
Time in days
Licensed Under Creative Commons by Naresh Jain
30
94. After optimizing biggest bottleneck...
Customer Signoff
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 43 45
8 2 20 8 5 2
Time in days
Licensed Under Creative Commons by Naresh Jain
30
95. After optimizing biggest bottleneck...
Customer Signoff
Making a release
Regression Testing
Fix Bug
Write failing test
Reproduce Bug
Bug reported
0 8 10 30 38 43 45
8 2 20 8 5 2
Time in days
Licensed Under Creative Commons by Naresh Jain
30
97. After recursively applying ToC
Total time to fix any bug was 10 days...one two-week iteration
Licensed Under Creative Commons by Naresh Jain
31
98. 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.
Licensed Under Creative Commons by Naresh Jain
31
99. 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
Licensed Under Creative Commons by Naresh Jain
32