TOC Overview (and exploratory writing)

This is the exploratory writing I did today. I don’t know if I’ll use it for a final CF article. This one seems like a maybe if I edit it. I write most days (I averaged 2056 words/day in August, and that doesn’t count discussion like forum replies), but I don’t usually share my writing. (I don’t usually get helpful feedback and I think people have plenty of other stuff to read and do if they wanted to, e.g. engaging with and learning from the CF Classics articles I’ve posted. If they don’t do that they aren’t interested so what’s the point of sharing more? I have reasons to share final articles about CF but why share extra?). I do have some articles in progress that I’ll post on the CF site when I’m ready. I’m still thinking about how to curate it and what standards to use.

There isn’t much downside to posting some stuff on the forum but there are some issues. One is giving people the unearned (unavoidable with final products unless I sell them at high prices, but avoidable with exploratory writing if I want). Another issue is people’s limited attention going to unpolished work instead of curated final articles. Disorganized writing isn’t what I most want people to engage with, and some people will lower their opinion of CF after reading it, even though they could have benefitted a lot if they’d focused their attention on other parts of CF instead (warnings, labels and disclaimers do not solve this very well). The attention issue is especially bad with drafts which I edit into final articles – people who read the draft often skip the final article because it’s too similar so they don’t want to read it again. There can also be issues with dribbling out ideas with no one moment when many people pay attention to them at the same time (generates more discussion and marketing), with people remembering early versions of things that I change, with people plagiarizing, with people not recognizing and respecting the value b/c they got it in little bits instead of a big more visible chunk, and more.


TOC Overview

Eli Goldratt’s philosophy is named Theory of Constraints (TOC). Most of TOC’s examples relate to business management, but most of the concepts apply to life in general. Goldratt’s goal was to teach the world to think, and he included non-business examples in his books. He wanted to show how the concepts he was teaching could help with not only your business but also your family life or any decision you make.

Goldratt studied physics in school and then worked in software. He thought the methods of the hard sciences should be used for most of life. In other words, scientists are more effective thinkers and that’s useful outside of science too. He applied scientific thinking to managing businesses as a starting point, and had a lot of success with that. Goldratt sold around 10,000,000 books and his ideas are taught in business management schools. He did consulting and helped many businesses grow dramatically.

The Goal

Eli Goldratt’s first book, The Goal, teaches that we need to know what our goal is. We should be able to verbalize our goal (state it in words). This helps us take actions and make changes that will achieve our goal.

The Goal is a novel about a manager at a factory who is under pressure to make the factory perform better. Secondarily, there are scenes where he interacts with his wife and children.

TOC advocates goals that involve a process of ongoing improvement so things can be good now and in the future. E.g. a company should aim to make money now and also in the future.

The Goal teaches five focusing steps. They’re a process for improving business performance. They try to focus your attention on the most important changes to make.

The Goal explains that most improvements aren’t every effective. They are optimizing local optima, but that doesn’t significantly help the big picture (the global optima). We want success at our goal, e.g. making money, and the improvements we make are a means to that end. Success at our goal is called throughput, which means moving resources through a system to the goal at the end. An example of throughput is turning raw materials into intermediate components and then finished products in a factory (which are then sold to make money).

Improving a local optima could be making one step in the factory go faster. In the small picture, that looks like an improvement. But will that result in more products sold in the market? Probably not. Why? Because there are many steps, and the one you improved probably wasn’t the slowest step. The materials will still have to go through the slow step before they’re sold.

The key to focusing improvements in the right place, and making them globally effective, is to find bottlenecks. Bottlenecks are also called “constraints” or “limiting factors”. A bottleneck is the slow part of the system that other stuff has to wait on. Improving the bottleneck results in more throughput.

In general, there’s only one bottleneck. This is like a metal chain: a chain has only one weakest link (so making the other links stronger won’t make the whole chain stronger, because if it breaks the weakest link will be where it breaks).

TOC says optimization away from the bottleneck is wasted. Don’t optimize non-constraints. Focus your optimization on constraints.

The Goal discusses variance and statistical fluctuations. A work station in a factory might process 30 parts per hour on average. But in some hours it’s only 20 parts, and in other hours 50 parts get processed. This is why a balanced plant is inefficient.

A balanced plant means every workstation has the same capacity. E.g. each station can process 30 parts per hour. Intuitively, this sounds like a good idea to people which will be efficient. But, due to variance, it doesn’t work out mathematically or practically.

Suppose we have three workstations, A through C, in alphabetical order. It’s approximately a balanced plant, but let’s suppose B is the bottleneck. For simplicity, assume B always processes 30 parts per hour (it’s only worse if it has variance too).

What happens when A processes extra parts? We get a build up of extras in front of B. The plant floor is cluttered. We need storage. If the variance is big enough, we’ll have to halt production on A until B catches up more.

What if A processes too few parts? Then B will lose production. A will get 20 parts done in an hour, and B will finish those in 40 minutes and spend 20 minutes idle. (For a simple mental model, you can assume the workstations work for one hour then transfer what they made to the next workstation, and repeat. The overall results don’t change if finished parts are sent to the next station individually as soon as they’re ready.)

Suppose we don’t want to lose production on B. What can we do to protect is against a shortage of incoming materials? We may create a buffer of extra parts in front of B. We can have them in storage, so if A doesn’t get enough parts done this hour, B can keep working used stored parts. Alternatively, we could increase the production capacity of A. If it can do 300 parts per hour, it should be rare that it doesn’t finish 30. But then we’ll average 70 extra parts per hour which can’t be processed by B. So A will have to e.g. make 30 parts and then stop working for the rest of the hour. That’s an unbalanced plant with excess capacity on workstation A.

Suppose we keep a buffer in front of B. The bigger the buffer is, the safer we are. But a bigger buffer means we need more storage space and we have more money tied up in parts. So there are tradeoffs. Let’s say we decide a good buffer is 100 parts. So we have a balance plant plus this buffer. What happens when A makes extra parts? We don’t want a buffer of over 100 – we decided that’s the most extra parts we want to have at once – so we halt work. And what happens when A makes too few parts? We start using the buffer.

Let’s say we have a bad day at workstation A and produce 50 fewer parts than average. Half the buffer gets used up. What happens next? On average, A produces the same number of parts that B uses. The next few days, A has an average day, and the buffer stays at 50 units. It isn’t replenished because A doesn’t produce any faster than B. The only way to replenish the buffer is to get lucky and have some above-average productivity.

We are on a time limit to replenish the buffer. We judged that a buffer of 100 parts is the right amount to protect us against the risk of losing production time on B. (It won’t give a 100% guarantee, but it’s enough risk reduction while also keeping down our storage space and the total price of the stored parts.) But here we are operating with a buffer of 50. That’s more risk than we wanted. We could now have some bad days for A, and due to the small buffer we run out and lose production.

We need to replenish the buffer back to 100 parts before we have more bad luck. To do that, A needs to produce parts faster, on average, than B uses them. E.g. A needs the capacity to produce 35 parts per hour. Then it can replenish the buffer at a rate of 5 per hour.

What if we have a lot of excess capacity on A but no buffer in front of B. Would that work? It could but it’s somewhat risky. What if something breaks and A produces 0 parts for a while? So it’s better to have some buffer. There’s a tradeoff. The more excess capacity A has, the less buffer we need for B. Or the larger the buffer for B, the less excess capacity A needs. We can look at how expensive buffer is, and how expensive production capacity for A is, and choose how much of each to buy. Some of both is best, but we could focus mostly on one or the other if one is much cheaper than the other.

So a balanced plant doesn’t work. We need a buffer to deal with variance. And we need excess production capacity to be able to replenish the buffer.

Which workstations need buffers? Only the bottleneck. And which workstations need excess capacity? Every non-bottleneck.

Let’s now turn our attention to workstation C, which comes after the bottleneck. If it has the same average capacity as B, then it will sometimes have a productive hour and get ahead. It will then run out of parts to work on and stop working. On the other hand, sometimes it’ll have a bad hour and get behind. Then parts build up in front of it. Suppose, due to negative variance, we get 50 extra parts in front of C. What happens next? On average, B and C produce at the same rate, so we keep 50 parts in front of C indefinitely. They’ll only go away due to good luck. And we’re at risk of bad luck, in which case more parts would pile up and we’d run out of space, plus we might have a late customer order. C needs to catch up by going faster than B. To do that, it needs excess capacity, e.g. the ability to process 35 parts per hour. That’ll let it recover from bad luck. But it also means that, on average, it not all of its production capacity will be used.

So far we looked at variance for A and C. The situation is only worse – so buffers and excess capacity are even more important – if B also has variance. B does have variance. Everything has variance. Variance is an unavoidable part of life. You can reduce variance if you use robots (or any sort of automatic machine) instead of people, but you can’t eliminate variance. Machines can break or malfunction sometimes. Lower variance production processes do let you have less excess capacity and smaller buffers.

A plant may have multiple bottlenecks if it has multiple production lines. It can also have a more complicated production line that isn’t a linear chain. E.g. there could be three workstations that make parts which feed into B, which then combines all those incoming parts, and then the output of B could feed into multiple later workstations. There could also be multiple B workstations, and they might have different production characteristics (e.g. one uses a fancy new machine, another uses an older machine, and a third uses hand tools). In these cases, the principles and conclusions are still similar.

A properly designed plant should have a known bottleneck and excess capacity on other workstations. Don’t aim for a balanced plant. You can’t avoid having a weakest link, and having a bunch of links that are nearly tied for weakest just leads to chaos. It’s better to know your limiting factor and plan around that instead of having it change frequently due to variance (today work station A is slowest, but tomorrow B is the least productive). Figure out what’s especially expensive to get production capacity for and plan around that being the bottleneck. You can change bottlenecks if you figure out a major improvement, but that should be uncommon so things aren’t too chaotic.

The five focusing steps are a way to approach any problem. Increasing production of a factory is just good example. The steps are:

  1. Find the constraint.
  2. Optimize the constraint (make sure it’s used efficiently, e.g. if the bottleneck is a machine or tool, make sure it isn’t idle for lunch – not everyone should eat lunch at the same time).
  3. Subordinate everything else to the constraint. (The constraint has priority, so don’t let other parts of the system cause problems for the constraint. Also don’t let the non-constraints produce more than the constraint can process.)
  4. Add more capacity at the constraint. (Optimize and subordinate first. Step 4 isn’t always needed. Be careful moving the constraint somewhere else. There will always be a weakest link in the chain. Where do you want it to be? Wherever it is, you need to organize around it.)
  5. Check if the constraint moved. If so, reconsider the steps instead of acting on inertia.

This is just a summary of some of the main ideas of The Goal with brief arguments for them. For more details, read the book.

2 Likes

I really like this post and I’m glad ET shared it. This post fills in several gaps in my understanding of The Goal. For example, I did not catch the idea that you can think of a trade off between buffer size at the bottleneck and excess capacity in other workstations.

How do ongoing improvement goals relate to binary success/failure criteria for goals? In a factory context, the goal is to simultaneously increase ROI, Cash Flow, and Net Profit. I suppose the success/failure criteria would be whether ROI, Cash Flow, and Net Profit increased or declined. I believe Goldratt also advocates looking for big wins over seeking slight marginal improvements. That would seem to indicate that just barely raising the financial metrics of the company in a linear fashion month after month wouldn’t really be considered a success.

Is it always wrong for a company to not increase profits? There are examples where a company is growing and plowing almost all their earnings back into investments to grow even more. I would guess that Goldratt might be okay with this kind of temporary earnings stagnation.

This is another super helpful explantion. I didn’t get the idea from the book that you want to choose your bottleneck and design your plant around it. I was getting the impression that the bottleneck is sort of an inevitable, emergent thing that you discover in existing processes.

IIRC Goldratt is very explicit about that but maybe in a different book.

What stagnation? If you earn a profit, then choose to spend it, you still earned that profit.

It could definitely be in The Goal and I may have completely missed it. I need to review The Goal and take notes to get some idea of all the stuff I’m missing.

Right, I think I see. Earnings are another word for profit. My example doesn’t make sense because the company would be making money now and spending profits to try to earn even more in the future. You can’t invest what you don’t have. The options are invest existing capital, which comes from owners or from debt, or invest profits. Using profits to invest and grow is gowth not stagnation.