A colleague of mine asked for my help, after spending hours on trying to figure out why he is getting the wrong results with his code. I went to his desk and in 5 minutes, problem was solved! You would be tempted to say, “Whoaaa, man, you're very good! Solving that dude's problem in a few minutes after he spent hours working it!".
Well, actually I didn't do anything. My colleague fixed his problem on his own. He first broke his loop of thought by calling for help. While I was at his desk, he started presenting me “THE problem”, by going through the code, like he probably did many times before by himself, trying to identify the issue, adding some more log statements. But this time, because I was there, while he was explaining me what he was trying to accomplish, I think he was also trying to predict some of my questions. And so, he tried some other things than before and there it was, right in front of him!
It happens to me quite often to be very involved in doing something and to spend a lot of time circling in the same ideas, without being able to detach and try another angle. A lot of times I had an issue to solve and because I was not able to fix it straight away, I postponed it for the next day, when most of the times it would take me moments to find the right idea.
That's fine, but what do you do when you have a deadline?
Looking back, at my own similar situations, I think there are 2 actions to take to get closer to a solution:
* first, realize that you spend a lot of time going in circles * second, add some random factor to the process
Source: uphillwriting.orgAs always, in order to fix a problem, you have to realize that you have a problem. When you are very involved in what you're doing and on top of this there's the need to deliver, you'll probably waste a lot of time. The urge to find the solution, to check the box of the task, to make it through, to be a problem solver, is keeping you “there”.
I will not pretend I have a solution for this, it sounds more like something that can be solved by an increased level of self-awareness, the kind of thing that could be obtained through self-analysis and meditation (e.g. to know when you are angry, before you are angry and take a rational decision: to explode in a rage burst or just show a sorrow smile and move on). While I did read a few books related to this, I never had the determination to try it for a long time, to see if there are any results.
One more pragmatic approach would be to set a timer each time when you start a new task. Add an alarm for 2 or 3 hours later, or whatever you think it's enough for it and when the time runs out, force yourself to detach, add some random factor to it.
Source: photosinbox.comThe moment you got out of your own mind's captivity, the problem is almost solved. Now you have to bring in some random factor. Call someone to talk to, even the cleaning lady, or a pet if you have, it doesn't matter. Try to explain him/her/it the situation in an appropriate way, this will definitely give you at least a new angle to try.
Of course, the help of another specialist in the matter might help you even more, so if you have one available around, don't hesitate to approach him/her. In the end, what I think it matters is to make yourself think differently and the easiest way for me is to bring someone from outside my problem. It would be great to be able to just pull a switch in our brains and immediately change your point of view. People say that with deliberate practice you can achieve anything you want.
- My grandfather always tells me that when he has something hard to solve, he puts it to rest for a while and then the solution will come out of nowhere when he least expects it. ↩
- You don't start telling to the cleaning lady about pointers and call-by-reference, if you still want your desk cleaned :) ↩