I’m writing an example for a workshop on estimation in an agile context, and I’m considering using the idea of preparing a multi-course meal. I think I like this because it is entirely non-technical, so I can give it to developers, customers, QA, or anyone else without regard to previous technical knowledge. I also like it because there are obvious tie-ins to concepts like freshness, inventory, rapid delivery, and so on. That is as close to the real-world considerations of a software project I can think of while keeping it approachable for everyone.
So, here goes:
I have 100 guests showing up in 6 hours for an end of project celebration. This is the entire project team and their families. They did a great job on their last delivery, so we want to reward them with a feast. The menu is top secret, but we want it to surprise and delight them as much as possible. Here is the schedule:
12:00PM – 1:00PM – Guests start arriving. I need hors d’oeuvres ready and passed around through the crowd as they gather.
1:00PM-2:00PM – Salad and appetizer course served
3:00PM-4:00PM – Lunch
5:00PM-5:30PM – Dessert and Coffee
That gives us 4 different courses to serve. I have a kitchen filled with supplies, everything you might need. The pantry is well stocked, tons of pots and pans, spices, herbs, three ovens and stoves, and anything else you might need. I just need you and your team of world-class chefs to create something for me and my guests.
I’d like to have 4 or 5 different hors d’oeuvres, 3 different kinds of salads, 2 kinds of appetizers. Lunch should be a buffet of 3 meats, 2 pasta dishes, 3 vegetables, and a rice dish. I’d like 3 different desserts, one decadently sweet, one fruit dish, and a big cake.
So, off you go. Give me a selection of great food at each of these times. Bear in mind that things can go wrong, like ovens not working, menus changed, schedules shortening, so you’ll have to constantly keep your eye on time and delivering the best culinary value for the given effort.
So, how did that sound? I intend to mix things up by adding vegetarian dishes to the lunch menu, an oven going out, changing the schedule, running out of something… Basically doing whatever it takes to have them adapt, replan, and go forward.
Does this sound close enough to a real software project to be useful? Does the exercise sound like anything that would teach estimation and prioritization? Any sort of feedback would be greatly appreciated.