using toc and jit practice to coach agile teams
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
Using ToC and JIT Practice to Coach Agile Teams
Naresh [email protected]
1
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
Customer Signoff
71
Consider this...
3
Licensed Under Creative Commons by Naresh Jain
After Value Stream Mapping
4
Licensed Under Creative Commons by Naresh Jain
Time in days
Bug reported
0
After Value Stream Mapping
4
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”
8
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?
11
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)
12
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 2: Decide how to exploit the system’s constraint(s)
13
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 4: Elevate the system’s constraint(s)
15
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?
18
Licensed Under Creative Commons by Naresh Jain
How does ToC apply to Software projects?
Inventory
18
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?...
19
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?...
22
Licensed Under Creative Commons by Naresh Jain
How does ToC apply to Software projects?...
Throughput
22
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
23
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
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.
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
Consider this...
27
Licensed Under Creative Commons by Naresh Jain
Time in days
Bug reported
0
Consider this...
27
Licensed Under Creative Commons by Naresh Jain
Time in days
Bug reported
0
Reproduce Bug
88
Consider this...
27
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
29
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
After optimizing biggest bottleneck...
30
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
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
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