The other day I was working on my taxes. The online tax preparation software that I used tries to guide you through the process in a certain way. However, when I started on it I didn’t have all my slips yet so I had to jump around in the product a bit. There were controls that allowed this to happen, but it was pretty clear from the overall approach and feel of the software that this was not what they expected typical users to do.
When I was doing this, I noticed something: I was looking very carefully for issues in a way that I rarely do while using software. It was like there was a warning bell going off in my head. Without thinking about it explicitly, I intuitively knew I was doing something ‘dangerous.’ This was software I knew very little about, but this warning bell was going off in my head so I paid attention to it and checked things closely. In doing this I noticed that the software had indeed failed to save some of the data that I had already put in. I’m not sure if I would have noticed this or not without the warning bell in my head, but I’m sure glad it was there.
It also got me thinking about what makes a good tester. Without explicitly thinking about it, I knew that this was somewhere there might be bugs, and I think that speaks to the importance of experience in testing. There are many things that can be taught and learned, but there are also skills and abilities that only come from years of experience. You begin to develop a sense for where bugs like to hide and what kinds of things to look for in finding them. If you want to get to be a great tester, there is no substitute for just doing a lot of testing. Build up that intuition and then pay close attention to it. Embrace the intuitions of testing.