Here’s an extract taken from Making the date by Ron Jeffries.
From the viewpoint of the customer, the development organization is like a washing machine. The machine will take a batch of clothes, up to some maximum size, and 30 minutes later, the clothes are washed. To wash that many clothes that well, we can’t get the machine to do it in 10 minutes, or even 20. We can try to jam a few more clothes in, and for a while it will work, but there really is a maximum beyond which the machine starts jamming, tearing up the clothes, and not getting them clean.
If we’re faced with 10 batches of clothes, it’s going to take five hours to get them all done, if we’re totally on top of the machine every minute. If we only have three hours before we have to leave for the wedding, we’ll need to decide which clothes to do, and which ones to defer until next Monday. We can do six batches, no more. No amount of holding the machine’s feet to the fire will make it do any more, and with a little bad luck we’ll burn a wire and it won’t work at all. Plus foot-burning takes time away from getting the wash done.
Our job as the Washer Customer is pretty simple, once we get over any delusions of having power over the machine. We need to select six batches of clothes that will do the best job of serving our needs at the wedding, and until next Monday. And, if we’re wise, we’ll even front-load (no pun intended) those batches, to put important items in the first few batches, just in case something goes wrong and we only get four or five batches. Maybe we need to go to the store while one of the batches runs. If so, we might want to make sure we get a complete outfit out of the first couple of batches.
The software situation is quite similar. View the development team as a machine that produces nice clean features. Pick features with two things in mind: Make sure we have all the key features by the final deadline, and try to batch features so that usable subsets of the product arise every few iterations. Now, it’s possible to push the washing machine metaphor a long way, and get some benefit.
- Shouting at the machine won’t help. It’s going as fast as it can.
- Taking the machine apart in hopes of speeding it up will guarantee that you get less wash done by the time the three hours are up.
- Buying a new machine may help you later, but it won’t help you today.
- Keeping the machine well-maintained will serve you over the longer term.
- Small maintenance steps, like cleaning the filter, may even help over the short term.
- If we forget to do something important, like shirts, until the last batch, there’s a good chance we’re going to look bad at the wedding.
Well, let’s not go nuts here. The point is that if we, as the Managing Customer, focus mostly on getting the batches right, we’ll come close to doing the best possible job of meeting the goals on time. If we’re a bit clever with mixing the features in the batches, we can even have interim releases ready to go, for special needs and opportunities.
