15
\$\begingroup\$

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:

  1. 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.
  2. People that ask about for explanations about a specific piece of obfuscated code they've seen.
  3. People that post their personal programming needs (usually for homework).
  4. 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 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 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:
    • - The submission with the fewest characters wins.
    • - The highest voted submission wins.
    • - Submissions interactively compete with one another towards a defined goal.
    • - 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

\$\endgroup\$
  • \$\begingroup\$ This is mostly about things we can do on our own and unrelated to the sandbox, from what I gather, so not at all addressed by Grace Note's answer I believe. \$\endgroup\$ – FireFly Aug 15 '14 at 7:28
  • \$\begingroup\$ Note that the only help center article that we can customize is /help/on-topic; we have no control over the others. \$\endgroup\$ – Doorknob Aug 15 '14 at 10:48
  • \$\begingroup\$ @Doorknob help and on-topic seem like places where this kind of thing would fit perfectly. \$\endgroup\$ – trichoplax Aug 15 '14 at 14:02
  • \$\begingroup\$ This is a really good start. I wish we could replace the official text. \$\endgroup\$ – AShelly Aug 28 '14 at 11:14
  • \$\begingroup\$ The paragraph about considering loopholes should mention that it is common to disallow the standard ones \$\endgroup\$ – AShelly Aug 28 '14 at 11:17
4
\$\begingroup\$

This is more a collection of comments, but too many to actually put them in comments.

I definitely think we need something like this, but we also need to make a link to such a site very prominent to new users.

A few details I want to address though:

Asking for golfing advice is not off-topic. I know a lot of people would like it to be, and I'm starting to have mixed feelings about it myself. But we voted on this so I'd prefer if people put their personal preferences aside and accepted the apparent community consensus. I guess it might help if we clearly outlined what these kinds of question have to be like, though. I usually picture them as micro-optimisation questions that don't solve a full problem but rather ask for the shortest possible way to golf down a component that crops up often in other problems (and this may well be language-specific).

Analysing obfuscated code can also be redirected to Stack Overflow. Not much to say about this... I think if the OP shows that he did his own research but can't puzzle out a few of the trickier details, this seems very on-topic for SO (and I've seen it there before).

We have an official list of challenge-type tags. Right here. I'd recommend pointing to it, because there are a lot more than you mentioned and at least seems as important as the others.

And finally, yes I think it could be made to sound slightly less daunting to new users. ;)

\$\endgroup\$
  • \$\begingroup\$ Thanks. I'd knew I'd forgotten some challenge types (though I didn't realize I had missed this many!). Still, the fact that exactly one of those should almost always be used is not told to new users. Like you say, it should all be more accessible. \$\endgroup\$ – Calvin's Hobbies Aug 15 '14 at 16:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .