This question is somewhat in response to The one limiting stat for us still being in beta where the consensus seemed to be that question quality was the main issue. I definitely agree.
I believe that the biggest culprits for badly asked questions are:
- People that ask generic programming questions, usually better suited for Stack Overflow.
- These are not intrinsically bad and are usually migrated, but it would be better if they didn't clutter up our home page.
- People that ask about for explanations about a specific piece of obfuscated code they've seen.
- People that post their personal programming needs (usually for homework).
- People that attempt to post on-topic questions but fail because their question...
- has ambiguous tagging or an unclear spec (too broad, too specific, or just badly written)
- doesn't have an objective scoring criteria
- is badly formatted
- is a duplicate
In nearly all cases these questions come from new users. Group 4 is biggest and most desirable demographic, but since we are so eager to close questions I expect many of the users are scared away.
I believe the major problem with bad questions lies in the fact that there is no accessible guide for how to write a good question.
There is of course the help center, but most of the information here is just about the Stack Exchange model, much of which (like how to answer) is not optimized for PPCG since it is not a trivia/discussion site like most SE's. But that's a broader issue than I want to approach here.
My main concern is with the first two help center questions:
https://codegolf.stackexchange.com/help/on-topic
https://codegolf.stackexchange.com/help/dont-ask
Reading them it is not at all clear what defines a proper PPCG question. The common stumbling blocks above are barely mentioned.
(I know there is also the tour page but unless it can be vastly reformatted it is just a cute nothing about the SE model, not PPCG. I also know there's a question template meta-post but unless directed, new users will never find it.)
If possible, I would suggest having one single short page that explains the most common types of questions that are asked and precisely how to ask them, and what not to ask. Ideally this page would be linked from the Ask Question page as How to ask a good question. I don't know how much of the SE boilerplate formatting we can change but I do know what I would write for such a page:
How to ask a good question
Programming Puzzles & Code Golf (PPCG) is not like most other Stack Exchange sites. Questions here are not about programming trivia, or advice, or discussion based issues. Questions are programming challenges that users compete in, with definite winners and losers. (The primary exception are tips questions, which are generally uncommon.)
What NOT to do in a good question:
- Do not post general programming questions. That's what Stack Overflow is for.
- Do not post questions asking how some specific piece of obfuscated code works. We are not here to analyze code.
- Do not post schoolwork or personal coding problems. We are not here to do your homework or help build your app.
- Do not post challenges restricted to one programming language without very good reason. (Not knowing Golfscript is not a good reason to exclude it. Writing a king-of-the-hill framework in C++ is a good reason to only allow C++ submissions.)
- Do not post duplicate or near-duplicate questions. If your challenge involves something that already exists in the world of programming or math, chances are it has already been asked.
What TO DO in a good question:
- Always have an objective scoring criterion.
- Almost always tag it with exactly one of the following:
- code-golf - The submission with the fewest characters wins.
- popularity-contest - The highest voted submission wins.
- king-of-the-hill - Submissions interactively compete with one another towards a defined goal.
- code-challenge - Challenges that don't fit into the categories above and have custom scoring criteria.
- Explain the challenge in well-written, well-formatted, plain English. Do not assume anyone is knowledgeable in the topics involved beforehand. Give explanations, not links to explanations.
- Give explicit rules that define what makes an answer valid or not. Be sure to consider corner cases and trivial answers and loopholes. Be sure to specify how input and output are handled. Giving examples and test cases is highly encouraged.
- Make sure your question has enough constraints to keep it interesting and nontrivial. Consider how you would write a solution and convince yourself that the problem has genuine difficulty.
- Be responsive to the suggestions and concerns about your question from other users. If you are uncertain that your question will be well received, ask it in the sandbox first.
- Most importantly, try to think of programming challenges that are new and fun. People like simple, novel ideas that they haven't seen before. A closed question with the seed of a novel idea can almost always be reopened.
What do you all think? It's not a foolproof method for better questions (and it could be written friendlier) but it seems like the obvious thing to have on a site like this. Feel free to suggest edits.
A similar but probably less crucial How to answer page would also be helpful.
Thanks for letting me rant (in my way). I'm still trying not to be here :P