Savvy Business
Notes / 04

Let's build the perfectly balanced factory.

No spare capacity. No idle machines. Nothing wasted. What could go wrong?

Previous — cost accounting

A thought experiment

Fine. Let's take the efficiency argument seriously.

The last few notes argued that production is a dependent system, that local efficiency is not the same as factory efficiency, and that hourly rates make unused capacity look expensive — which creates a natural pressure to keep every resource busy.

But perhaps we have been unfair. Our original factory was Cutting 100, Printing 60, Finishing 80. Of course Cutting had spare capacity. The factory was badly balanced.

Maybe that was the real problem. So let's fix it.

The market wants 100

Assume the market wants 100 units a day. We design Cutting 100, Printing 100, Finishing 100, Packing 100.

Perfect. Every department has exactly enough capacity. Nobody has expensive excess. Nobody needs to sit idle. Every machine can be fully utilised. We have not spent money buying capacity we do not need.

If every department makes 100, the factory ships 100.

From a cost-efficiency perspective, this looks beautiful.

Fig. 7 — the perfect factory
Demand = 100 / day
Factory output = 100 / day

Monday morning

Now we open the doors.

For the first part of the morning, everything works exactly as planned. Then something completely ordinary happens. Cutting loses thirty minutes.

A blade needs changing. A material issue takes longer than expected. An operator has to sort out a small problem.

Nothing unusual has happened.

Factories have variation. Work does not take exactly the same amount of time every time. People have good hours and bad hours. Machines stop briefly. Materials vary. Jobs vary. Quality problems happen. Setups take slightly longer or shorter than expected.

This is not failure. It is normal life.

We removed the recovery

Because Cutting has exactly enough capacity to make 100 a day, it now falls behind. Suppose it only manages 95.

Printing cannot print 100. It only received 95. So Printing finishes its available work and waits.

Now Cutting is back to normal. But there is a problem. Cutting's normal capacity is 100. It needed 100 just to keep up with today's demand.

Where does it find the capacity to recover the missing 5?

It doesn't have any. We removed it.

The spare capacity that looked wasteful was also the capacity that could have allowed the factory to recover.

Fig. 8 — Monday morning
Factory output = less than 100
Fig. 9 — nowhere to recover from

Tuesday

Now let Cutting have a perfect day. 100.

But perhaps Printing has a small problem. Printing only processes 96. Finishing cannot finish work it has not received. Packing cannot pack work that has not been finished.

Again, the problem moves downstream. And Printing also has no spare capacity tomorrow with which to catch up. It needs its full capacity just to handle tomorrow's normal work.

Two ordinary facts

The factory has two characteristics.

Dependency. One operation often cannot work on something until the previous operation has completed it.

Variation. Actual production never matches the plan perfectly.

Those two things together matter enormously. Variation in independent activities can sometimes average out. But these activities are not independent. They depend on one another.

If Cutting produces less than expected, Printing cannot simply pretend the missing work arrived. The next operation inherits the consequences of the one before it.

The delays travel downstream. The spare minutes don't travel upstream.

A good hour does not cancel a bad one

Suppose Cutting has a fantastic hour and could produce more than the usual amount. That sounds as though it should compensate for yesterday's bad hour.

But Printing is already designed for exactly 100. It cannot necessarily use Cutting's extra output. The additional work waits.

A bad hour can starve the next resource. A good hour often creates a queue, because the next dependent resource has limited capacity.

The fluctuations do not simply cancel one another out.

That is one reason a chain of dependent operations behaves differently from a collection of independent averages.

Let Murphy loose

The perfectly balanced factory assumes a world where every job takes exactly as long as expected. Every machine is always available. Every worker is always available. Materials arrive exactly when expected. Setups take exactly the planned time. Nothing gets rejected. Nobody makes a mistake. No customer changes anything. No urgent job appears.

That is not a factory. That is a spreadsheet.

The perfectly balanced factory works beautifully. Unfortunately, it works in a spreadsheet.

In the real factory, Murphy exists. Not as catastrophe. Mostly as ordinary variation. Ten minutes here. Twenty minutes there. A difficult job. A late material. A small rework. A setup that took longer than expected.

Spare capacity was the ability to recover

We thought spare capacity was waste. So we removed it. But spare capacity was also our ability to recover from variation.

A factory in which every resource has exactly enough capacity has no room to breathe. Every disturbance becomes difficult to recover. And because the processes depend on one another, disturbances travel through the system.

Fig. 10 — the result

Then give everything 120

Fine. If 100 everywhere is fragile, let's make everything capable of 120. Cutting 120. Printing 120. Finishing 120. Packing 120.

Now we have capacity to recover. But we have simply recreated the thing cost accounting taught us to dislike: spare capacity. Most of the time, some of those resources will not need to run at 120.

If spare capacity is necessary, where should we put it?

Maybe we do not need equal spare capacity everywhere. Maybe instead of trying to eliminate the bottleneck, or balance every resource, we should deliberately decide where we want the limiting resource to be. And then give everything else enough capacity to support it — and to recover when Murphy happens.

Not an argument for unused machines

That is not an argument for buying huge amounts of unused equipment. Capacity costs real money.

The point is not that more capacity is always better. The point is that some spare capacity in a dependent system is not waste. It serves a purpose.

We need enough capacity away from the bottleneck to cope with ordinary variation and recover. That is very different from buying unlimited unused equipment.

What looks inefficient locally

This leaves us with an uncomfortable discovery. Cost accounting encouraged us to see spare capacity as expensive waste. But dependency plus variation shows us that some spare capacity is necessary for reliable flow.

What looks inefficient locally may be exactly what makes the system work.

Perhaps the wrong question

We started by trying to remove spare capacity. We ended up discovering why we need it.

So perhaps we have been asking the wrong question. Instead of asking how we make every resource equally efficient, perhaps we should ask:

Where do we want the bottleneck to be?

Because if every factory must have something limiting its output, I'd rather know what it is. Better still, I'd like to have some say in where it lives.

Next

What if we chose our bottleneck on purpose?

Previous — cost accounting
A question

If something here is still unresolved, send it.

Later notes will come from the questions people actually ask.

Ask a question