Queuing, or as we Americans call it, waiting in line, is everywhere in modern life. From grocery store registers to vacations at Disney to daily commutes by car, we spend minutes every day waiting our turn.
Most discussions of queuing focus on the individual: How can you avoid waiting in line, or make the most of that otherwise lost time? We rarely see a consideration of the effect of your actions on others. But for those of us who more or less believe we should value everyone equally, we should consider what effect our waiting in line has on everyone else there.
Before it closed, the closest grocery store to where I live had a few fun little promotions, like the Monopoly-themed collectors game where you earned a certain number of stamps based on your purchase and had to find all the stamps of a given color to win a prize.
It was a pretty casual game; most cashiers wouldn’t bother to give you the stamps unless you asked. If they had to look on your receipt to figure out exactly how many stamps you earned, that took longer, and sometimes they’d just give you a stack of them no matter how big your purchase.
So the value of these stamps was only slightly nonzero, since my wife did enjoy the process of collecting them and coming one short in various groups before the promotion ended. If I was the only one at the grocery store, the enjoyment I’d bring her would be worth the 5 seconds that it would take me to ask them to give me the stamps.
But if there were a bunch of people behind me in line, as there were one day when I remembered to ask for the stamps, I could feel their glare and immediately felt bad about it. After all, I was causing every person in that line to wait an extra 5 seconds, which really added up on that particular day.
Actually, it’s even worse than that. But to model this situation properly we need some ground rules. First, we’ll assume that other people join the line at the same times independent of anything I do. Second, we’ll assume that there is only one line to join, which could be a good approximation if the store is either already maxing out its registers or simply won’t open more.
In this case, let’s say I take 10 extra seconds to get those stamps. Everyone currently in line will clearly be delayed by 10 extra seconds. But then their delays will delay anyone who joins the line while they’re checking out, and so on. The delays only end when the queue clears!
I’m going to make up some numbers for this grocery store example to illustrate just how severe this is. Let’s say that the queue processes one person every two minutes, and we’re visiting at a peak time so the queue won’t clear for one hour. Then my decision to take 5 extra seconds will multiply to 30 people, altogether for a total of 2.5 minutes from all of us just so I can get those useless stamps.
The cost becomes even more excessive when I consider whether it’s worthwhile to queue at all and slow everyone else down by my full 2 minutes. If I’m a typical customer and the queue won’t clear for another full hour, then that hour is exactly the total time cost, as I’ve essentially bumped everyone behind me back in line for the next hour.
This is actually not all that surprising. If we value everyone’s time equally, then we actually don’t care about our own position in a line relative to anyone else’s. Which means that as long as the line has someone, we could always let them go ahead of us until the line completely empties out. Then we’ll be waiting exactly until the queue clears, accruing all of the waiting cost to ourselves rather than doling it out to everyone behind us.
That’s not even technically correct. Because let’s say right after the queue cleared and we started making our purchase, someone else joins it. We’ve now partially delayed them, too, and everyone else behind them until the queue clears again. Instead, we have to (in this thought experiment) pause our purchase so they can make theirs, and continue to let everyone behind them interrupt us until we have enough empty queue time to complete our purchase.
This is still a thought experiment; I’m not actually advocating never entering a nonempty queue, or always letting others pass you. If anything, the extra little bit of social awkwardness (and depending on the width of the line, discomfort) would just make that a worse decision all around.
But every time we wait in a long line, we should consider the queue-clearing time as the true cost. Don’t just think about how long you’ll have to wait in line; think about how long you’d have to wait if you let everyone pass you and decide if your purchase is worth that much.
This theory of a single queue is, in my opinion, striking and compelling. Before looking to this section to find your excuse, make sure you internalize that true cost.
For starters, I assumed in the analysis above that I’m a “typical consumer,” taking about as long as everyone else to be processed by the line. If I estimate that I’m slower or faster than average, I just need to multiply the default cost by the ratio of the time I take to the typical customer.
Going further, what happens if there are multiple lines? It turns out that that doesn’t matter at all. You can just consider the people in your line, and the same logic applies. Even if there’s a central queue which feeds a number of smaller queues (checkout counters), your presence in the central queue bumps everyone behind you back one space in that central queue, so the total cost is the time it takes for the queue to empty.
What happens if someone is watching the queue and adjusts capacity based on its length? This does happen in some situations, like centralized airport security lines at large airports, where there is both a strong incentive (to keep passengers’ wait times consistent) and the overall capacity to justify adding the administrative overhead. In this case, we can’t just apply the same logic, since our presence in the line changes the rate that everyone else gets processed.
A standard model for such queuing systems is that they require a change of k customers before they can increment the capacity by 1 in either direction, essentially capping the queue length per server at k. On average, then, my entering the line will cause such an increase in capacity about one out of every k times I join the queue. That instantaneous increase in capacity will, on average, last until an extra k people have been processed by it, since that will decrease the capacity by k. On average, then, I will increase the capacity by the same amount of extra processing time that I add by entering the queue.
This means that there are no long-term effects on people long after me in this model! The short term effects are also actually favorable to people around me, at least if the system responds quickly enough to me joining the queue. In the extreme scenario where it responds instantaneously, I actually speed up the processing time of people ahead of me in line, since I add k more opportunities to be processed (with probability 1/k) starting from when I enter the queue until about when I exit it.
In all, in this self-rebalancing model, the total time cost of myself entering the queue comes out to about 1/2 of the time that I myself wait plus the time it takes the system to react. This is probably not too far off from the total time that I wait.
Unfortunately, these situations also tend to coincide with decisions we can’t easily change. Given the significant up-front costs, I’m not going to advocate deciding whether to take a flight based on the length of the security line.
The other way that a queue can be self-balancing, of course, is when the other customers might decide not to join the queue if it’s long enough. Essentially this provides another way the queue can “clear”: We switch places with people until one of them decides that the line is just too long for them.
This might seem like a reasonable economic exchange; I was simply willing to wait longer in line than them, outbidding them, so to speak. Everyone has their threshold price, and I’m simply willing to wait in a longer line than them.
The problem with this perspective is that we are literally bidding to destroy value. No one is on the other side of this market reaping the benefits of us having to wait in line. Sure, supermarkets try to entice us with candies and magazine covers, and time-wasting phone apps beckon, but that value is miniscule relative to the cost to us.
It’s like we’re in a charity auction, except where 1% of the proceeds go to tabloids and big sugar and the rest are converted to cash and burned. You could say that we’re doing business with the Devil, or Moloch, or whatever antihumanistic entity you want to envision. Either way, we really do only value one side of that market, and should try our best to collude to keep prices low.
For explanatory purposes, I’ve focused on a grocery store example, but there are plenty of other everyday queuing examples.
The most obvious is traffic. Traffic in general is of course quite complicated, but we can at least think of some examples that come close to these simple queues. Intersections are often choke-points, and if the particular route at the intersection we take (e.g. left turners from street A going north onto street B going west) always has someone having to stop as the yellow light turns red for a period of time, then it’s completely analogous to the grocery store example since we can again use the same thought experiment of switching places with the other cars until there’s no one left to switch with.
This wouldn’t necessarily apply to every intersection you cross through on your journey, just the choke-point(s) like this. But it’s still a formidable bar to cross: Is it really worth waiting in traffic for, say, an hour at the busiest intersection to get somewhere during rush hour?
Public transit is often a bit more forgiving, but the most intense rush hours can see buses or trains completely filled, and a queue forming (at least, at the more organized stops) to take any available space. We can again apply the same logic and imagine waiting to board until there’s an empty space. Even if we get on at a less busy stop, if our train or bus fills up at another later stop, we’d have to imagine that we’d hop out in favor of the next person waiting and instead wait there for the next available seat on a later train.
Maybe the worst examples are when the queue isn’t even obvious to the person in it. Unlike food courts, where lines will form at different vendors, restaurants which take names and estimate wait times are some of the most pernicious. I know I’m repeating the same thought experiment over and over again, but just imagine telling the restaurant that you’ll take the first available table when there’s no one else waiting, even the folks who came after you. That’s the true global waiting cost of going to that restaurant.
How can we practically reduce the amount of time we make other people wait by joining busy queues?
As usual, it starts with recognizing the issue. Think through your day and all of the times when you were part of the problem. Were any of those queues predictable and avoidable? Given how much time is collectively wasted, it’s worth taking a moment to consider one’s patterns of living.
Maybe this means you plan ahead and do your grocery shopping for dinner in the morning, storing the food in your work fridge. Maybe you try to talk to your boss about scheduling your work hours to be offset from the rush.
But mainly, I want us to learn to visualize the total cost of our actions, not just the portion of that cost that accrues to ourselves. After all, this is a clear consequence of what it means to love our neighbors as ourselves.