Blog : April 2008

Wednesday, April 23, 2008

Two Types of Bottleneck

In some of the early Theory of Constraints literature Eli Goldratt would talk about three types of bottleneck - capacity constrained resources (CCRs), policies and market constraints. In recent, years he changed his mind and simplified the model. Policies are no longer constraints, they are merely exploitation or subordination techniques - elements 2 and 3 of his Five Focusing Steps.

Later in a lecture I remember watching Eli tell a story of how he’d scolded a client (or maybe it was a consultant) for confusing a non-instant availability resource with a capacity constrained resource. He argued that non-instant availability resources are not constraints because they are not capacity constrained. The non-instant availability is the side-effect of a policy that controls the process. However, I believe that we can still call these bottlenecks.

Hence, I now teach that there are two types of bottleneck: capacity constrained resources CCRs; and non-instant availability resources [we need a good acronym (TLA) for these wink ???]

Only CCRs should be treated with the Five Focusing Steps: identify the constraint; decide how to exploit the constraint; subordinate all else in the system to the decision in 2; elevate the constraint (i.e. add capacity); do not inertia prevent you repeating by identifying the next constraint and starting again at 2.

Non-instant availability resources exhibit bottleneck behavior but we don’t try to exploit them as first step to improving the throughput. The reason there is a lack of throughput is lack of availability. We must identify the policies, transaction costs, coordination costs or other physical constraints that cause the non-instant availability.

For example, an ambulance is a non-instant availability resource because it must be dispatched from a central base like a hospital and it must travel to the location. We can improve availability (response time) by locating ambulances closer to where they might be needed. To illustrate this, imagine a seaside town that is a popular retirement destination such as Largs in Scotland (a town where I lived 20 years ago.) Largs with a population of 11,000 is too small to support a hospital let alone an accident and emergency (ER) department. The closest one was around 20 miles distant. To improve response time for ambulances, the ambulance service stationed vehicles in Largs even though there was no depot or hospital. This is an example of improving availability on a resource that impedes flow of value in the system.

The dispatching of the ambulance and its travel time must be seen (economically) as a transaction cost on the delivery of value. In Lean terms all transaction costs are waste. So non-instant availability is waste. Hence, improving availability is a way to reduce waste. It also improves flow and alleviates a bottleneck.

So how can we describe this generically in order to abstract a set or rules or principles for dealing with non-instant availability bottlenecks in process flow?

Figure 1. Doug Burris, build engineer and a kanban board showing the “Build Ready” state

At Corbis, we discovered that our build engineers such as Doug Burris pictured in Figure 1 were a non-instant availability resource.

We had in place a policy which stated that only build engineers could build code and push it from our development code-line in to our test environment. This policy existed in order to maintain the integrity of our test environment. Developers, through prior bad behavior, were not trusted to keep the test environment in working order and the negative effect that this had on the team was sufficient that the policy that only build engineers can touch the test environment had been introduced.

Further, we had a policy that our build engineers were generalists within their own field of configuration management. They each had to work three different types of problem: build code for test; maintain pre-production environments, applying software patches and configurations; and build out new environments. Each of these types of work required different amounts of time and effort: builds approximately 15 minutes to 2 hours; maintenance up to 2 days; and environment builds up to 2 months. In order to cope with the different time scales across the three different types of work, the team members multi-tasked by (effectively) time-slicing their effort across the three types. Hence, build was a non-instant availability resource, as the build could only be undertaken when the build engineer was in “build” mode and not in “maintenance” mode or “environment build” mode.

What is important about all of this is to understand that all of this is controlled by policies, and that management has it within its power to change those policies.

So for example, do we want to have instant availability build engineering? do we really need the policy that developers are considered untrustworthy and are not permitted to build code on their own?

In the end, we settled for a multi-faceted approach to attack this problem: invest in automation - a long term strategy; increase the time slice for build from some of the engineers; relax the no developer can build policy under some circumstances.

I’m still distilling out the abstract set of rules for improving throughput through non-instant availability bottlenecks. I’ll publish more as develop it.

For now, it is enough to question: is this bottleneck truly a CCR? or is it a non-instant availability problem? If it is a CCR apply the Five Focusing Steps. If its a non-instant availability problem, examine the policies, transaction costs, coordination costs or physical obstacles that cause it to be non-instant availability and consider what you can change to improve availability. Technorati tag: David+Anderson, Software+Engineering, Kanban, Lean

Posted by David on 04/23 at 12:55 PM KanbanLean • (0) TrackbacksPermalink

Detecting Bottlenecks in a Kanban System

How do you identify a bottleneck in a kanban system? For the last 5 years, I’ve been teaching teams to identify bottlenecks using Cumulative Flow Diagrams (CFDs), Figure 1. A growing gap shown as a bulge in a colored section of the graph indicates growth in work-in-progress (WIP). And this illustrates where the bottleneck is to be found.

Figure 1. Cumulative Flow Diagram showing “design” step as a bottleneck

However, in a kanban system the WIP is limited and the CFD (Figure 2) does not typically exhibit a bulge like the one in figure 1.

Figure 2. Kanban system CFD with no noticable bottleneck indicator

So how do you detect bottlenecks in a kanban system?

Bottlenecks are not indicated by inventory build up. They are indicated by ragged flow of WIP through states in the process. When things are not moving smoothly a bottleneck is indicated. There are two ways to see this. One is dynamic, by looking at the kanban board every day at the standup meeting and observing that things are not moving. The second is to observe vacant space on the kanban board - WIP dropping to zero at a given state or set of states in the process, as seen in Figure 3.

Figure 3. Kanban board showing a section of zero inventory indicating a bottleneck in front of this area

As work continues to be pulled through to the end of the board - the software release - a bottleneck will be indicated by an opening gap in WIP. Things cannot be pulled through the system despite downstream capacity because of the bottleneck.

Hence, in a kanban system the CFD behavior is inverted. A band of zero inventory on a CFD would indicate a bottleneck directly before it. (Unfortunately, I don’t have a good report graphic to demonstrate this. I’ll need to make one.) Technorati tag: David+Anderson, Software+Engineering, Kanban, Lean

Posted by David on 04/23 at 12:11 PM KanbanLean • (0) TrackbacksPermalink

Tuesday, April 15, 2008

Keep the Date: APLN Seattle Summit

The next APLN regional Leadership Summit will be held in Seattle on July 17th and 18th at the Edgewater Hotel on Seattle’s seafront. We’re going to have an exciting line up of speakers and we’re hoping to keep the ticket price low by covering many of the costs with sponsorship. Keep the date. I hope to see many of you join us and enjoy the beautiful North West summer while developing your skills and your personal network and supporting the APLN. What a combination! Hold July 17-18 on your calendar now! :-D Technorati tag: Agile, APLN

Posted by David on 04/15 at 04:58 AM (0) TrackbacksPermalink

Wednesday, April 09, 2008

Best at QCon London

At least one QCon goer shows good taste :-D Adam Shimali votes me Best Talk at QCon London 2008.

Posted by David on 04/09 at 06:17 AM KanbanLean • (0) TrackbacksPermalink

Tuesday, April 01, 2008

Channel 9 Revisited

It’s been almost 2 years since I did my last interview on Channel 9. Recently, I was reminded of these gems when I was at QCon and Microsoft were giving away these Channel 9 dolls (pictured) on the Visual Studio Team System booth.

It occurred to me that many newer reader may not be aware of my earlier video interviews. The first interview is with Robert Scoble in my office in Building 25 and we mostly talk about FDD, Theory of Constraints and MSF for CMMI Process Improvement. The second interview was done on my last week with Microsoft at my new office in Building 5 when I’d moved in to the Patterns and Practices group. In the second interview, I talk about the future of the MSF process and the TFS process framework under Alan Wills leadership, metrics and objective management in MSF, as well as my new approach to agile change transition and the kaizen culture that I intended to (and later did) create at Corbis.

Channel 9
David Anderson - Writing Agile Software
David Anderson - Thoughts on Visual Studio Team System Technorati tag: Agile, David+Anderson, Microsoft, VSTS, MSF, Channel9

Posted by David on 04/01 at 03:09 PM (0) TrackbacksPermalink
Page 1 of 2 pages  1 2 >