Theory of Constraints 102: The Illusion of Local Optima
A series of 5-minute posts on applying principles of flow to knowledge work
In the previous post, I argued that many people unknowingly subscribe to a defunct management philosophy: that you can improve the performance of a company as a whole by individually improving the performance of its parts.
These isolated improvements are known as “local optima” (or in traditional manufacturing contexts, “local efficiencies”). A local optimum is whatever is best for the performance of an individual part, whereas the global optimum is what is best for the performance of the system as a whole.
To put our previous conclusion a different way: adding up a series of local optima does not automatically lead to a global optimum.
First, a tangible example. Imagine designing a car where a different team was responsible for each part. Each team included the most capable experts in the relevant area, and was told to make the very best component they possibly could, to be assembled together at the end.
It doesn’t take much imagination to foresee how many ways this could go wrong. The bumper team will have designed bumpers two feet thick, wider than the car itself, with high-density shock-absorbing materials and intelligent, adaptive hydraulics. Even putting aside all questions of cost, this bumper would be dramatically unsafe once installed, adding mass and weight and complexity without regard to the broader needs of the vehicle. Not to mention the higher-order needs of the occupants.
This is the important point about local optima in complex systems that many miss: local optima are not just suboptimal, as in “not as good as they could be.” When combined in an interdependent system, local optima actually make things worse.
Let’s take a look at how this is manifested in companies.
Imagine every work center in a business as a section of pipe, with work flowing from the beginning to the end. The circles within the pipe represent that work center’s capacity. I’ve labeled Engineering as the bottleneck, with the lowest capacity:
Sales closes a deal and hands it over to Product. Product scopes the project and passes it to Design to make some wireframes. Design sends their work to Engineering to actually build it. Everyone feels productive and happy.
But here’s where things get interesting. Engineering’s capacity is filled very quickly, which means that sending any more work their way won’t result in any more finished product coming out the end.
But what are Sales, Product, and Design to do? They are operating under the universal rule of the modern workplace: “stay busy.” This unspoken command is a local optimum. They are effectively being told: “optimize for full utilization of capacity at your work center.”
And who can blame them, or their managers? Nothing strikes terror in the heart of a manager like an “underutilized resource.” Nothing strikes terror in the heart of an employee like the feeling that there may not be enough work to justify their employment. We can always find something to do.
So what do the upstream work centers do? They start new projects. They fill their capacity like they’ve been told:
Now this wouldn’t be a problem if the effects were contained within each work center. But this starting of new things inevitably sends more work down the pipe to the bottleneck. Even if Engineering somehow has the discipline and authority to turn down all new requests, just deflecting the incoming takes up some of their precious capacity. It takes time and effort to manage more emails, provide more estimates, and perform the political maneuvering required to fend off the pressure from the rest of the business.
The consequence is that the bottleneck’s already limited capacity for productive work is even further reduced:
This, of course, exacerbates the situation even further. As bottleneck throughput goes down, even more work piles up in front of it, which leaves upstream work centers with even less to do, which causes them to start even more projects, which sends even more work down the pipe to the bottleneck, which reduces throughput further.
Meanwhile, the same situation is going on in the downstream work centers: they find themselves waiting on work from the bottleneck, and to fill their own capacity, they too start new projects:
This too creates more work for the bottleneck, even though it’s downstream. It takes the form of cross-functional projects that require Engineering “input,” overhead like meetings and events, or interaction of any kind. The bottleneck’s capacity for productive work is even further reduced:
At this point, with throughput drastically down, everyone mad at the bottleneck, the bottleneck mad at everyone, the bottom line suffering as no product is making it out the door, management feels the need to step in.
If they are benevolent and well-funded, the solution is obviously “we need more capacity!” If not, they put on the pressure. Everyone needs to work late, work weekends, eat lunch at their desks, cut out all “non-essential” activities. Look even busier!
Now the company looks like this:
This is why a company where everyone is busy working is terribly inefficient. The only way that’s possible is if everyone is optimizing their own productivity, at the expense of the bottleneck’s productivity. And it is only the productivity of the bottleneck that matters to the throughput of the company.
If you believe that local optima add up to a global optimum, there can only be one solution to low organizational performance: improve the throughput at all sections of the pipe.
But adding more capacity upstream or downstream of the bottleneck will make things worse, not better. Try to “improve” any other point but the bottleneck, and you’ve made the whole system worse.
Any improvement not at the constraint is an illusion.