Getting good bug reports is the difference between making your customers happy and letting them silently turn away and not come back. You want to get as many good reports as possible; this means not only collecting great data, but also making it easy for customers to send it to you.
Once upon a time, I loved a DB Designer tool and used it for everything. So when it was killed in favor of building MySQL Workbench, I began waiting. 9 years later I still wait. They have bugs. They need bug-reports.
Their bug report system takes precious bug data and throws it away through massive user interface friction.
Why this bug report screen sucks so bad:
- User must fill out at least 6 fields.
- Two fields require you to be a member of their community. This means a common sequence of hurdles:
- Open a browser, go to website, find the registration form.
- Create a new user/password pair, hope it passes the security requirements.
- Check your email for a few minutes until you get a confirmation link.
- Come up with two descriptions and pidgin-hole the bug into a list of categories. This can be hard.
- Gathering the steps to reproduce the bug is the most important thing here.
- Two fields require you to be a member of their community. This means a common sequence of hurdles:
- After 9 years I still don’t have a mysql.com account. I do have 280 other logins and need one more like I do a bear mauling my face.
Look I get it: you want to know peoples names, send emails to follow up, give points, badges, achievements, make someone a Mayor of BugVille. Whatever! Your primary goal is to acquire bug-reports to make your apps stop crashing.
Turning away bug-reports because you don’t have users’ personal information is missing the point.
A fool proof way to fix a bug with zero effort from the user:
- Record the Exception message.
- Capture and unroll the Stack Trace.
- Take a mini-dump of the process.
Upload as much of 1-3 as you can to a server. Analyze. Fix. Done.
Sometimes you also need to know what the user did. Especially in complex UI systems full of async events and cross-threading issues. Heinsenbugs are miserably difficult to understand from a single-timeslice coredump. But the gathered data will be crucial anyway.
The lesson is:
Don’t turn away bug-reports by putting a wall up between you and your users. At least upload the stack-trace and exception message. Most of the time that will be enough.
What developer wouldn’t want a nice stack-trace?