“Focus on success” , “Get it right first time”, “Failure wastes time and causes embarrassment” These beliefs are drummed into us from an early age and many of us go through life never questioning them.
But by accepting that we can fail we become more daring, more creative and less risk-adverse. An artist may make 100’s of sketches before he holds a brush but we expect to come up with the best design first time. A child learns to climb surrounded by padded mats so that he can fall/fail often.
“How can we afford to fail when we are running out of time?” Failure needn’t cost time. If we fail early (and that requires regularly feedback) the cost is small but the insight can be great, resulting in far better solutions and far less work. The learning we gain from the failure easily offsets that loss.
So by allowing failure you get a better solution faster and you become smarter but it feels so counter-intuitive that it rarely happens. Managers persist in promoting a culture that punishes failure. Accept that the software you are writing is full of failures, allow for continual rework. Accept that your process is full of failures and you will continually improve.
The faster you get feedback the faster you find the failures. Agile principles and practices focus on reducing feedback cycles. Pairing should bring us constant feedback. Unit Tests identify failures as soon as the method is written. Showing and discussing our work with stakeholders allows us both to learn what is really needed.
But then failure isn’t really failure it’s just creative steps.