One of the reasons I like computers, is because there is so much failure. I enforce some analog superiority over the digital failure to fix it. I like computers because I am capable of fixing them. Fixing problems is very satisfying.
Being a specialist usually means that you are a good problem solver. I have had my share of problems over the years and have developed a methodology to solve problems. My methodology looks extremely simple on the surface. This makes it easy to remember and explain. It does not make it easy to solve a problem, because a good share of domain knowledge is still involved. Yet I am sure that if you follow these steps and are smart enough, you can solve almost any problem.
What you need to do is follow a strict process of solving problems. And my process consists of only five steps.
The steps are, in the correct order:
To solve a problem you need to isolate it. This can be done by asking some questions: What is the problem? What causes the problem? Is it my problem? (Everybody has the right to an equal amount of problems.) When does the problem become visible? Who is affected by the problem? What has changed recently? And most important: Does the problem require a fix?
What these questions bring is a solid understanding of the magnitude of the problem. Most problems arise as ‘it does not work anymore’ or similar nonsense. Your first objective is to find out what is ‘it’ and what it was supposed to do?
A lot of problems go away themselves, or are user errors. Almost all problems arrive as a symptom. You shouldn’t solve symptoms. This phase requires you to find out exactly what the problem is and in this phase you are not allowed to do anything else. You are searching. Not solving. You keep on digging until you understand the problem. Keep on searching until you find the root cause of the problem. Most problems inflict other symptoms – side effects – which might emerge as problems themselves. You are not solving these. You are trying to solve the first stone that inflicted the domino-race. It is very, very important that you do not break anything else.
During isolation, you start analyzing. What do you know? What do you need to know? During every step you need some reflection. You need to make sure you follow one path at a time. Only when you are finished you try another path. Continuously check your search strategy and evaluate your results. The golden rule is that you do not muddle around for more than half an hour. If you do not significantly progress in half an hour, you need to step away and skip this trial or get help. Working randomly might shorten the time to solve it, but that is just luck. Working structurally doesn’t necessarily give you the shortest solve time, yet it is a secure path and helps you quantify the work (“I need to know and test 5 more things, so I need 3 hours the most”).
During this phase you should start documenting: write things down. When isolating and analyzing you should bring pen and paper. You need to make notes. Who did you talk to? What did you do? What ideas do you have left? What is been excluded? And it helps to create a drawing or flow diagram. Remember that you are still searching and not yet fixing. Write down what you do, what you want to try and what you have done. And if you have found a solution, write down the steps to solve the problem.
Asking questions is good. If you need to solve a problem, you might want some help. Asking for help can be as simple as explaining what you have done. Just to verify that you haven’t overlooked anything and to order the process in your head. It is like taking a short break. Most problems are solved by asking the right question instead of giving the right answer.
Only if you are sure what the problem is, you can continue to the next phase. Phase 4: Fixing the problem. By now you should know what to do, because you documented it.
After the fix you need to check it. Then verify it. Then let someone else verify it again.
I have been thanked often without fixing a problem. Just isolating and analyzing was more than enough and they could handle it further themselves. Fixing is easy. Isolating and analyzing is much harder.
There is something to remember: During the process you have asked people for help. Make sure that you inform the people who are still out there helping you, know that their help was appreciated but is no longer necessary. Tell them that the problem is solved. Perhaps even tell them how you solved it, so they can learn from it as well.
If you are a domain expert, experience can help you reduce the solving time considerably. But it does not disqualify you from the fact that you need to go through these steps. As an expert you need to be able to explain what you do, why you do it and what you solve.
A problem is solved when it has been isolated, analyzed, fixed and tested. The solution has been written down for future reference. Only then is a problem solved.