Lessons (?) from Pizza Delivery

3 minute read

I was thinking about my pizza delivery job, and some of the lessons (I think) I learned from it.

I’d had my driver’s license for about 6 months. I liked driving my car, I had friends who worked for a local pizza restaurant, and I had visions of zipping around town delivering pizzas quickly. Could I drive faster than the speed limit? Yes! Surely that’s what it would take to be a good delivery driver. I’m being reductive for effect, but also because I hope it’s a good first-order approximation of a typical person’s perspective.

It turns out, perhaps unsurprisingly, that driving faster is not the key to success. Personal heroics were not enough to feed the city.

How it actually worked:

  1. customers call in orders from all over town, whenever they want
  2. kitchen makes food in the order it is placed, both delivery and in-person orders.
  3. each delivery driver looks at all the open orders, and decides which ones they’ll take (definitely the oldest one, but which of the others?)

Ideally you’d take the subset of orders that were done around the same time, and which were located in reasonable proximity to each other. IMO, this was the hardest part of the job. “Should I delay these two orders for the 5-10 minutes it’ll take the kitchen to make this third one?” Depends on time, distance, and the other orders that the other drivers need to take. There wasn’t an easy decision tree, and even after 3+ years of experience, I still got this wrong.

I don’t think I was mature enough at the time to realize and accept that inevitably, someone’s going to get a bad experience. I believed in the system and the people: we have enough delivery drivers to satisfy demand for the day, we’ll make the right choices of which deliveries to group together, and there’s room for coworkers to make selfish decisions. It probably would have been easier if I could identify and accept “oh, that house has bad luck, their pizza is going to be late because they ordered at the wrong time ( sometimes down to +/- 10 minutes)”. I wanted to do whatever we could to make it work.

Selfish decisions? Oh yeah. Layered on top of the complex interplay of “which orders do I need to take in order for all the deliveries to arrive as efficiently as possible” was each individual’s “which orders do I want to take in order to maximize my earnings for the evening.” If you’d had the job long enough, you’d recognize good customers and bad customers (based on historical tip amount), and use that to influence your choice of deliveries. You’d definitely delay some orders if it meant you got a house that gives a good tip, and you’d happily skip a house that never tips if possible. I consider myself fortunate: I was living at home and I wasn’t trying to pay a mortgage, tuition, or a drug habit, and therefore I usually only worried about delivering pizzas effectively.

I was surprised. It wasn’t just selfishness, this was very clearly a zero-sum situation. “Oh, you {took,skipped} a delivery that {didn’t,did} make sense with the rest of your run, because of their tipping habits? What about the rest of us?” There were acceptable levels of selfishness, and if you weren’t operating on the same level, it was your fault for not playing the game correctly.

It would have been simpler if the system only cared about the customers, but it sure made for an educational experience of a self-organizing system with a variety of actors.

Postscript from Feb 2022: Well, I don’t know that I really explained any of the lessons that well. After a long break from this blog, I found this sitting unpublished. If I had a higher quality bar, maybe I’d leave it unpublished until I reworked it…