When you ask a colleague for help, particularly in programming, you want him to know less about your project… so he will ask the stupid questions you sub-consciously avoided asking yourself because you thought you knew the answer, when in fact you didn’t.
I’ve thought about this many times while programming, and I’ve never seen it said so well. Sometimes, when some code of mine isn’t working, I’ll take a break and do something else and work on it later. Quite often, taking a new look at the code forces you to (inadvetently) ask yourself those stupid questions. I almost always find that I’ve made an assumption somewhere along the lines, and my thoughts were not consistent with the actual workings.