I just got back from Las Vegas. From the second you land there, you can smell the alcohol in the air. It’s also probably the only place i know where you can gamble while waiting in baggage claim….and people do!
At any rate, we gambled, we lost, we left. Statistically, that’s about right so no hard feelings.
One thing that I did notice while there was how queues are serviced. I’m not normally that observant, but it was pretty easy considering that:
a) I just finished a great book on the subject called “The Principles of Product Development Flow” (the book is much better than the title suggests).
b) You spend half your time in Las Vegas standing in lines.
One particular incident involved me standing in line at the MGM Grand Concierge to pick up some show tickets. This was how the line looked:
Each server / concierge (the dots) has its own queue of people. It this a good solution? Of course not! This is the perfect situation that breeds line-choice-remorse. It’s that well known phenomenon which occurs after choosing a line – you soon realize the line next to you is faster while you’re stuck behind a guy that is buying tickets for twenty five people, a restaurant reservation, maps for all of Nevada, a limousine, some shoe string, an igloo, and a towel. At least that is what it seemed like at the time.
In short, having a Queue Per Server doesn’t account for variation. Assuming that each person has the same priority, they join the lines at random intervals, and each person takes a random amount of time to service, this is the perfect recipe for some queues to be blocked up for long periods of time while other queues might be empty. It also doesn’t serve people in the order they joined.
Luckily, most of the other lines in Las Vegas were like this:
While these lines might look longer, they are actually more efficient. These queues have one line which includes all the people in the order joined, and multiple servers each taking a person from the front of the queue. Making the same assumptions as the previous example, this method is actually more resistant to variation. If one person takes a much longer time, only one server will be blocked and the queue will continue to flow. In addition, it’s better for your mental health.
The perfect example of this is the Taxi line at the airport. The line was literally hundreds of people and if you didn’t know better you’d think it was going to take hours to get a taxi to your hotel. In reality it took 10 minutes. We were literally walking non-stop in the line. They had a system where 15 taxis would drive in and predetermined spots and drive off with the soon-to-be poor vacationers. Pure awesomeness.
These decisions happen in software development too, especially in multi-threaded environments and Message Queues. I wonder where they got the idea from….