Five Success Secrets From The World’s Top Programmers

“We are Stanford for data science in Europe.”

This is how Svetlana Velikanova, investment banker and now a university founder, describes her new initiative, a European university called Harbour.Space – a brave new university focusing exclusively on data science in Barcelona, Spain. Even though Harbour.Space only opened its doors in September 2016, it is already making bold steps towards educating high-tech professionals in Europe. All courses at Harbour.Space are modular: faculty at Harbour.Space are industry leaders that give modular courses in their area of expertise, instead of staying on for the whole year. At the conclusion of the program students get abundant practical experience and earn placements into highly coveted internships in data science all over the world.

In February 2017, the Harbour.Space university hosted a training session for ACM International Collegiate Programming Contest (ACM-ICPC), one of the most prestigious programming championships in the world. Supported by IBM, the ACM-ICPC is the “Olympics of programming,” the premiere global computer programming competition conducted by and for the world’s top universities. In 2016, 40,266 contestants from 2,736 universities in 102 countries competed at over 481 sites to advance to the World Finals, which will take place in Rapid City, South Dakota on May 20.

To learn more about the secrets of success in the world of elite programming competitions, I 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.

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.

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.

Credit: Harbour.Space
The Harbour.Space campus.

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.

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.

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.

To conclude, I asked two student participants from Indian Institute of Technology in Kanpur about their experiences. “Wow – there is a lot of pressure here! We aren’t used to be in settings with such strong competitors.” This is the second year of participation for the Indian team,” said Atanu Chakraborty.

“Overall, the finals went fantastic – with just one glitch,” added Sahil Grover, the teammate. “Vegetarian food is hard to come by in Barcelona.”

Let us hope that next year, the event will continue to encourage international programmers to work with each other and promote international friendship – over quality vegetarian Indian food in Barcelona’s harbor.

Leave a Reply

Your email address will not be published. Required fields are marked *