Peter Norvig (Director of Research at Google) admits that winning in programming competitions is a negative factor for performing well on the job for developers at Google. But it boosts their chances of being hired. So, should you take into account programming competitions when hiring programmers? Let’s try to answer this question using examples.
We should start off by saying that competitive programming has its supporters and detractors.
Here are some of the most frequently mentioned cons of competitive programming:
But there’s no doubt that programming competitions also have quite a few advantages, and here are some of them:
Depending on how long they last, programming competitions can be divided into short-term and long-term contests. The former usually last several hours. Such events are sometimes spread over several days, but on each competition day the contestants must complete a specific number of tasks in a fixed amount of time. The latter may last several days, up to two weeks or so. Competitions that last several months are rare.
In this article, we’d like to focus above all not on how long programming competitions last, but on their goals and on who they’re intended for. We trust this division will help you to better understand their essence and the benefits that they may bring.
(1)* International Collegiate Programming Contest (ICPC) – a contest held since 1977. It operates under the auspices of the ICPC Foundation, headquartered at Baylor University, Texas (in the United States). The ICPC operates regional contests (covering for example the region of Central Europe) and the World Finals, hosted by a different university every year.
The contest is open to teams of three. All three members of each team must be affiliated with the same university, and all participants must be students within their first five academic years. The students who have already participated in two final rounds are not eligible to compete again. The teams are tasked with solving 8–13 programming problems and submitting as many correct solutions as possible. The team that solves the most problems wins. In the case of a tie, the time needed for the submissions is additionally taken into account. In the final round, the teams finishing in positions 1–4 are awarded Gold Medals, the teams finishing in positions 5–8 receive Silver Medals, and the ones finishing 9th through 12th are awarded Bronze Medals. Additional Bronze Medals may be awarded to lower-ranking teams.
Polish higher education institutions (the University of Warsaw, the University of Wrocław, and the Jagiellonian University) have won a total of six Gold Medals, eight Silver Medals, and seven Brown Medals (the data after the 2019 finals). In addition, the University of Warsaw ranked first in the World Finals twice (the team composed of Tomasz Czajka, Andrzej Gąsienica-Samek, and Krzysztof Onak in 2003 and the team composed of Marek Cygan, Marcin Pilipczuk, and Filip Wolski in 2007).
Good teamwork is crucial during this contest (each team of three may use only one computer), which may prove a very important factor taken into account during recruitment.
*The 9 competitions mentioned in the title are numbered 1–9 in the article.
(2) International Olympiad in Informatics (IOI) – the world’s second largest science Olympiad (after the mathematical Olympiad) for secondary school students. It is one of the world’s most prestigious programming contests, and its patrons include such institutions as UNESCO.
Each participating country fields a team of four. Its members are selected through national competitions. In Poland, this is the Polish Olympiad in Informatics. The finals are held in a single city. The event lasts two days. On each day, the teams are given three algorithmic programming problems that must be solved in 5 hours. Each contestant works alone, and their scores are later summed up and affect each country’s general ranking. Contestants are awarded medals regardless of the scores of other team members. Medals are given to the top 50% of the contestants in the proportion of 1:2:3:6 (gold:silver:brown:no medal), which means that the top 1/12 of the contestants receive Gold Medals.
Poland ranks fifth in the All Time Medal Table (the data after the finals in 2019) with 40 Gold Medals, 41 Silver Medals, and 31 Bronze Medals. The list of the top performers includes 6 Poles (Filip Wolski – four Gold Medals; Andrzej Gąsienica-Samek – three Gold Medals, one Silver Medal; Marcin Andrychowicz – three Gold Medals; Jarosław Kwiecień – three Gold Medals; Piotr Zieliński – two Gold Medals, one Silver Medal; Tomasz Czajka – two Gold Medals, one Silver Medal).
What are the benefits of taking part in this contest? First of all, the contestants are required not only to prove their programming skills but also to demonstrate the ability to think outside the box, because when you work with large amounts of data, you must know what you should “tell” the computer to obtain a correct solution. “The hard part isn’t the programming, but the mathematics underneath it,” Dr. Ben Burton, who designed Australia’s training program for the IOI, told Frank Robson, an editor with The Sydney Morning Herald who wrote an article about the 25th Olympiad, held in Australia in 2013.
Let’s leave the “innocent” yet prestigious and globally recognized competitions for secondary school and university students and move on to the world of business. Here, we will find contests held by such giants as Facebook and Google.
(3) Facebook Hacker Cup – a competition organized and sponsored by Facebook, Inc. First held in 2011, the Facebook Hacker Cup was initially aimed at selecting top engineers for potential employment at Mark Zuckerberg’s corporation. The competition currently consists of five rounds: the Qualification Round, Rounds 1, 2, and 3, and the Final Round. This year, all rounds are held online.
In each round, the contestants are given at least four algorithmic problems, which they must solve within a specified time limit (three days in the Qualification Round, 24 hours in Round 1, three hours in Rounds 2 and 3, and four hours in the Final Round). The top 200 competitors from Round 2 advance to Round 3, and the top 25 competitors from Round 3 advance to the Final Round. The winner of the 2020 competition will receive $20,000, and the remaining finalists will be awarded the following prizes:
The top performing contestants also include Polish programmers. Tomek Czajka ranked second twice, while Jakub Pachocki and Marcin Smulewicz ranked second and third respectively (each of them once).
The participants in the Facebook Hacker Cup may use any programming language to obtain their solutions, and they are free to solve the tasks how they want. The competition therefore offers the participants a great opportunity to showcase their skills and their ability to think outside the box.
(4) Google Code Jam – organized and sponsored by Google, LLC. Just like the Facebook Hacker Cup, Google’s Code Jam was initially a means to identify Google’s future programmers. The first competition was held in 2003 in Mountain View in the United States (where Google has its headquarters).
This competition also consists of several rounds, and the participants must solve as many algorithmic problems as possible in a fixed amount of time. All the rounds except the Finals are held online using a platform provided by Google (due to the pandemic, the Finals may be held online as well).
In 2021, the competition will be structured as follows: the Qualification Round (all those who will earn at least 30 points will advance to the next round); Round 1 (It is conducted in three sub-rounds on dates set by the organizer. The participants who fail to advance to the next round in the first sub-round may participate in the second or, in the worst-case scenario, in the third sub-round, but once they advance to Round 2, they may not participate in the remaining sub-rounds of Round 1. The top 1,500 contestants from each sub-round will advance to Round 2.); Round 2 (the top 1,000 participants advance to Round 3); Round 3 (the top 25 contestants advance to the Finals); and the Final Round (it is usually held on-site, and the participants must use Google-provided equipment, but may choose their own keyboard).
Gennady Korotkevich from Belarus is undoubtedly the best performing Google Code Jam participant. He has won every Code Jam competition since 2014. The Code Jam winners also include Polish participants: Marek Cygan (2005) and Jakub Pachocki (2012). Kamil Dębowski ranked second in 2018, and Jakub Pachocki was awarded the third place in 2011. Except for the Qualification Round (27 hours) and the Finals (four hours), the participants have only 2.5 hours to solve the problems in each round. The money prizes in the 2021 Code Jam competition will be as follows:
The participants may use any of the programming languages listed on the Code Jam website to solve the problems. Google Code Jam teaches programmers to work under time constraints and to approach their tasks in the right order – in the Final Round, hardly anyone can solve all the problems correctly within the specified time limit.
The competitive programming community has created numerous platforms (here, we describe just three, namely HackerRank, IEEE, and CodeChef). Their purpose is not so much to encourage rivalry as to support the members of the community in solving different algorithmic programming problems. Here are the descriptions of some of these communities:
HackerRank is platform that focuses on the growing gamification trend in programming. It offers solutions both for individual customers (developers) and for corporate clients. Developers can sign up and use the platform free of charge. HackerRank offers a large and diversified database of various problems/algorithmic programming puzzles and holds CodeSprints – programming competitions in which coding tasks must be completed in a fixed amount of time.
Just like in games, the platform users earn points and badges (ranks) for their accomplishments and are ranked globally on the leaderboard. The solutions are rated based on their accuracy and correctness.
The platform also offers paid solutions for companies called HackerRank for Work. Employers may upload tasks to be solved by candidates during the recruitment process. This useful feature has been used by such brands as Amazon, Facebook, Yahoo!, and EA Sports. Once a developer completes the task, the result is sent automatically to the IT recruiter, who can use this element of the recruitment process to conduct further interviews with the candidate.
(5) IEEEXtreme – an annual hackathon (a type of competition) held by the Institute of Electrical and Electronics Engineers (IEEE).
Participants must be university students or graduate students and be IEEE members. Participation is free of charge, but IEEE membership is paid (the fees vary depending on the country).
During the challenge, teams of up to three participants compete against one another within a 24-hour span to solve as many programming problems prepared by the organizer. Points are awarded based on how the problem was solved, the time needed to complete the task, and its level of difficulty. All proctors must be IEEE members of higher membership grade, and the same holds true for those who evaluate the submissions. When solving the problems, the participants may not consult anyone outside their team. The competition is held online, and the solutions are submitted via an external platform (interestingly, the Institute has recently used the HackerRank platform).
CodeChef is a community started in 2009 by the Indian company called Directi, currently an affiliate of Unacademy. It was initially launched to provide educational support to programmers by holding various contests in the spirit of friendly competition and community support. CodeChef is well-known for supporting schools and universities.
There are plenty of such initiatives, but we would like to mention one, namely the Go for Gold program, which was launched in 2010 and continues to operate until now. It was designed to help Indian teams to achieve top scores in the prestigious ICPC competition (described at the beginning of this article). In addition, Code Chef, just like HackerRank, uses its platform to hold various programming contests, but it also provides access to its platform to companies (for example for recruitment purposes) as well as to schools and universities (for such purposes as the organization of contests).
Finally, it is worth saying a few words about 2 flagship Code Chef initiatives:
As you can see, not every pro and con listed at the beginning of this article is relevant for all types and examples of programming competitions. Most of them are certain to create added value for job applicants. During a job interview, you should find out if the candidate you’re talking to has participated in such contests. Many of them are held online, and the programmers who engage in competitive programming are often eager to develop their skills and try their hand at new challenges (which speaks well for such candidates).However, you should not forget to check what competition it was and how the programmer has benefited from it (the best idea is to let candidates answer this question in their own words). I hope you’ll find the information presented above helpful and you’ll return to this text again more than once ?