To learn more about the secrets of success in the world of elite programming competitions, Svetlana Dotsenko spoke with Kamran Elahian, a serial entrepreneur and founder at Global Catalyst Partners, a venture capital firm based in Palo Alto; and Michael Levin, Chief Data Scientist at Yandex Data Factory, Russia’s dominant search engine, and silver and bronze medalist of previous ACM ICPC conferences. According to them, the secret of success lies not only in practicing a large volume of computer science problems, but also in learning emotional intelligence, connecting programming problems with the real world, and bringing people together.
This is an excerpt from the interview culled from forbes.com
1. Think of new ways to solve problems
According to Kamran Elahian, there are generally two aspects to solving any problem, particularly in the realm of computer science: 1) learning algorithmic thinking, and 2) learning to recognize the patterns and connect the dots. Both of these are dependent on the volume of problems that students are trying to solve; therefore, the first element of the program is learning the standard methods for solving problems and practicing incessantly.
On the other hand, according to Kamran, it is much more valuable to invent new approaches for cracking the computer science problems, rather knowing how to apply the existing tricks. The competition is not robotic; ultimately, it is not enough to just mechanically memorize various solutions and apply them in the right places. To win, participants need creativity, and inventing new ways requires taking a step back from your computer.
2. Learn teamwork and emotional intelligence
Michael Levin, formerly a silver and bronze winner at ACM ICPC competitions, emphasizes the importance of teamwork in computer science. At the event, most successful teams divide responsibilities: they might have a special person on the team who is the main mathematician and is in charge of solving the problems, whereas other teammate then translate mathematics into code. Some teams prescribe roles for people with certain specializations, such as numbers theory, geometry, or coding.
Once the team roles are assigned, team needs to develop the emotional intelligence and work together. Kamran emphasized the emotional intelligence as the single most important, but often overlooked, skill for a programmer. While it helps at the computer science competitions, emotional intelligence matters even more in the real world: entrepreneurs, for example, must understand the customer, place themselves in their place and solve the problems that truly matter – which is hard.
3. Start with hard math, move to applications
Michael Levin is personally tightly connected with the Olympiad programming community In the beginning of his career, he started competitive programming as a student at Moscow State University, where he found a deep and profound education in mathematics, but virtually nothing in the way of instruction in computer science. The only way to learn computer science, for him, was to participate in ICM events, which he now considers “a real life school.”
In the future, to make competitive programming more applicable to the real world, Michael is hoping that the ICM community would move towards the areas of machine learning and various other applications. The ICM community is 40 years old, and it has started to specialize and create problems of its own a long time ago; in Michael’s opinion, the community should try to return to real life applications in order to multiply the practicality of the competitions.
4. Build industry partnerships
To fulfill the task of connecting the ICM community to the real world, universities and prominent technology companies are already moving to incorporate competitive programming into their curricula. For example, Michael is affiliated with Higher School of Economics in Moscow, which has created a computer science in partnership with Yandex, Russia’s dominant search engine. Michael and his team are working on creating a new international competition, which would combine competitive programming and machine learning.
In terms of industry partnerships, the event has been supported by the industry partners such as Codeforces, Kaspersky Lab, One Rag Time, and organizers hope that the industry will continue to support younger programmers at competitions, by providing problems and coaching to advance their skills.
5. Bring international people together to solve international problems
Ultimately, the organizers believe the event has the potential to connect the world. To attend the bootcamp in Barcelona, participants came from 25 different universities in 20 countries all over the world, stretching the geography of the competition from the US to Japan.
“By bringing people together, we can overcome a lot of political issues, in the light of Brexit and Donald Trump. Whoever is trying to create hatred, fear of foreigners, immigrants – these kinds of gatherings, you bring everybody together,” says Kamran. This year, many teams had problems with travel or envisioned trouble in the light of recent changes in US immigration policy. The hope is that high tech companies and entrepreneurial communities will show the spirit of cooperation, and unite people from many different countries that might be in conflict with each other through their love of coding.
Svetlana Dotsenko is a founder of Project Lever, educational software that helps connect professors and students at universities worldwide.