In my life I'm no different to any other developer. I make mistakes from time to time, and others around me make them too. As a result, I occasionally get allocated some bugs to fix, either ones I've just managed to make myself, or long standing ones which have just been found. Bugs are annoying for all concerned, I'm sure we can all agree on that. They are annoying for the person who discovers them because it means the system can't do what they wanted or expected it to. They are annoying for anyone on a support desk, as it means they have to work through it and determine if it's intended to work that way, or if it is doing something stupid. And it's annoying for the developer, because there's usually a ton of other things to do besides fixing issues. After all, our code is always perfect, so why can't every other developer's code be perfect?
The trouble I've found in a lot of places, both in my professional life and also through looking into software and some of the issues it has when I have trouble is that people don't seem to write tickets or bug reports in a way that is ideal. I understand why they don't; it takes too much time. But simply put, if the details aren't there, it's likely to be missed or closed as "cannot reproduce locally". I know some people see this as an excuse not to fix something, but the truth is, if we can't produce the bug, and can't see how it would ever do what you are saying it does, then it doesn't exist.
I've had one recently and the process to recreate was documented as Load X, press Y and Z happens. I tried those steps and Z didn't happen. I tried in a different browser and Z still didn't happen. I tried on a different version of the application following those steps and Z still didn't happen. It turns out that between pressing Y and then Z happening, you also had to do A and B. Luckily I tried those out of absolute desperation in order to produce the bug, but if they had been recorded properly and the full process was documented, I could have saved myself a lot of time trying to reproduce the bug and worked on the fix.
All of this reminded me of an article Joel Spolsky wrote at the turn of the millennium, and it still rings true now, about painless bug tracking. He lists the three things that every bug report needs:
- Steps to reproduce,
- What you expected to see, and
- What you saw instead.
I have nothing more to say on the matter which isn't covered so well by Joel himself in his article, I would just like people to take note of it, and write complete bug reports. Yes it might take you a little longer, but it will save the bug being closed without a fix, an it might speed up the finding and fixing of the issue.