I hate failure. And not just in myself. I don’t like watching others fail. It’s really hard for me to watch someone doing something ‘the wrong way’ without correcting them. As a parent I know I have to let my kids fail sometimes so that they can learn lessons I could never otherwise teach them. My son has been learning to read this year and as I sit with him and listen to him struggle with sounding out some simple words, I want to just read it for him. I want to take over and read it for him – it’s so much faster anyways. But I know that if I don’t let him struggle and fail I’ll actually be slowing down the learning process.
Work isn’t exempt from this.
How often have you jumped in to show someone what they were doing wrong or just taken over and done it for them? Or how many times have you stopped someone from making a mistake? Sometimes it is a necessary thing to do, but have you ever short-circuited the learning process? I think that the idea of failure as something that leads to success is worth embracing.
If we leave it there though, we are in danger of missing an important point. Important lessons come from failure, but we need to set people up for success.
Now what gives on that? Have I given up on Aristolean logic? We need failure and success?
You see to learn from failure, you need to be set up for success. Let’s return to my son learning to read. He’s been setup for success. He’s been taught what sounds letter usually make in combination with each other. He’s been taught some basic rules of reading and he gets feedback on what he is great at, as well as feedback on how to correctly say words he has messed up. He has my finger under the word guiding him. He has a teacher and parents that help him with this. So do I let him fail? Yes of course, but only in a way that I think is setting him up for success.
I don’t want to see failure for failures sake. The goal is learning not failure and so the environment needs to be conducive to learning. Learning from failure.
This blog is about testing. Hopefully by now you have been able to draw a few conclusions on your own that can help you in the way you work with your teammates, but let me pull out a few of my observations as well.
How can you as a tester set up others for success? One time I was riding with a friend and we were coming up to a stop sign. Based on how fast we were going, I was pretty sure he didn’t see the stop sign. I quickly looked both ways and there were no cars coming on the cross road, so I waited. Then just as he was entering the intersection, I casually said “That’s a stop sign eh” (yes I am a Canadian). The look of panic on his face as he realized what he had just done was priceless, but why tell this story here? I want us to think for a minute about the key factor in there – I looked both ways. I wanted to let him learn a lesson about paying attention that he wouldn’t soon forget, but what if there had been a car coming down the cross road? If I had let him smash up his car would I have been setting him up for success? No of course not! The whole point of letting him run the stop sign was so that he wouldn’t do again sometime when it would be more dangerous.
Setting someone up for success means letting them fail in safe ways. Letting a serious bug go live so that a developer can ‘learn to write better unit tests’ is not setting someone up for success. Working with your team to help them do more testing and putting together a transition plan that moves away from you being a safety net is setting them up for success. There will be failures along the way of course, but you need to be doing everything you can to make sure everyone has the tools they need to use those failures as learning experiences.
Some other examples of setting yourself up for success in failure include things like shortening your release cycle so that you can better respond to failure. A bug found in the wild? Being able to quickly respond gives you success in the failure. Or another example is having instrumentation in place that helps you understand your customer’s pain points. You could think of those pain points as failures in your design or code, but if you have set yourself up for success you can respond to them and learn from them. These are just a few examples, and I’m sure that if you think about it, you can come up with many other ways to succeed in failure.
So don’t be afraid of failure, focus instead on setting yourself and your team up to learn and grow from failures.