Some software teams get stuck because their business users don’t realise they need to make time to take delivery of features they’ve requested. Over time their User Acceptance Testing backlog increases to the point where the team’s throughput virtually stalls.
Once upon a time there was a restaurant. It was a good restaurant with a good reputation. It served quality food at a reasonable price. The service was excellent and it became very popular.
One day a group of diners came to the restaurant and started ordering food. Dish after dish they ordered, and the waiter politely took their orders to the kitchen, where the chef happily made up each dish. The waiter started bringing the dishes to the table, but the diners were too engrossed in talking to each other and too busy ordering more food to eat what they had already requested.
Soon the table filled up, so the waiter stopped bringing food to the table, instead leaving it at the serving hatch. Then the serving hatch filled up, so now the chef couldn’t move the food out of the kitchen. The piled up food started getting in the way! The kitchen staff were tripping over themselves because of all the dishes waiting to be delivered, and the dishes themselves were going cold and getting spoiled. The diners would never want them now—they had probably changed their mind in the meantime about what they wanted to eat!
The kitchen staff were getting frustrated because they couldn’t work. The diners were getting cross because their food wasn’t arriving, the waiters were getting upset because everyone was blaming them, and still there wasn’t anywhere to put the food.
Then one of the diners at another table said: “I think I see a solution. What if you diners have a pile of tokens that represent the amount of dishes you can order? Each time you order a dish, you give a token to the waiter who takes it to the kitchen. When you eat the dish you get the token back, so you can order another dish. If you order so much that you run out of tokens, you can’t order any more dishes until you eat some of the food you ordered. That way the table won’t get overloaded, the serving hatch won’t get overloaded, the kitchen won’t get overloaded, and you’ll get your dishes piping hot straight from the kitchen!”
“For now though, you’ll have to either eat the cold dishes on the table and in the serving hatch or throw them away—not forgetting someone already paid to prepare them—and start over with the tokens. Either way it won’t be very comfortable in the short term! But at least you’ll know it won’t happen again once you start limiting the number of dishes in the process.”
“Crikey,” said one of the diners, “we didn’t realise all our orders were causing the blockage. We thought it was a problem in the kitchen. (You should hear what we’ve been saying about the kitchen staff!)”
“Is that what’s been happening?” asked the chef. “I thought it was a problem in my kitchen. I’ve had the staff working flat out the whole time, and as a result they’ve been making more mistakes. (You should hear what I’ve been saying about the kitchen staff!) I thought it was that. I’d better go and apologise!”
“Phew!” said one of the kitchen staff. “We’ve been saying for ages that the diners just needed to eat some of the food we’ve prepared and clear the serving hatch, but they tell us they’re too busy to eat and then they order more food because they’re still hungry. (You should hear what we’ve been saying about the diners!)”
The waiters cleared down the orders—most of them hadn’t been started anyway—and the diners ate some of the food and threw some away, and they started over using the tokens. When the pile of tokens was getting low it was a signal that they should maybe stop ordering for a while and eat some of the food. After a while the kitchen was able to predict how long it would take to prepare each type of dish, and they added the timings to the menu. That proved very popular with the diners, who were now able to choose between quick lunch items and the more substantial dishes. Everyone was very happy.
The tokens proved so successful that the restaurant owner introduced them in her other restaurants. Not all the time, just when things got busy, so the kitchen wouldn’t get overloaded. From that day on, the diners would always get their meals in time, and always piping hot.