What is a Problem Solver?
Problem solvers. They say we are all problem solvers these days. My job is computer programming. That feels like problem solving. As soon as we have solved one problem it is onto the next. But what do you do if you get stuck on a problem? Maybe you are a genius programmer who never gets stuck. For me, being only an average programmer, I get stuck embarrassingly often.
Here’s what I do.
- Understand the problem. You can’t fix the problem if you don’t understand it properly in the first place. You might think that is obvious. But here at Centiq we spend time working out the problem, which is cheaper than fixing the wrong problem.
- Start with what you know. For example I need to fix the Jenkins build for the Sirportly backup job which failed last night. I don’t even know what Sirportly is, let alone how to fix it. Help!!! But I have fixed other Jenkins jobs in the past and I have seen backups of other systems. I need to apply my previous similar experience to the new current problem in whatever way I can.
- Try the simple things first. If there are some quick simple things that you think could cause the issue then check those first before diving deep into complicated code and analysis.
- Ask the programmer’s best friend, Mr Google. If in doubt google, google, google. Chances are someone, somewhere has encountered the same or similar problem before. If you’re in luck the solution is on the web, just waiting for you.
- Visualize, draw diagrams. Creating a pictorial representation of the issue can clarify what’s happening. Pictures can show different angles of looking at the problem. This can reveal potential solution paths which were not known before.
- Take a break. Do something else for a while and come back to the problem later. I once solved a problem that I had been struggling over for four days while out on my lunchtime walk.
- Think ‘broader, not deeper’. This advice was given to me by my boss who is a chess player. In chess it doesn’t pay to analyse ten moves deep down one particular sequence of moves. This is because your opponent can do something unexpected on their next move. Similarly with programming. Perhaps you have been trying a certain solution path for some time and keep getting nowhere. Then it might be time to try a completely different solution path rather than going further down your current path.
- Ask for help. Many programmers hate asking for help. They are afraid that they will look incompetent. But the key is not to worry about what other people think. The important thing is to fix the problem and to learn from that problem.
- Try things. Just staring at a problem never fixed anything. Keep trying different things. Sometimes the result from something you try is not what you expect. That unexpected result can lead to the solution.
- Stay with it. Albert Einstein said ‘It’s not that I’m so smart, it’s just that I stay with problems longer.’ We can’t expect to solve everything at the first attempt. We need to persist even if the task feels like hitting your head against a brick wall. The solution, when found, is all the sweeter, when it was hard to find.