In The Mythical Man Month, Fred Brooks likened shipping software in time with customers’ expectations to cooking an omelette:
An omelette, promised in two minutes, may appear to be progressing nicely. But when it has not set in two minutes, the customer has two choices–wait or eat it raw. Software customers have had the same choices.
The cook has another choice; he can turn up the heat. The result is often an omelette nothing can save–burned in one part, raw in another.
I’m going to stretch, and maybe strain, the analogy. Sometimes you’re about to serve the omelette and you realise that something’s wrong. It’s not seasoned right, or you’ve forgotten to put the peppers in. Or perhaps your customer actually ordered a cheeseburger.
So what do you do?
You can serve it up and hope the customer won’t complain, at least not loudly enough for others to hear.
You can insist that it’s fine: you’re the chef, you’ve been cooking omelettes for twenty years and the customer wouldn’t know a decent omelette from his elbow.
You can cover it with a large sprig of parsley to make it look nice.
Or maybe you follow it up quickly with an omelette 2.0 which corrects the deficiencies in the first omelette.
Or, possibly hardest of all, you accept that the omelette isn’t right, slide it into the bin, and start again. That’s hard to do though. You’ll disappoint your customer, it means acknowledging that your first omelette wasn’t up to scratch, and it can be expensive in both time and money. But sometimes it’s the right thing to do.