One of the tenets of the agile methodology is feedback. To provide value to your customer, you need to know that what you are delivering is correct. But as an agile coach, I often struggle with teams understanding the importance of getting feedback from the customer as soon as possible. One way to get teams to understand is to use an analogy - cooking.
Imagine that you decided to create a new casserole. You have never made this casserole before, although you have made other casseroles in the past. So you prepare the new casserole based on how you think it should be made to taste the best. But instead of having someone try it right after it is made, you put it in the freezer.
A couple of months later you decide to share your new casserole with your family. Now think about how your family might react to your new casserole. One reaction is that they love your casserole, and ask you to make it again. Another reaction might be that they think your casserole is okay, but they wonder why you didn’t have more tomatoes in it. Do you remember why you didn’t add more tomatoes? You made the casserole two months ago so you can’t really add more tomatoes now. So your family has to live with it just the way it is. Finally, your family could hate your new casserole. They question why you made this casserole the way you did. It wasn’t even close to what they like.
Now imagine your family’s reaction if you would have had them sample your new casserole as you were preparing it. They could have told you that it needed more tomatoes, and you could have added them before the casserole was done. This would have ensured that you ended up with a casserole that you knew your family liked. Then, when you share your new casserole two months later, you already know that they will like it.
Which scenario would you prefer? One of the most satisfying things about cooking is knowing that the casserole will be enjoyed by the person eating it. Software development is the same way. Developers want to build software that their customers will want to use, just like cooks want to prepare food that their customers will want to eat. This is why software should be deployed and tested as often as possible. The sooner a developer gets feedback, the easier it will be for them to make corrections, so that they deliver software that the customer will like.