1. Define your purpose
The first thing to keep in mind when planning competitions is “why?” Why do you want to run a competition? Is it to increase your company’s publicity? Is it to raise awareness of a social issue? Or to increase your potential pool of hires? The answer to “why?” will influence everything else.2. Form your team
For a competition to be successful, you need a well-organized team. When we start planning a competition at Lucid, usually one person volunteers to be the competition organizer. Their job is to coordinate efforts to make the competition a success. First, the organizer needs to assemble a team. They recruit others to help write problems and run the competition. At Lucid, posting a message in the #dev channel on Slack has been most effective. This call for help instantly leads to a team of interested people who can meet to go over logistics. Sometimes one person sets up the venue, while another person runs the coding part of the competition on HackerRank. Your team can generate, write, and proofread ideas for problems. With various team members running different parts of the competition, one person isn’t left doing all the work.3. Determine the location
Since the office parking lot probably doesn’t have tables, power, and a good Internet connection, it’s important to find a place that will work for your competition. This could be a school, university, company, or any place with a large gathering room with good Internet access and enough charging outlets. Of course, you could eliminate the venue altogether by having the competition be entirely online and letting people program wherever they want, but having everyone together in one location can add to the energy and excitement. Consider whether you want to use a computer lab or if people should bring their own laptops. Make sure there is space for everyone… and pizza.
4. Set rules
The rules are extremely important, both for creating problems and running the competition. Make sure the contestants know exactly what is and isn’t allowed. Here are some things to consider:- Is it an individual competition, or can people work in teams?
- How many computers can each team use?
- What online resources are allowed, if any? Language documentation? Everything?
- How are problems scored? Are there points for partial solutions that pass some test cases, or is it all or nothing? Are problems timed? Do wrong submissions add to participants’ final time?
5. Write the problems
When designing the competition problems, think about the target audience. Is the competition aimed at middle schoolers who just took a summer programming course, or is it geared towards professional programmers with years of experience? In either case, problems should be written to the participants’ level but cover a wide range of difficulty within that level. Whatever the group is, it may be good to have a problem or two everyone can solve, as well as problems tailored for more advanced participants.
