Party Slicing
Comparing party size to story size.Yesterday I talked about WIP limits in restaurants. I also touched on a related topic, which I want to expand on today: Batch size.
From yesterday’s post:
Parties of 2 were routinely told 45 minutes to wait. Parties of 5 or more were given times of up to 2 and a half hours.
Why is a party of 2 given a much shorter wait time than a party of 8?
It’s probably fairly intuitive to you when you think about a restaurant: Finding a large table, or two small tables to push together, which are unoccupied takes longer than waiting for the first disparate small table to open up.
But how does that apply to software development?
Well, maybe it doesn’t very much. But the truth is, a large party in a restaurant setting has a lot more complications than just sitting together. And many of these apply to software development more or less directly.
- It’s not just about sitting together. It’s about a single server with capacity to serve that table. Unless you have a truly large party (say 20 or 30 or more), you’ll typically be served by a single server. If your party is large enough, you may be the only table they’re serving during your stay.
- There are other reservations to contend with. There may be an 8-top (restaurant lingo for a table with room for 8 people) open right now, but there may also be a reservation for 10 that will be arriving in 30 minutes. This turns restaurant seating into sort of a 3-dimensional Tetris game.
- Not all tables are created equal. When I first worked in the restaurant business, we had smoking and non-smoking sections. It was common that one (usually non-smoking) was more full than the other, leading to a “I can seat you right now in smoking, or in 30 minutes in non-smoking” types of situations. Indoor/outdoor seating is another concern. And as sad as it is to say, there were times we had to be careful about seating certain racial or cultural demographics next to each other, as fights would sometimes break out in the neighborhood where I was working.
- The kitchen cares, too. In full-service restaurants, the kitchen tries to serve the entire table’s main course at once. Any apetizers or soups and salads are coordinated and timed according to when the main course will come out. If your entire party orders Macaronni and Cheese, timing delivery of the main course is easy. If one person orders a rare steak and one a well-done steak, things are now more complicated. The chef has to start the steaks at exactly the right time in anticipation of when everything else in the order will be completed. The larger the party, the harder this coordination task, and the more it prevents other tables’ food from being prepared. It also increases the risk, in the sense that a mistake (such as overcooking a steak) has the potential to ruin an entire table’s dinner, that may then need to be re-prepared (adding to the delay and frustration of the guests).
All of this helps explain why large parties take longer to seat, and to serve. It also helps explain why sometimes you may be told “I can seat you faster if you don’t want to sit together.” This is “party slicing”. It’s the restaurant equivalent of what we do any time we turn a user story into 2 or more.