Southwest Airlines

I don’t normally fly Southwest. This might be my first time, certainly first in a long time. I’d heard good things.

Southwest, I learned when I bought the tickets, has an open seating policy: sit wherever you want. Like a bus. The European budget carriers have a similar approach. It’s a little disconcerting, but after the first flight I was pretty happy with it. (I picked an exit row window seat with amazing legroom, no upgrade required.)

The gate agent did try to take my boarding pass, but I snagged it back, since I had my next leg printed on the back.

On the second leg, though, there was a snafu. After boarding, a flight attendant said two men’s names over the intercom, asking if they were on board. There was no response. Then they counted the cabin, checking that the expected number of people were on board. It didn’t match, and they counted again. Still no match.

The flight attendant asked everyone to pay close attention, to tap their neighbors if they had earbuds in, then repeated the names. No luck.

So the flight attendant asked everyone to take out their photo IDs, and announced that the flight attendants would be checking the names of everyone on board.

For a few minutes they tried to avoid this, double-checking subsets of people, like those who were continuing on this plane from a previous segment, but they couldn’t locate the mismatch. Eventually they started to map the cabin, asking everyone’s name (but not checking ID), one notetaker starting from the front and one from the rear. They also announced the two men’s names again.

As an airline anecdote, this is pretty boring … but I think it might be an interesting lesson in fault-tolerant data structure design. The major problem here, the open seating plan, could be seen as choosing to store passengers in a structure that’s neither indexed nor sorted, like a flat file. That allows efficient insertion and clearing, but it makes validity checking O(N). Even worse, the boarding pass could have made every member of the set self-validating, but they collected them all upon boarding, preventing the use of, say, a handheld barcode scanner to accelerate the process. Instead, the linear scan has to compare each name to a very slow master database (a paper roster).

With sufficient foresight, the seatback screens could have an app that allowed each passenger to enter their own name, sharding the process and rebuilding the seatmap in parallel. Unfortunately, there was not such foresight, nor were there any seatback screens at all.

An hour after scheduled departure, the count had completed, and the crew was huddled at the front of the plane, scanning through the results and trying to figure out what to do next, and periodically calling out names of people to press their call button.

A few minutes later, a flight attendant explained that the printed roster had more people on it than there are seats on the plane. The master database must be corrupted, making the consistency check worthless.

At 75 minutes, we were told to deplane, but leave our bags. When in doubt, rebuild the database from ground truth. We were told that we could save our seats by leaving something on them … but please don’t mark any open seats, because more people will be joining us. There will be “a gesture of good will on our reservation”. In Southwest’s lingo, this is a “GOG”.

Deplaning and then reboarding a 737 takes a bit over 30 minutes, using photo IDs instead of boarding passes.

Two hours after scheduled departure, the database is finally consistent and we are ready to go.