Asking good, high quality challenges is a key aspect of the site. Some users almost exclusively post challenges, and some prefer instead to only answer. However, asking is very different on this site than most forums or Stack Exchange sites.
How do I post a challenge?
It's very easy to post a challenge. Simply click the Ask Question button, choose a title, write a specification and choose up to 5 relevant tags. However, writing a high quality challenge takes practice, and a lot of it. We require challenges to meet various different criteria, and hitting all of them at once, especially if you are unpractised, can be difficult.
We highly recommend using the Sandbox before posting a challenge on main. We also suggest answering before asking, as this will allow you to get a better understanding of what a challenge needs to look like, and how well specified one should be.
Furthermore, we have a number of posts designed to help challenge authors:
Finally, please post a challenge only when you're able to stay around for an hour to address immediate feedback.
How do I format my challenge?
The Stack Exchange network uses a form of Markdown. This includes support for headers, links, images, bold text, italic text, underlined text, lists and more. Additionally, we support a form of \$\LaTeX\$ called Mathjax to properly show mathematical equations. For inline Mathjax, use
\$ delimiters (for example:
\$3x^2+2x+1\$ is \$3x^2+2x+1\$). For blocks of Mathjax, use
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
is shown as
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
Check out the MathJax basic tutorial and quick reference for more help.
What criteria do challenges need to meet?
- Have an objective scoring criteria, such as code golf or fastest code
- Be clearly specified. As is the case with all questions on the Stack Exchange network, your challenge must be in English and clearly written. In order to make sure your challenge is clear, we recommend using the Sandbox
- Be unique. Unlike a large number of sites on the internet, we strictly forbid reposts and copies of other people's work. However, we currently have well over 10000 questions, and it is unfeasible to expect you to check every single one. What we do expect is that you make a brief and honest search for anything similar, and that you don't explicitly copy an existing challenge. Furthermore, posting in the Sandbox is a good way to avoid posting duplicate challenges to main.
- Be on topic. We do not allow general programming help questions. Those belong on Stack Overflow, not here. Before posting your question, make sure it is on topic. If you aren't sure, feel free to ask in chat or post a draft to the Sandbox asking if it is.
What are the possible scoring criteria?
All challenges must have an objective scoring criteria. A full list can be found here, but the most popular are:
- code-golf: An answer's score is the length of the code in bytes
- fastest-code: The winner is the fastest code. These challenges typically involve timing submissions on the author's computer, so should include your computer specifications
- code-challenge: Scores are calculated in any other objective manner than existing criteria
By the simplistic nature of its scoring criteria, code-golf is the easiest challenge type to write. Furthermore, non-code golf challenges can be very easy to underspecify or can have a scoring criteria which does not encourage competition. We suggest that, before writing a challenge with a specific winning criteria, you answer an existing challenge with the same criteria, in order to get a hang of the nuances of the scoring.
What is this Sandbox you keep mentioning?
The Sandbox for Proposed Challenges is a place where you can post your challenge drafts in order to get feedback on them before posting to main. Going through the Sandbox first allows you to fix unclear details, avoid downvotes and close votes, and prevent answerers from exploiting loopholes in your challenge, thus ruining the fun for you. While a draft is here, people will offer advice and feedback on how to improve it. See How does the Sandbox work? How do I use it? and Sandbox instructions for new users for more information
We also encourage you to do the same: if you have a few minutes of free time to spend, consider looking at some recently active drafts and leave some feedback. Furthermore, we have a userscript designed to improve the feedback process. While a draft is in the Sandbox, voting customs change slightly:
- Upvoting signifies that you believe the challenge is ready and will be well received on main
- Downvoting suggests you believe that, even if fully clarified, the challenge is unlikely to do well on main
How long should I leave a draft in the Sandbox?
A week is the most recommended time. For more complex challenges, longer is better and for more basic challenges, you can get away with a few days.
There is no hard or fast limit though. We do have a number of recommended points to check off before posting, however:
- It's generally recommended to wait a minimum of 72 hours in order to allow enough people to see your draft.
- If a draft has a score of +3 or more, it's likely to be well received
- If you've gone 2 days without any further feedback from commenters, it's likely to be clear enough to be posted. This assumes you've been regularly asking for feedback.
- Don't assume you've addressed all Sandbox feedback however. Posting a draft into the Sandbox is not a guarantee of quality, and it requires participation from other users to work as intended. Properly read through your draft, imagine you were trying to answer it and repeatedly ask for feedback. Don't worry about annoying people; so long as you don't ask exceedingly often, people will be more than happy to leave even a small amount of feedback.
How do I get feedback on my Sandbox posts?
Ask in chat (an example of such an ask). Make sure you link to your post, and to specifically ask for feedback. Some people will respond in chat, rather than leave a comment. Be sure not to forget about this feedback, which is easier to lose track of than comments.
The Nineteenth Byte has a chat bot that posts recently Sandboxed drafts into chat. When you first post your draft, you don't need to post a link into chat, as the bot will do this for you.
I've posted my challenge. Now what?
Now you wait for the upvotes and answers. Some users may request additional clarifications in the comments. So long as you answer these promptly and don't contradict the main post, this won't be an issue. Be sure to edit in any clarifications or rule changes you make into the main post after leaving a comment. Please do not significantly change your challenge after posting it as this can invalidate people's answers.
We also recommend against accepting an answer, in order to fairly and properly promote competition within languages, rather than between languages.
I posted my challenge in the Sandbox but it got closed on Main!
Sometimes, however, people will find things that were missed in the Sandbox that make the challenge unclear. The Sandbox is not a perfect system. If this happens, your challenge may be closed as "Needs details or clarity". Don't worry. Closing challenges is designed to be a temporary measure, and every closed challenge can be reopened in the same manner.
In order to get your challenge reopened, take a look through the comments underneath it. People will have commented exactly what they found unclear with the challenge, and addressing these points is the quickest way to reopen it. Additionally, if you are able to, asking what could be improved in chat allows people to have more of a discussion than in comments. You are able to ask the specific users who voted to close your challenge by "pinging" them either in comments or chat (
@username), but keep in mind that they are under no obligation to answer you.
Editing a closed challenge automatically sends it to the Reopen votes review queue where users will review your updated challenge and decide whether or not it is clear enough to be reopened.
For more questions about asking, check out the "How to Ask" help pages or browse the asking-questions tag on Meta.