Great questions are dumb questions in disguise: they have been refined.
I often tell programmers to formulate their questions to get yes or no answers. The first iteration of programming questions never make sense. They contain unnecessary elements, they contain frustration, they are designed to fail. That's exactly how they are supposed to come out.
The trick is to take the time to refine the question. Trim the fat, go straight to the point, state what your expectations and your result. A well written question answers itself.