Debugging is not just fixing a
problem, it involves understanding the problem, finding its cause and then
making changes that get the problem to be gone for good.
Understand the Customer. The most basic and important aspect of debugging or troubleshooting is to make sure you understand what the customer is trying to do and why it is failing. Jumping to conclusions is likely to only aggravate the interactions or lack there of. It can be quite difficult to do this in reality.
For example, the customer may report that their e-mail isn't working. There are so many possible causes it can really be nearly impossible to jump to a conclusion. Maybe the customer hasn't correctly connected their network cable or their profile has been corrupted or their link to their client e-mail program has been changed or all kinds of other possibilities.
It is also important to know the customer so that you won't be insulting by expecting too much information from them or belittling them by talking down to them after they have provided considerable insight into the real problem.
Find the Real Cause. It is almost always undesirable to not search for the real cause of the problem. If you find the real cause then it is likely to be much easier to find this same causality on other occasions or reconfigure setups so that this cause doesn't occur elsewhere.
It is important to be methodical or systematic about finding causes. Form hypotheses based on evidence and investigate. Two of the most repeatedly used approaches in debugging or troubleshooting are
Through process of elimination you can usually start with
potential causes. Then you move towards more sophisticated problems.
I sometimes have to joke about some support staff I have encountered over the years at some universities. I have had some not entirely dissimilar experiences at one university in particular.
Anyway, you get the idea.
The Right Tools. Some debugging tools are hardware oriented, others are more software oriented. Diagnostic tools can help you examine the inner workings of some devices.
You also need to make sure you stay up to date on patches that the developers and/or vendors provide. This in itself can be quite involved considering some firms proficiency at releasing patches to their products.
The Icing. It is always important to be constantly on the lookout for better tools. This may best be done by attending conferences such as SAGE. Whether it is SNMP for trying to unify management and monitoring of your networks, or a better firewall to help prevent unwanted intrusions, it is important to keep as up to date with what really works as possible.
Being buzzword compliant is usually a hindrance to truly keeping up to date with what works. I'm confident we all have our horror stories on this topic.
It is also important to make sure you have appropriate training on the right tools to make certain
It is also important to have people that have end-to-end understanding of particular systems. These people aren't likely to be the first person assigned to debugging tasks, but they can provide support and maybe even more when it is necessary.