As an analyst I almost daily have to solve some kind of problems and I bet you do also. Problems can be in different forms, but I’ve been noticing that the same pattern for finding the solution keeps coming up. I think this pattern is something essential and we use it often but i think it is a good idea to put it on paper.
First, every problem has its parent problem. Yes, EVERY problem! This means that whenever you have a problem you can ask why is it a problem and where it comes from. Consider an alcoholic. Is too much drinking his problem? Probably yes, but there is always the root problem that made him drinking in the first place. Depression maybe?
Now if we forget about alcoholic and think about software development then we can see that the idea stays the same. Our clients are those whose problems we mostly have to solve. For example, if the client comes and says that he needs a button to the user interface.The client has a problem that there is no button currently. This problem has a root problem… maybe the client wants to open a file with this button. The client definitely does not want a button but something else and he/she thinks that the button is going to solve some kind of problem.
We now know that instead of a problem we have a stack of problems. But how can we solve our problem then? The short answer is that we often don’t even have to solve the initial problem. It is OK if we manage to solve one of the root problems. From the previous example, it is fine if we don’t make the button but we manage to do something that the user gets the right information. Or even maybe the user does not get the information but gets the right answer to whatever he/she has to decide automatically. The initial problem is not solved, but the root problem is and we can consider the whole problem solved.
We can also model a process for the problem solving. It makes use of the problem stack and I think I use it very very often. The main idea is that every time the client asks for something, then I analyze two things:
- how it could be done
- is it relevant
There is always some kind of solution that we may consider the best to this certain problem, but we have to decide two things – is it doable and is it reasonable. The solution is probably not doable if it would take 10 years and too much $$$. If the answer to one of these questions is “no” then we have to move down in the problem stack. We have to focus on the root problem, because the child problem was “unsolvable”.
We have to move to the root problem until we end up with a reasonable and doable solution. This does not mean that we don’t have to think about the root problem before, but by moving down the stack we set our focus to some certain level. It is so easy to solve a problem!
Note that this idea is somewhat connected to the root-cause analysis. Read more about this here: http://www.isixsigma.com/index.php?option=com_k2&view=item&id=1308:&Itemid=49
Karl Blum ([email protected])
My blog: http://www.karlblum.net/blog/