Troubleshooting is an important skill that any developer should build from the beginning without fail. It is an important skill that can save a lot of time if you just know where to look for the problem. When do you find out that you have to troubleshoot something? This is my definition of troubleshooting. When you are into a trouble, and you know that it is not a syntax error that is causing the problem, you know that it is not the logic that is causing the problem, and you start to sratch your head or keep your hands on your head and start thinking, why is my machine acting weird, then you are in trouble and you have to shoot it. Be aware though, sometimes you think too much while you actually made a careless mistake and a typo that is causing the program to misbehave. I am not talking about this type either. What I am talking about is a problem where the solution is not around quickly and you need help, either from experts around or from experts over the net in the form of forums, groups and blogs.
I had been grooming fresh college students into IT professionals over last 7 years and this is what I tell them. The most important skill that you have to hone yourself so that you can start climbing the ladder faster is the troubleshooting skill. Think about this, when you are working on solving a problem, you dont start working with the intention that you want to run into hell lot of problems and not complete it. Everybody wants verything to be working perfectly the first time. And we know that practically its not the case most of the time. Even experts get into a mess and have to struggle a lot to get out of the problem. While you cannot avoid problems, but you can keep a watch over yourself to make sure that you are cutting the time that you spend on finding where the problem is. Here is a neat exercise that I suggest to the new folks.
Create a word document that contains a table, similar to below.
|S.no||Problem statement||Date and Time (A)||Estimated time to complete (B)||Actual Date and Time to complete (C)||Troublshooting scale (C-A) - B||Solution|
Keep this document open every day and start adding the details as and when you start troubleshooting something. This document helps in two ways,
- It helps you keep track of how effective you are in troubleshooting. If there are more negative values in the troubleshooting scale then you are improving in your skill.
- You are not just recording the time, but also recording the problem and solution, this becomes a valuable respository and can help save a lot of time in the future not only for you, but for your team as well as the company
Ofcourse this exercise will need some discipline, you have to keep setting benchmarks and compete with yourself to be effective.