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
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.
Using ToC and JIT to Coach Agile Teams Naresh Jain naresh@agilefaqs.com 1
Agenda • Some background about ToC and JIT • Context • Technique • Examples 2
“Theory of Constraints” 3
“Theory of Constraints” Global optimization does not emerge from local optima 3
“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
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
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
Assumes current constraints cannot be changed in the short-run 5
Assumes current constraints cannot be changed in the short-run What should be produced now, with current resources, to maximize profits? 5
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
How to apply ToC? 7
How to apply ToC? • Step 1: Identify the system's constraint(s). 7
How to apply ToC? • Step 1: Identify the system's constraint(s). • Step 2: Decide how to exploit the system's constraint(s). 7
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
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
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
Step 1: Identify the system’s constraint(s). 8
Step 1: Identify the system’s constraint(s). • Goal? 8
Step 1: Identify the system’s constraint(s). • Goal? • Throughput? 8
Step 1: Identify the system’s constraint(s). • Goal? • Throughput? • Inventory? 8
Step 1: Identify the system’s constraint(s). • Goal? • Throughput? • Inventory? • Operating Expense? 8
Step 2: Decide how to exploit the system’s constraint(s). 9
Step 3: Subordinate everything else to the decisions of Step 2 10
Step 4: Elevate the system’s constraint(s). 11
Step 5: Back to Step 1, identify next constraint. What might happen if the constraint is elevated? 12
ToC : 3 things can increase profitability of a plant • Decrease Inventory • Decrease Operating Expense • Increase Throughput 13
How does ToC apply to Software projects? 14
How does ToC apply to Software projects? • Inventory 14
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
How does ToC apply to Software projects?... 15
How does ToC apply to Software projects?... • Operating expenses 15
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
How does ToC apply to Software projects?... • Throughput • Large batch Size - Queuing Theory 16
Queuing Theory Utilization (%) Source: Beyond Agile Software Development Becoming Lean, Mary Poppendieck, Poppendieck.llc 17
How does ToC apply to Software projects?... 18
How does ToC apply to Software projects?... • Throughput 18
How does ToC apply to Software projects?... • Throughput • Large batch Size - Queuing Theory • Heavyweight methodology • Poor choice of tools • Real resource shortage 18
Using Lean principles to Identify Waste 19
Using Lean principles to Identify Waste • Overproduction = Extra Features 19
Using Lean principles to Identify Waste • Overproduction = Extra Features • Inventory = Requirements 19
Using Lean principles to Identify Waste • Overproduction = Extra Features • Inventory = Requirements • Extra Processing Steps = Extra Steps 19
Using Lean principles to Identify Waste • Overproduction = Extra Features • Inventory = Requirements • Extra Processing Steps = Extra Steps • Motion = Finding Information 19
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
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
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
Just In Time 20
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
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
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
21
Can we benefit more from ToC, JIT and Lean? 21
Context • Large Enterprise clients [450 ppl + 30 teams] • Huge communication and delivery issues • Help teams adopt Agile thinking 22
What if... • We consider software team members as the machines in our software factories? • Can we apply ToC and benefit? 23
Consider this... 24
Consider this... Time in days 24
Consider this... Bug reported 0 Time in days 24
Consider this... Reproduce Bug Bug reported 0 8 8 Time in days 24
Consider this... Write failing test Reproduce Bug Bug reported 0 8 10 8 2 Time in days 24
Consider this... Fix Bug Write failing test Reproduce Bug Bug reported 0 8 10 30 8 2 20 Time in days 24
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 24
Recommend
More recommend