Dec 30, 2011

How to solve any kind of problems

I planned to write this post for a long time. The post is long and it provides detailed instructions on solving any kind of problems. Surprisingly, when it comes to solving problems, the same algorithm works for everything. I came to this algorithm after 15 years of being a software developer, a manager for my own company projects, a family man and a dad. It is not importatnt where the problem is as soon as you folloe the algorithm. You can solve the problem with it, if it is solvable according to laws of the nature and means you have under hand.
The algorithm consists from six steps. Let's begin.

Realize that the problem exists

This may sound dumb but this is where the failures start. How much time did you say to yourself: "Oh, it is not a proble!m" only to regret later that you did not address it in the beginning? Son has bad marks in school? Ah, well, he will recover. Customer complains? Ah, well, they always find something to complain about.
Sorry, it does not work. Listen to your instincts. If they say, you might have a problem, than most likely you have it. The cost of solving the problem increases with time. The later you realize you have the problem, the more effort you have to make to solve it. The more you delay, the more you loose.
So, the very first step to solve the problem is to realize that it exists. Be honest with yourself and say it to yourself: "I have a problem to solve". With that you are closer to solving the problem than you was before. This helps you to commit to solving the problem.

Realize what the problem is

This is a different step. If you realize that you have a problem, it does not mean you realize what the problem is. Your son is getting bad marks? Is that a problem? Most people will say "yes" and be wrong here. Getting bad marks is not a problem, it is a result, an outcome of the problem. This is why it is important to realize what the problem is.
Uncovering the real problem could be difficult but this is the time when you should not rush. If you rush now, you may end up solving an imagined problem, not a real one. Really, bad marks - what else could be a problem? Well, tons of them. It can be bad relations with classmates or teachers, wrong course, even medical issues! You must invest time to understand the root, the cause of the problem! If your head aches, you would not chop it, right? For the first time you may take a medicine to ease the pain but if the pain returns, you go to see the doctor. Same with any other problem: get to the root of it, see if your "problem" is not a sympthom of something deeper.

Research possible solutions

This is what most people never do. That just catch the first idea that comes to their mind and go for it. This rarely works satisfactory. The first solution is almost never good. Therefore for years I nver take the first thing that comes to my mind as a solution. I know that there always exists a better solution. It only ta,es time to get it. Cool down. Stop. Don't rush again. Think!
Depending on the complexity of the problem and your familiarity with the topic it may take from minutes to months to discover the solution. Months is extreme, of course. Usually it does not take that long. For technical issues I take about 3-4 hours to do something else while putting the problem somewhere to the back of my mind (I imagine it like an old closet of 18th century with many small doors where I can put the problem to "cook" for a while). For something related to kids I usually must sleep ovErnight to Find a decision.
It really works. Everytime when I find a better solution, I am surprised how better it it than the first idea that came to my mind. May be this is why my work is usually good: I take time to think about it while doing other tasks. It does work!

Make a plan

Yup, this is another thing very few people do.
You do not have to write a detailed plan on a roll of paper or in the spreadsheet. Well, you can, if you want or if the problem is complex and sution is lengthy, but a menthal plan do in most cases. The reason for having a plan is simple: You must know what to do exactky to solve the problem and in what sequence. Chaos is not your way, believe me.

Execute

Only now, when you are clear about the problem, solution and plan, you can go and execute your plan. Remember, that there are no plans without flaws. Even brilliant plans have flaws. So be able to readjust dynamically by temporary going back as many steps as you need. This may sound complicated and time consuming but it is not. When you become used to this algorithm, you will discover to your amazement that you can do it automatically. It is simplicy practice.

Wrap-up

It is a good thing to make a wrap-up after the problem is solved. I rarely write down what the problem was and what I did to solve it (right and wrong) but if you can write it down in a personal diary, it would be good. You can come to it later if necessary.
Why don't I do it? Well, I do not like to write on paper and I could not find a good app for that. At least, I do a quick analysis afterwards and try to see what I did well and what I did badly. That helps to avoid the same mistakes later.

Conclusion

What do you think of this? Does that sound like a good algorithm to you? I you have anything to add, please, write in in comments.
P.S. No, my son does not have bad marks :) It was just a common example.