We have a tendency to think that making any one part of the workflow more efficient will make the overall workflow also more efficient and that’s just not true. Part of that is that not all parts of the workflow are on the critical path and improving something that isn’t currently a bottleneck won’t help the overall flow. But there’s a second reason that’s less obvious - sometimes optimizing for simple cases in the workflow, can make other parts of the workflow much worse.

Let’s consider an actual example from my local breakfast shop. At one point they had a simple system where I would pay at the cashier and they would call out the order to the people actually making the food and pouring the coffee. I’d then walk down to the preparation counter where I would see them making the breakfast and I would finally pick up my order. It wasn’t all that efficient but it was effective so long as there weren’t too many customers placing orders at once.

So they made the system more efficient. They put in new cash registers that had a separate button for everything that a customer might order. It was very fast for the cashiers to do their work and now the people preparing the food could just look up at the monitors at their station to see what needed to be done next. There was no longer a need for the cashier to talk to the preparation people and they no longer ran into problems when lots of orders came in at once.

So, I came in one morning and ordered a bacon breakfast sandwich for my wife. The complication is that she wants the sandwich without the sauce they usually put on it. She’s been ordering it with no sauce for years and it’s never been a problem.

It turns out that the new system does account for this except that the system requires them to specify exactly which sauce to not put on the the sandwich. You can’t just say “no sauce”. There is a list of sauces that they have to pick from to be clear which one you don’t want. When the system first rolled out, everyone knew what sauces went on what sandwiches because everyone had been used to talking to each other.

Over time, however, new staff got hired who hadn’t worked in the old way. On this particular day, I got someone who didn’t know what sauce normally went on the bacon breakfast sandwich and was therefore unable to pick which one to not put on the sandwich. They asked me but I didn’t know, and didn’t really care. The point was that I didn’t want the sauce, whatever it might have been.

This time they were able to ask someone else and could specify which specific sauce it was. In the meantime, the process had become less efficient at both steps however. The cashier had to step outside their silo and had to interrupt the preparers, who now weren’t used to have questions directed at them. The simple optimization for order entry was breaking down for a more complex order.

Over a few weeks, I started noticing patterns. Sometimes there were enough new people that several people would have to be asked before they could figure out exactly which sauce to not put on the sandwich.

By this point, I had learned what sauce shouldn’t be on the sandwich but this was both fascinating and entertaining enough so I kept pretending that I didn’t know.

There was one day that the newest cashier didn’t even try to ask anyone what sauce was appropriate. On that day, she pushed every button she could find to remove sauces, so the receipt had about a dozen options of things I didn’t want. So many that when it got to the preparation stand, they couldn’t figure what I did want and had to ask me what I’d ordered.

At any point, the cashier could have just picked a sauce and then talked to the preparers to tell them just to not put any sauce, but they never did that. I figured at some point they would fix this and establish a new policy but they didn’t do that either. Instead, they stuck to the process they’d been given and everything would grind to a halt for any deviation from the typical order.

We see this all the time in processes. We optimize too early for the simple case and often make things much worse for more complicated cases. As Donald Knuth famously said: “Premature optimization is the root of all evil”

The real lesson is that optimization of just a single piece of the workflow, without looking at the bigger picture, can actually harm the overall system. We need to look at the larger system.