If you’re a student learning C#, this isn’t going to be very relevant to you. If you’ve landed a job as a developer, and you’re thrown into supporting software, it can be extremely daunting if a user as I recall!

So you’ve just had someone tell you that your application crashed when they were using it. How do you approach this?

Get as many details as possible

Most of the time, users have no idea what information they need to give you when they have an issue. They will assume you’ll know what the issue is and be able to fix it promptly.

What you need to do is request specific information from then. I find a simple ‘What were you doing at the time?’ doesn’t suffice – you need to ask them what screen of the system they were in, what they tried to input on the screen, and a screenshot of the specific error message.

Is it everyone, or just them?

If your software is widely used, this step can be crucial in assessing the urgency of an issue. If the issue is affecting one user in an application that hundreds use, it’s likely not critical. If every user is experiencing the issue, then you know that it needs resolving fast!

Walk through the scenario

Once you’ve got as much information as possible (don’t be surprised if a user forgets some of the information – but anything is better than nothing), try doing the exact same thing as them to see if you can replicate it. I also tend to document what I’m testing for two reasons

It’ll be a good reference to come back to it the bug isn’t straightforward More importantly, if you’re unable to replicate the bug you can share the scenario with the user – they may remember details of what they need that you didn’t do in your test

Logging, logging and more logging

This is less useful for dealing with immediate support issues, but absolutely invaluable for the future. Make full use of logging frameworks such as NLog or Log4Net to write internal messages that will aid future debugging and support. A good example of this would be performing a dump of a form if an error occurs (unless the data is private and confidential). This would mean you could recreate the users steps entirely without having to rely on their naturally imperfect memory.

Logging can also help in proving certain things to users. If a record has been updated and they are adamant they did not do this, the log file would give you a date and time of any updates!