Every time I wait in line at Subway, I can't help but thinking how to improve their serving speed. And every time I'm at Subway, I come to the same conclusion.
Subs at Subway are currently constructed using a pipeline architecture. At busy stores, this usually involves 4 persons: a bread person, a cheese person, a salad person, and a cashier.
There are two bottlenecks in the subway pipeline: heating the meat (which comes between the cheese and salad processes), and salading.
On most busy days, the bottleneck is almost always the salading process. This is likely the slowest process because it's where the most customization takes place (think of it as a branch delay). A good salader, combined with a customer who knows what he wants takes around 6-8 seconds per ingredient. An average salader with an indecisive customer can take around 60 seconds to complete salading.
Clearly two solutions are available here: massive parallelisation, or parallelise the salading process.
Massive parallelisation is duplicating the entire pipeline -- have two sandwich construction lines. Two lines means you can serve n customers in n/2 time. Just like going from a single-CPU to dual-CPU (without dual-core) is expensive, establishing a second line would be almost as expensive as establishing a second store.
A cheaper option would be to parallelise the salading process: have two saladers instead of one. The problem with having two saladers is that they would get in each others' way, e.g. reaching for the jalapeƱos. The best way around this is to have two lots of salad. Each salader could deal with a different customer. On average, I wait around 90 seconds for a free salader, depending on the customer in front. I estimate having two saladers would cut that down to 30 seconds, because the bottleneck would now be heating the meat.
A colleague of mine suggested that the problem is that in fast food, it's difficult to hire people. You simply can't get people to work in fast food in the current market (hell, we can't even get web developers to work for us).
I kept this in mind the next time I went to subway, and discovered that the bread person and the cheese person were basically idle, after a sub was placed in the microwave or toaster. We could put these resources to use in the salading process! Fortunately, unlike machines, humans are versatile. One component of the pipeline can actually perform all of the functions of the pipeline. Why not make the cheese person do salad instead of standing around being idle?