Goldratt: the Theory of Constraints

Before BPM came Goldratt and the Theory of Constraints in the 1980’s.  This idea can be seen as the groundwork for most of the ‘process oriented’ thinking today.

Eliyahu M. Goldratt (March 31, 1947 – June 11, 2011) was a physicist turned management guru.  He introduced the idea in a fictional novel form where a protagonist is faced with increasing the production level of a manufacturing plant.  The targets of his message are the accounting principles that measure success incorrectly.

I sit there marveling that we’re going to reduce the efficiency of some operations and make the entire plant more productive. They’d never believe it on the fifteenth floor.

Let me explain.  If in the middle of a manufacturing process, you have one machine that works slower than the rest, then entire production is limited to the speed of that machine.  That machine may be functioning perfectly efficiently, with a very low cost per unit.  Adding a second machine with a higher cost/unit would increase overall cost, and would make that step appear less efficient according to such accounting principles, but the result is that total output of the factory increases.  What he shows is that a focus on efficiency of one step is myopic and unimportant.  The only real measure is total production all the way through the factory, along with total costs all the way through the factory.

An hour lost at a bottleneck is an hour lost for the entire system.

60D130119-5598Bottlenecks become the most important part of the factory to monitor and manage.  The cost of losing a machine in the bottleneck is not just the cost of that machine.  Calculate the cost of a bottleneck as the total production value of the entire plant, and divide by the operating capacity of the bottleneck.  If the bottleneck stops for 1 hour, you actually lost 1 hour of total plant capacity.  Thus those hours are that value — at least as long as that step remains the bottleneck.

Once you have identified the bottleneck, you want to take steps to make sure that the bottleneck is always filled with materials from previous steps to make sure that the it is always running.  It is critical to arrange things so that when a part gets to a bottleneck, it is likely to make it the rest of the way.  You don’t want a quality control check after the bottleneck that causes parts out of the bottleneck to be discarded.  Do the QC before the bottleneck so that things going into it are as good as possible.  Also, be very careful not to use bottleneck to make things that are not immediately needed.  That should be obvious.

There is a flaw in measuring efficiency of a part of the process. Just because one step does things quickly might not matter. What matters more is throughput.  Machines that are the bottleneck are always struggling to keep up, and those seem like the most efficient because they are fully utilized.

The cost per unit at steps that are not the bottleneck does not matter as much.  For example a step in the process may be set up to make a long run of identical parts.  Longs runs tend to keep costs low at that step in the process, because you eliminate the overhead of changing the setup.  This efficiency is an illusion if that step is not a bottleneck.  If a long run at an early step is preventing parts arrival at the bottleneck step, then once again your attempt increase the efficiency of that step is decreasing the output of the entire factory.  If critical parts are needed for the bottleneck step, stop what you are doing, setup for the critical parts and run them immediately.

An hour lost at a non-bottleneck stage is a mirage.

There is a corollary to this having to do with high inventories of intermediate parts.  The old theory was that each part should be made as efficiently as possible, and that would make the final manufactured good as efficient as possible.  Each station would set up for long runs and produce an abundance of intermediate parts.  This harms the plant in several ways: money is invested in these parts that are not immediately needed, those parts take up space, create costs of moving them around, are susceptible to theft loss, but most importantly, can cause steps to be unavailable when needed to make critical bottleneck parts.  Thus excess inventory of intermediate parts should be viewed as a cost, not an asset.  This same principle was expounded by Taichi Ohno in the Toyota Production System.  A non-bottleneck machine should not work faster than needed for immediate production, because that will just pile up inventory.  If you have excess production capacity, you must waste it rather than use it.  This is one of the harder things to get.

We shouldn’t be looking at each local area and trying to trim it. We should be trying to optimize the whole system.  Some resources have to have more capacity than others. The ones at the end of the line should have more than the ones at the beginning—sometimes a lot more.

Batch size is traditionally set to optimize the time of a single step of production against the time of setting up for production.  However, this is once again local optimization that does not necessarily relate to overall optimization.  If the machine in question is a non-bottleneck, then you have excesses capacity and excess time.  Saving setup time by optimizing batch size, is an illusion.  The time for each batch is added at each step in the process.  Half the batch size means it gets through the entire process twice as fast.  This means that smaller batch sizes can mean faster time to market, cutting lead times, and being more responsive.

We see the same thing in agile software development in relation to waterfall software development.  The batch size is the total release.  There is an idea that we can optimize testing by getting a lot of features in and then test once.  But this does not matter if testing is not the bottleneck.  What is the bottleneck in software?  It is getting users to understand the possibilities of the new features.

Toyota’s Kanban is a way to prevent excess production, but most people think that preventing production is a waste.  It is the opposite: using excess production is a waste.

A plant in which everyone is working all the time is very inefficient.

There is a similar faulty focus on keeping thing fully occupied.  A common mistake is trying to keep all the workers busy.  Labor is a cost, it might seem intuitive that you should keep them busy.  However, if they are busy on a non-bottleneck function, and that prevents them from getting to a bottleneck function quickly, it can decrease the total output.  It may be worth having some people sitting, doing nothing, so that when they are needed for the critical function they are immediately available.  Idle time has been considered a waste in the past, but that is an illusion.  Making an employee work and profiting from that work are two different things.

activating a non-bottle-neck [resource] to its maximum is an act of maximum stupidity.

Most of the factors critical to running your plant successfully cannot be determined precisely ahead of time,

There are two big lessons:

  • if you design capacity to exactly meet the need, when you have a sequence of dependent steps, then any failure, and flaw anywhere will compound along the assembly line.  To keep production stable, later steps may need higher production capacity than earlier steps.
  • measuring the productivity of a part of the process is flawed because you can meet the required production speed in one place, but it does not matter if this does not contribute to making a sale.  The only thing that matters is the final output that is sold.

One way for combating this is to design in longer lead times.  The flaw with this is that this increases the inventory that is sitting around, which is a kind of waste.

Balance flow, not capacity: “you should not balance capacity with demand. What you need to do instead is balance the flow of product through the plant with demand from the market.”

Comments / Conclusion

The world has changed dramatically since 1984 since Goldratt wrote The Goal.  These ideas must have seemed very radical at the time.  The ideas themselves were known in the right circles from earlier work by Taichi Ohno among others, but  I think Goldratt deserves a lot of credit for popularizing these ideas. 

Today, process technology support (particularly from the domains of “Process Driven Server Integration” and “Human Process Management”)  — those domains that require that a process diagram (a.k.a. workflow diagram) be designed ahead of time and enacted or executed.  Because you are required to draw up the process from end to end, you are forced to think about all the work in terms of a process.  The process analytics that are associated with such tools also leverage the process oriented view, allowing one to easily find a bottlenecks.  Process simulation allows you to experiment with those bottlenecks, and helps to find out what might happen if you change the way you allocate resources to the process.  This process oriented thinking is becoming so natural, that we forget that there was a time when efficient was measured only as local efficiency measurements at steps of the process.

The key message: you can not understand the behavior of a complex system by looking at part of it.  You can not optimize a complex system by optimizing a part of it.  A complex system is complex because it has dependencies of many parts on many other parts.  You must consider the complete system, the complete process, in any assessment of performance or attempt at improvement.

A system of local optimums is not an optimum system at all; it is a very inefficient system.


7 thoughts on “Goldratt: the Theory of Constraints

  1. Thanks Keith for reiterating this important principle that so many miss.

    System Theory says clearly that you can’t optimize or improve the parts of system independently. It does not matter if you increase throughput, speed or productivity. In effect the system works the most efficiently if its components are not optimal in itself but if they are ‘ready when the flow comes in’. Which means you need exess capacity and not ‘just enough’. Therefore cost reduction of one units in a business is usually really bad for the rest of the business. But it clearly can be made look good in the numbers. That is not only the case for the usual BPM approach but also for outsourcing.

    So both BPM and outsourcing are not making a business more agile and cost effective but they reduce the ability of a business to serve its customers effectively AND efficiently as a system!

    I think I said that clearly over ten years ago … what happened in the meantime???

  2. Pingback: Goldratt: the Theory of Constraints | Collabora...

  3. Pingback: Goldratt: the Theory of Constraints | Social-Bi...

  4. “An hour lost at a non-bottleneck stage is a mirage.”

    *An hour _saved_ at a non-bottleneck stage is a mirage, no?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s