My [earlier blog post](http://tinyurl.com/stack-hints) on how to write a good question is pretty long, and I suspect that even when I refer people to it, often they don't bother reading it. So here's a short list of questions to check after you've written a question (and to think about before you write the question):

1. Have you done some research before asking the question? 1
2. Have you explained what you've already tried to solve your problem?
3. Have you specified which language and platform you're using, including version number where relevant?
4. If your question includes code, have you written it as a short but complete program? 2
5. If your question includes code, have you checked that it's correctly formatted? 3
6. If your code doesn't compile, have you included the exact compiler error?
7. If your question doesn't include code, are you sure it shouldn't?
8. If your program throws an exception, have you included the exception, with both the message and the stack trace?
9. If your program produces different results to what you expected, have you stated what you expected, why you expected it, and the actual results?
10. If your question is related to anything locale-specific (languages, time zones) have you stated the relevant information about your system (e.g. your current time zone)?
11. Have you checked that your question looks reasonable in terms of formatting?
12. Have you checked the spelling and grammar to the best of your ability? 4
13. Have you read the whole question to yourself carefully, to make sure it makes sense and contains enough information for someone coming to it without any of the context that you already know?

If the answer to any of these questions is "no" you should take the time to fix up your question before posting, by going through this list. I realize this may seem like a lot of effort, but it will help you to get a useful answer as quickly as possible; and you might even solve your problem yourself in the process! 5

Don't forget that you're basically asking other people to help you out of the goodness of their heart - it's up to you to do all you can to make that as simple as possible.

---

1 If you went from "something's not working" to "asking a question" in less than 10 minutes, you probably haven't done enough research. This should include things like normal web searches (e.g. for an error message you're receiving), checking the documentation, debugging (particularly for exceptions) and searching on Stack Overflow itself for similar questions.

2 Ideally anyone answering the question should be able to copy your code, paste it into a text editor, compile it, run it, and observe the problem. Console applications are good for this - unless your question is directly about a user interface aspect, prefer to write a short console app. Remove anything not directly related to your question, but keep it complete enough to run.

3 Try to avoid code which makes users scroll horizontally. You may well need to change how you split lines from how you have it in your IDE. Take the time to make it as clear as possible for those trying to help you.

4 I realize that English isn't the first language for many Stack Overflow users. We're not looking for perfection - just some effort. If you know your English isn't good, see if a colleague or friend can help you with your question before you post it.

5 This is a bit like [rubber duck debugging](http://en.wikipedia.org/wiki/Rubber_duck_debugging)