Luckily, in today's programming world, developers work within a large, diffused network of individuals ready to share their expertise and knowledge. Knowing how to tap into that network is a crucial skill for today's developer, but in order to do so, a question must be clear, concise, and complete.
Developers must ask questions where the problem is obvious to the reader. One successful strategy to accomplish this is to clearly state the expected output / results as well as the actual output / results. Phrasing a question in this way makes it clear what the actual problem is, where you think the problem lies (since you expected a certain output), and, most importantly, keeps others from expending their energy on trying to figure it out.
Concise questions are important for several reasons. First, concise questions are more likely to illicit a response from others. Concise questions are also likely to state the problem clearly - there is little space for the problem to 'hide' in. Finally, there is likely a high correlation between a concise question and someone that knows what their problem is as opposed to someone who simply is looking for a solution w/o understanding the problem.
Request for help from the broader community, of course, must be complete. This completeness ensures that as little time as possible is wasted trying re-hashing solutions that have already been explored and found lacking. Of course, the need for complete questions must be balanced with the need for concise questions. Judgment is necessary to make sure that the right balance is found.
Asking clear, concise, and complete questions will ensure that those of us who participate in this community do so with respect for each other's time.