Here’s a story of the time I had a volunteer event at work. This particular time was at a food bank.
Overall, the system was pretty straightforward. There were 6 running parts.
Starting simple. A conveyor belt running with individuals walking it to fill boxes.
Before anyone could start the line, boxes needed to be made. Pretty straightforward. The boxes come in 2d, the best d according to weebs. Add some tape and you have something 3d.
Then someone picks one up, walks down the line, and picks up one item per station. With the good ol’ Yankee Liberty TM to arrange it however they want within said box.
Two running processes so far. One making boxes. One filling them.
Introducing the third. Already teased it, the line was segmented into individual stations that handed over a specific item to add to the box.
Behind them was someone unloading packets and supplying the folks stocking the line. With roughly one person per two stations. This is where I was.
Behind that were scattered folks picking up the discarded boxes, breaking them down, and putting them in the bins. If memory serves correctly, we only had two or three folks here.
And at the very end, someone to tape and package the boxes.

Like I said, not a complicated system.
Let’s start adding some vocab.
Two main concurrent processes.
A Producer producing boxes. Two inputs, 2d cardboard and tape. One output, an empty box.
A Consumer consuming boxes. Two inputs, a filled box and tape. One output, a complete package.
Now toss in the Pipeline, a box making its way down the line.
The Pipeline is segmented into Stages, stations where an item is stocked. In theory, each is independent of each other.
Groups of Stages are supported by someone opening pallets to supply the stockers, effectively a Scheduler.
And most important, Garbage Collectors running around to clean up the leftovers.
Reality.
The Producer tries to run ahead and build a Buffer by making boxes faster than the Pipeline can process them.
But what happens when the cardboard runs out?
The Pipeline can’t run.
What happens when the tape runs out?
Both the Producer and the Consumer are stalled. The fancy word is Backpressure.
Now to focus on me.
Y’all would think like-components would be fungible.
What was I unloading?
One pallet of cereal. A uniform 3d grid of taped boxes. Which contained a uniform 3d grid of boxes.
The other was orange juice. An irregularly stacked set of glued-together boxes. Each of which contained a 2d grid of jugs.
Who was I unloading it for?
The downstream stages were staffed by some betas in highschool. Warms my cold heart to see kids volunteering. But the two I supported were aunties, also on a volunteer event from their employer. Similar ages as my folks, with similar back problems.
First on-the-fly optimization. Making sure items are placed where they can grab them without bending or stretching too much. So a lot of preplanning on which box to open when, and which to rearrange where to keep a row arm-level for them.
Cereal-aunty was easier to support. Opening the boxes was a breeze with my Benchmade. Also helped that the food itself was lightweight.
OJ-aunty was harder.
First off, jugs of orange juice aren’t that heavy as a one-off, but moving around boxes filled with them starts adding up to a workout.
The boxes were not uniformly stacked, so a significantly higher amount of rearranging.
And then there’s the lack of taped seams. A knife is great when there are clear lines to cut. But for this, brute-force and hands were more effective.
Unfortunately, it was also an easier way to get injured.
Guess who stalled the line twice because their finger-joints had burns from the friction.
Much like any system architecture, IRL is significantly less “clean” than the diagram.