Sports programming. Programming Olympiads - do they help in real work? About tasks and their preparation

💖 Like it? Share the link with your friends

This is already a very old holivar: are sports programmers suitable for harsh applied development, or are they some kind of beautiful white birds hovering in mathematical-algorithmic clouds and dying in more mundane conditions? There is a common myth that all sports programmers go to Google, or at least Yandex, where they work with inspiration on search algorithms and others like them. Simple Belarusian outsourcing is not for them. Perhaps, if not a period, then at least a punctuation mark in this battle of opinions can put the facts. We collected information about all sports programmers in our country and, using three criteria:

  • participated in the ACM ICPC final;
  • spoke on behalf of the Belarusian University;
  • have already completed their studies at the university;

made a selection. The result was a list of twenty-one ACM ICPC finalists from Belarus. We were able to contact most of them and ask three simple questions:

  1. What is your current place of work and what is the position / essence of the work performed?
  2. Why this particular company/occupation?
  3. What are your plans for the future, how do you see it for yourself? Where would you like to move?

Which of them chose a managerial career, who remained faithful to sports programming, and who still develops search algorithms, you will learn from the "direct speech"Belarusian ACM ICPC finalists.

Ivan Mikhnevich (ACM ICPC 2000)

  1. Wargaming Public Company Limited, Director.
  2. This is the result of growth in the group of companies from the very beginning of his working career.
  3. Really, all this is already tired and it's time to start a new career, in a new place, in a new area (most likely, not IT).

Sergey Stepantsov (ACM ICPC 2000)

  1. I currently work as Vice President Business Development at Intetics Co.
  2. Most of my career is connected with this company, here I managed to try myself in a variety of roles: I started as a testing specialist, and also worked as a programmer, project manager, head of the production department. And eventually came to specialize in business development.
  3. I still don't feel old enough to stop self-development :). I think that the future of the business part of my life will still please with many exciting twists and turns.

Vladimir Tankovich (ACM ICPC 2000, 2003)

  1. Now at Microsoft I'm working on Computer Vision algorithms for Kinecta. Before that, it was in search relevance.
  2. In this company since 2005. They brought me from the Republic of Belarus, and so far there was no point in moving. I joined this team because it allows you to do scientific work that goes not into a collection of articles, but into a finished product.
  3. There are no specific plans for the future. In IT, money is not a problem both in Minsk and here. So far, I'm very interested in understanding Machine Learning and AI. It turns out that I do almost all the time what I want, and I also get paid well for it. That is, for the next 1-2 years I will do the same, and then we'll see. I get a lot of experience, and if I have an idea how to apply it reliably, I will try a startup.

Alexey Kirkovsky (ACM ICPC 2002, 2005)

  1. NT LLC "LuxSoft", software engineer of the 2nd category.
  2. I really wanted to go to the famous Moscow bodyshop LuxSoft, because since childhood I dreamed of automating hatches, but I didn’t notice one letter and ended up in the Belarusian LuxSoft. There, without looking, I signed some papers, and now I am working under a 20-year contract for a fixed salary in Belarusian rubles, which is enough only for gasoline.
  3. I plan to meet the standard for the number of lines per minute and become a software engineer of the 1st category. Then get a CCM in programming, which I will be assigned here if there is not a single delay for work for the entire duration of the contract.

Alexey Danchenko (ACM ICPC 2002, 2005)

  1. NT LLC "LuxSoft". Software engineer. IN Lately I am developing a domain-specific programming language for our product.
  2. The opportunity to work with friends on the implementation of an interesting idea.
  3. Continue to enjoy life.

Evgeny Gonchar (ACM ICPC 2003)

  1. Google Switzerland (Zurich), Senior Software Engineer. I work on one of the web search infrastructure projects.
  2. I have loved programming since childhood.
  3. I would like to advance in playing the electric guitar and go to New Zealand again.

Ivan Metelsky (ACM ICPC 2003, 2004)

  1. TopCoder, Inc., Marathon/Algorithm Problem Coordinator. Launch of Marathon and Algorithm Competitions on TopCoder.
  2. In a way, it just happened. More seriously - a good income, a relatively interesting job, it's hard to find a better alternative.
  3. Plans for the future - it doesn't really matter where, but somewhere in the direction of somewhat less employment and greater freedom of action. Perhaps some kind of business, not necessarily in IT.

Victoria Lebed (ACM ICPC 2004)

  1. I was and still am a mathematician. She was the only person in the team who did not touch the computer :) She did all the "side" work. I live and work in Paris. Now I have a temporary position at the University of Paris 7 - scientific activity and teaching. Recently received PhD.
  2. This is an occupation because it provides a rare opportunity to preserve personal and creative freedom.
  3. I try not to make any plans for the future. Again, not to limit yourself to anythen the framework and not expose yourself personally under the burden of expectations, hopes and other things. I'm fineI imagine the continuation of the started path in the university-scientific environment, but I do not close the door for other options.

Maxim Osipov (ACM ICPC 2004)

  1. VironIT, director. Business management (mainly not operational, but aimed at changing the processes of sales, development, quality of work, etc.)
  2. VironIT company, because this is my company, I am the owner. This is an occupation (non-operational management), because figuring out how to develop a business is the most interesting thing for me.
  3. Develop your company, switch, among other things, to a product model, start a family, children. I see the future as interesting, challenging, but definitely positive.

Pavel Irzhavsky (ACM ICPC 2007, 2008)

  1. Lecturer at Belarusian State University, mathematician-programmer at Orientsoft, teacher at ShAD, postgraduate student (formally, this is a study, but in fact it is closer to work).
  2. Each lesson has both interesting and useful (besides the fact that they all bring income :)), and simple, allowing me to relax a bit, and complex, allowing me to develop. It seems to me that I become generally less efficient when I start doing the same thing, roughly speaking, for 8 hours a day, and the daily change of activity allows me to be at my peak.
  3. There are no significant changes in plans for the future :)

Vladimir Kerus (ACM ICPC 2007, 2008)

  1. EPAM. Lead Software Engineer in the Mobile Development Department. I am developing applications for Android.
  2. I like to learn new things, and in the current company it turns out to painlessly change the profile and find the right people-teachers.
  3. I have already planted a tree, I am saving up to build a house, I plan to have kids (ideally, my own Barcelona team).

Sergey Tikhon (ACM ICPC 2009)

  1. EPAM Systems, Lead Software Engineer. Architect/developer of special projects.
  2. Friendly, strong team, interesting tasks, good opportunities for professional growth.
  3. Work in IT, but on the border with science, work on the implementation of Data Science in real applications and services (machine learning, natural language processing, search technologies, modeling). Propaganda, distribution and implementation of functional programming (I blog on F#).

Alexey Lobanov (ACM ICPC 2010)

  1. Yandex company, developer at Yandex.Maps. At the same time, I am a postgraduate student at the Belarusian State University and work as an assistant at the DMA Department of the FPMI (I conduct practical classes on the course "Algorithms and Data Structures").
  2. Why Yandex: there are interesting tasks here (including complex, knowledge-intensive, algorithmic ones), comfortable working conditions and an excellent team. Why FPMI BSU: I think it is important to pass on your knowledge to the next generations of students.
  3. Plans for the future: successfully complete my PhD studies and try to defend my Ph.D.

Alexey Tolstikov (ACM ICPC 2010)

  1. Belarusian State University, assistant of the Department of Computational Mathematics, completed postgraduate studies, course teaching« Parallel and distributed computing» (practice). Yandex,curator of academic programs, head of the Minsk branch of the School of Data Analysis (+ teacher in it), search developer.
  2. I won’t be able to in one sentence, but because: “I like it!”
  3. Nothing much to say. I am moving in all these directions.
“We will not go to Facebook and Google”: Why some of the best programmers in the world live and work in Yekaterinburg

An interesting interview with the winners of the World Championship in programming from the Ural Federal University.

It has always been interesting for me to understand why programming competitions are so popular in Russia (more precisely, in the post-Soviet space in general) (probably the term used in this article fits better: "sports programming"), despite the fact that in the decaying West I am talking about them for a long time I didn’t even know, and when I knew, for some reason it didn’t pull at all. It's like a completely separate world. For many years I have been actively participating in various programming online communities, for example, hanging out on the mailing lists of various open source projects, meeting people in real life sometimes, but never talking about TopCoder, say. The fact that TopCoder exists, I learned from the Russian LiveJournal, in my opinion (and after learning about it, I immediately and urgently did not go there, did not create an account and did not participate.) It is somehow very funny and interesting to understand why.

Part of this popularity is explained by some remarks of this interview, in my opinion:

"And why did UrFU show the best result this time? Did the stars align?"

Mikhail Rubinchik: Our team is stellar. Oleg, Lesha and all the rest are very strong guys. Oleg is now in his sixth year, he started studying in the second, but by the third he had a decent level.[...]

"What do you prefer? A startup? Or a big company?"

Oleg Merkuriev: I didn't work anywhere at all. And I'm not going to work anywhere for the next six months. I’m going to graduate school, I need to do a little science, otherwise I generally spent all my time on sports programming.

Those. it really is perceived as a sport in the first place. Including some wild restrictions that are typical for sports competitions:

"Let's talk a little about the championship itself. Three people on the team. One computer. Why one? Why not three?"

Mikhail Rubinchik: The jury once decided so. This was thirty years ago.

Oleg Merkuriev: Then, perhaps, there were additional reasons that do not exist now. And then even a computer per team - it was a lot, but per person absolutely.

[...] You can use a printer at the World Cup. The first person sat down, wrote some solution, it did not work. He needs to find a mistake. Reading from a computer is expensive, but we have only one resource. Therefore, they print it out on a printer and read it on a piece of paper.

Well, I don't understand how it can be so attractive. Programming is a creative activity. There was no program, and here it is. You couldn't do anything with a computer, and now you can. What difference does it make if it took 20 minutes or 40? It's just some uninteresting aspect.

No, I can imagine the limitations that sports excitement brings - but at the level of several days and really difficult, interesting tasks. Like a Ludum Dare competition - write a game in two days. Or The ICFP Programming Contest, they give three days, and the conditions are usually mind-blowing. Contrast this with the World Championship Challenges in Sports Programming. If you compete for minutes and seconds (also with one computer for three), then tasks come out like this - a cunning application of several standard algorithms with some tricky "zest".

All in all, it's a weird world. Do not blame me, those who are dragged from him. But I did not understand and do not understand.

They say that when he was born, Donald Knuth himself looked at him. They say that when he was invited to work at Google, he rewrote the entire search algorithm 16 times in 15 minutes. They say that he follows the progress of quantum computing with a smile, because at the sight of his numbers, out of fear, they factorize themselves. But we know one thing for sure: Peter is a real god of sports programming.

Data

  • Winner of numerous championships, Piotr won the TopCoder twice and took second place in the ACM ICPC twice.
  • In his free time, Petr maintains a blog about regular contests called Algorithmic Problems for Dummies: petr-mitrichev.blogspot.ru.
  • Mitrichev now works at Google, where he focuses on search quality. Peter also helps in the preparation of the Google Code Jam competition.

Many people think that sports programmers are tough guys, real geeks who understand algorithms and solve complex problems. But they also say that it is very difficult for them to apply themselves somewhere later. This is true?

Sports programming and in general what we do at the olympiads is really not the kind of thing that you can make a living. On the other hand, programming, like any other sport, is development for a person. Thanks to him, a person becomes smarter, better at programming, better looking for errors in programs. After such preparation, it is easier to work and do other interesting things.

Algorithms are definitely applicable in the practice of a programmer, although at work I have also encountered algorithms that are more complicated than those that are in Olympiads. But at the Olympiads, we are limited by algorithms that, roughly speaking, can be written in half an hour or an hour. Therefore, quite specific, limited set of algorithms is used there in tasks. In real life, everything is just more... vast.

In what language did you write solutions for problems?

On Java. At school, I wrote in Pascal, because then I didn’t know anything else. And then, when it was necessary to choose what to switch to, Java turned out to be closer to Pascal.

In a competitive environment, you need to write a program in 20-30 minutes, and it should immediately work correctly. Therefore, it is very important that the language does not allow planting bugs. C++, which is used by most, has the distinction of being fairly easy to write wrong program. You can accidentally forget something, assign the wrong type to a variable, but all this will somehow compile and somehow work. Most likely not in the way you expect.

In Java, if you make a mistake or a typo, the program will most likely not compile. Here everything is stricter, as in the case of Pascal. It seemed to me more suitable. back side medals - Java programs often run one and a half times slower than C ++ programs. Sometimes these one and a half times are not enough for the program to fit into the condition of the problem.

Everyone can choose a programming language, right?

There are restrictions. Of course, there are different competitions ... take Google Code Jam, for example. When we were deciding how best to do it, we came up with the idea that we can work in any language. You download the input file with the task data to your computer, run your program on the computer, and then send the result to the server. Whichever compiler/interpreter you have on your computer, you can use it. The disadvantage of this system is that people have different computers. Someone has a computer ten times more powerful than another. Therefore, it is necessary to create tasks where not correct solution from the correct speed differs at least a hundred times. So that if a person has a computer ten times slower, the correct solution worked for him, or the wrong solution still did not work on a computer ten times faster. Therefore, we need tasks with a large gap between the correct and wrong decision by the speed of work.

Used on Topcoder, Codeforces and ACM standard system where do you send source and they run it on their server. Here you are limited by what they have on the server. Most of the participants, 70-80% use C++, another 20% use Java, there are very few other languages. This, it seems to me, is such a cycle - new people who come to competitions begin to communicate with other, older participants, they teach beginners what they can do themselves. As a result, new people also begin to use the same languages. So these two languages ​​are not particularly suitable for competitions, it just happened historically.

Does that mean it all applies in real life? After all, it is certainly difficult to find a job in which this knowledge would be useful. Yes, you can go to Google or Yandex, but is it already more difficult to come to any bank?

It seems to me that this is a very useful part of the skill, the part that is responsible for the ability to write a program the first time, without errors, or to find an error in a friend's program. I myself did not work in a bank, but it seems to me that such skills would be useful there as well. Although, of course, the algorithms themselves are not really used in any work. But personally, this background helps me a lot.

You probably had some special story, how did you get into Google?

Yes, there is no story, everything was the same as the others. Now I'm doing the search (the general part of it, which does not depend on the country and language), but, unfortunately, I can not say anything about it, since this is a very confidential part.

Sports programming: pros and cons

Let me try to ask you a stupid question :). Why do you need to do sports programming, what do you think?

Everything here is very simple and similar to any other sport. You have to do it if you like it, if you enjoy it. It should not be an end in itself. You need to perceive sports programming as a way to have a good time, meet interesting people, and so on.

And if you try to come up with a reason why you should not spend time on sports programming?

I think you need to be aware that this is not the main thing in life. Have some other goals besides this one. If something starts to occupy absolutely your whole life, this is probably already a reason to think about at least taking a break.

But what does practice say, is it possible, for example, to build a career around sports programming?

There are several people in Russia who professionally train new sports programmers - coaches. Andrei Stankevich, Misha Mirzayanov and others. All of them teach at universities, but they spend a significant part of their working time preparing students and schoolchildren for programming competitions. For them, this is really a job and, one might say, a career.

Have you thought about this yourself? Nowhere do you participate in the jury or as a compiler of problems?

I tried to teach schoolchildren in the 57th school, where I myself studied. I tried to prepare teams for the Olympiads. Now in Moscow this topic is very active - there are teams at Moscow State University, Phystech, high school economy. But I didn't get along well with teaching.

As for the contests, first of all I help with tasks for Google Code Jam, for our competition. Plus, I help with the ACM semi-final, which takes place in St. Petersburg. This is a selection among Russian teams and teams of the former USSR for the final.

Is it possible to make money in competitions? After all, for the victory they give cash prizes.

Too little chance. One prize for ten thousand participants?.. I would not call it earnings. Count on this as the main source of income ... it seems to me that there is no chance.

But, as I said, there are many different competitions. The same Topcoder holds software development competitions. Let's say you need to develop a component for a program that does something. Based on the results, they evaluate who succeeded, and use the best - this solution is bought by the client and pays money to the one who made this decision. People who do this full time, as I understand it, earn pretty well.

Contests today

Tell us more about what competitions are now, how does it all happen?

Today there are two types of contests. There are weekly, regular competitions. They are held by two main sites - TopCoder and Codeforces. Each contest takes one and a half to two hours. There, the participants are given several problems to solve and send the program to the server. The organizers check if the program works.

TopCoder is the oldest and most famous site with weekly contests. They have the following rules. One hour and fifteen minutes are allotted for solving three problems.

Tasks are usually divided into very easy, medium and difficult. The organizers try to select them so that, say, five people solve all the problems, one hundred people - two, and all the rest solve at least one. Moreover, for each task it is important when you send it - the later, the less points you get. So those people who solved the same number of tasks are divided. Then the points are added up. A normal task costs 250 points. Average 500. Difficult 1000. On average, people from the first places get a thousand and something points per competition.

Then they take a break for five minutes and another fifteen minutes are allotted for finding mistakes from others. You can open the solution of any person, for any task in your “room”. A "room" is when people participating in a competition are randomly split into groups of twenty. They are divided into "rooms". You can open any solution of any person from your "room". If the solution seems wrong to you, then you can drive in the input data on which it will be wrong. And if it does give a wrong answer, you get another 50 points for it. This, of course, is less than the cost of the task. But this is again done to separate people. The main points are still awarded for solving problems, and not for finding errors.

After all this, the tasks are checked on tests prepared by the jury. If the task doesn't work, the person gets 0 points.

There is also a second site, Russian, - Codeforces. Their rules are slightly different, but the format is approximately the same - two hours and several tasks. If you like, this format can be called entertaining, unlike student Olympiads, which last for five hours.

But are there still big, annual contests?

Yes, in addition to the two described competitions that take place weekly, there are many more annual competitions. Usually they are arranged like this: some large company (Google, Yandex, TopСoder, IBM) holds a competition with several stages of selection. The first steps are online. And the final stage is already being held in a specific place where all the finalists are taken. There are only five or ten such competitions, but they are long, so some of them happen all the time.

Are all these competitions individual?

Most competitions are now individual. Team competitions are mainly student competitions, the main one being ACM ICPC. And other student competitions are also usually made as team competitions, because, roughly speaking, there is already a team there. This makes it easier to get people interested. Veteran competitions are usually personal.

Weekly competitions have a rating, like in chess, which is updated after each competition. Those who performed better get a plus, those who perform worse get a minus. If you did not participate at all, the rating does not change. The system is designed in such a way as to equalize people who visit often and rarely. There is no pressure to “participate all the time”. There are many people who are much older than me, they appear very rarely - once every two months - and still they have good rating because they continue to be good at problem solving.

Yes, in the first place is Gena Korotkevich, a very smart student from Gomel, now he is studying at ITMO. At Codeforces, I've had a worse result lately, now I'm sixth or fifth. There, too, Gena is in the first place.

Perhaps playing online and offline is a completely different feeling and experience?

Certainly. It seems to me that a very important positive side of sports programming is that all competitions end with an onsite round, where all the best come together. Thanks to this, I met many cool people from all over the world. In general, the main “prize” in such competitions, it seems to me, is meeting people. You spend time with them, communicate, learn something new. It is very funny that people from other countries, who often speak English poorly, are nevertheless very easy to understand, because they have very similar interests.

In such competitions - with selections - usually more people participate than in regular ones. If a person has never participated anywhere, weekly competitions can be a problem. There are such tasks that a person can not solve anything and get upset. In competitions with selections, everything is usually easier, at least in the early stages. Their main idea is that everyone should have fun. Again, there is a tangible prize at the end - cash prizes for first places. Plus, a trip somewhere, for example, to the Google office, is also quite a prize.

Does it happen that companies then try to use in life the developments from the solutions submitted by the contestants?

Pretty rare. The main goal of companies that hold such competitions is simply to popularize programming. The second goal is to find new employees. But the second is not even that important. Typically, a company puts on a competition specifically to get more people interested in programming, and it's not even about those who directly participated in the competition. Therefore, such competitions are usually held by large companies.

Do competitions change over time? Are they getting harder or, on the contrary, easier?

They get harder. More and more algorithms are considered to be something from the category “everyone should be able to do this”, “everyone knows this”. You need to think as much as ten years ago. It takes the same number of steps to build a solution, but the building blocks that make up the solution have become more complex. People have learned more algorithms. Take, for example, the suffix tree: when it appeared, I was in school, and it seemed that this is a very cool algorithm, everyone who knows it is very smart and this is generally a revolution. Now the same problems are solved using a suffix automaton, and this is a very simple algorithm that takes ten lines. That is, standard things have learned to greatly simplify. Therefore, now they are solving more complex problems.

About tasks and their preparation

How are the tasks for the competition? Are there compilers, people who already know how to do this, or is it some kind of crowdsourcing, where everyone can offer something of their own?

In the mentioned weekly competitions, this is exactly the case: everyone can offer their own problem. But there is a requirement that a person has previously participated in a sufficient number of competitions. A kind of check whether a person understands what tasks should be about in general. After that, you can send your assignments, and the jury will answer whether they can be used, whether they are suitable. If the problems are suitable, they are then given at competitions, and the author is paid money for this - not very big, but still.

Thinking up such tasks is a special skill, isn't it?

Oh yeah. You can come up with problems based on solutions. Let's say you read some article in a scientific journal about an interesting algorithm. Or he just found a certain algorithm and remembered that he had come across it before, but recently he had not seen it for a long time. You can come up with a task that requires its use.

The second way: when a certain problem arises in work or in life, and you realize that it can be cool to use. You may have to complicate something or change the restrictions, but then you get an interesting task for the competition.

There are competitions of varying degrees of proximity to life. Usually, the task at competitions is not given in some formal terms, like “given: solve an equation such and such”. Usually, a certain background, a story, is just given. As in school textbooks on mathematics: "Ten liters of water per minute flow through one pipe." Therefore, first you need to somehow formalize this story, find a mathematical problem in it, and only then solve it.

There are other competitions as well. TopCoder calls it a Marathon Match, and other companies run similar contests as well. They are set up a little differently. This is already a competition not in algorithms, but in solving approximate problems. When there is no exact solution and you need to come up with an option as best as possible. Such competitions usually last two weeks, a month. You can send different solutions and watch that, yeah, now my solution is 20% better than the others.

"Better" - in the sense of faster, uses less memory, and so on?

Yes. For example, you need to come up with a scheme for distributing bus traffic on a map of Moscow in order to use as few buses as possible. That is, in the condition of the problem there is a certain parameter that needs to be optimized, but there is no single “correct solution”, only some approximate algorithms.

The same Topcoder held competitions together with NASA, and they say that the solutions that they were offered were then really adapted and used on the ISS. They solved some specific problem there, it seems how to turn solar battery to get more energy.

Where to begin

From the point of view of preparing a good algorithmic programmer and participant in various contests - how to prepare yourself for this? If you imagine yourself in the place of a high school student or first-year students?

I think the most standard way- is to try. All competitions have an archive of previous contests available, there are thousands of problems that can be solved at any time.

What if I take a task and don't know how to approach it?

So take it sooner. They're different. There are tasks that every second school graduate can solve. There are completely different levels of difficulty. Getting in should be fairly easy. There is no other way, it seems to me. Plus, in this way you will immediately understand whether you like this activity or not.

What needs to be done to gain an algorithmic base? It is hardly necessary to immediately rush to read Knuth.

It seems to me that it is necessary to start with tasks. Only later, when you realize that you can’t solve any particular of them, in these competitions each one has an analysis. You can read the solution if you can't handle it on your own. For example, in the analysis it is indicated that a certain algorithm is used in solving the problem. You can read what this algorithm is, where else it is used. This is better than reading through the list “yeah, I have an algorithm that I need to learn over the summer.” It is better to start from a specific problem that you could not solve because you do not know any particular algorithm. This is more correct. You remember better, the motivation is stronger. This way of studying algorithms is probably longer than the list, but it leads to better results.

If you want to “pump” yourself with algorithms, is there any literature, textbooks?

The most standard textbook - Cormen, Leyzerson, Rivest with a donkey on the cover. "Algorithms: Construction and Analysis" is called. I don't know, I haven't studied for a long time, now there are probably new textbooks that can be better. But in my time they used Kormen. The whip is, rather, a kind of reference book. If something needs to be found and it is nowhere to be found, chances are it will be there. But reading Knuth in a row... it's a pretty sad thing to do.

Following the results of the regional semi-finals of the ACM ICPC World Championship, the results of the All-Russian Olympiad for School Students in Programming became known. Within the walls of ITMO University, gold medals were awarded to children from Almaty, Astana and Moscow. Petersburgers shared the "silver" with colleagues from Tbilisi, and the "bronze" went to the guys from Yekaterinburg, Izhevsk, Kremenchug and Vitebsk. Coaches of St. Petersburg teams Andrey Lopatin and Andrey Stankevich, tutor of the department computer technology ITMO University Lidia Perovskaya, Faculty Dean information technologies and programming Vladimir Parfyonov and world champions in programming of different years told why guys from the CIS have been breaking all records for the last 15 years.

ACM ICPC Winners from ITMO University

It's time to root for the programmers

“Programming is the future: every home has a huge number of programmable devices, and these technologies continue to penetrate into all areas of our lives. Just like engineers in the Soviet Union, programmers are now at the forefront of science and technology. Programming competitions are becoming an increasingly popular and spectacular sport, and the future is very promising.”- emphasizes Andrei Stankevich.

Lydia Perovskaya, As an experienced organizer of Olympiads at various levels, I agree with my colleague. According to her, programming competitions have a more complex structure than usual competitions. In the finals, teams of three people most often fight, and the teams themselves can be more than a hundred. As the tutor of the Department of Computer Technologies is sure, there is a place for fans in sports programming: a person who understands programming can root for a team that is closer to him in terms of university, level of knowledge or strategy/brightness of performance.

As the coach of the St Petersburg University team notes Andrey Lopatin, programming competitions are not only spectacular, but also really useful. According to his observations, modern champions easily solve problems that seemed unsolvable 10 years ago. The efficiency and speed of commands is growing, and the code is simplified, which makes it possible to spend less time developing and debugging programs. And this is already beneficial for large IT companies for which it is important to reduce the cost of production processes.


“It is important that the guys are not just good at scoring the ball into the goal, but are at the forefront of technology, and every self-respecting large company holds its own major programming championship in order to subsequently find the best specialists. After all, championship finalists are people who think quickly and find optimal solutions. Indeed, in life we ​​need not so much ideal solutions as optimal ones. Therefore, even those who did not receive prizes, but simply participated in one of the finals of major competitions, are very cool, and companies are literally fighting for them.”, the coach concluded.

Victory from and to

As noted Andrei Stankevich, sports programming develops in waves. There are a lot of team development strategies, but sometimes a key player influences the result. For example, thanks in large part to the talented ITMO University student Gennady Korotkevich the university team became the absolute world champion ACM ICPC twice. However, laurels go to those who adhere to long term strategy when one team has been honing their skills for many years and finally deservedly breaks into the top — this is how the St Petersburg University team became the absolute champion of ACM ICPC-2016. Therefore, it is not surprising when one of the teams or one of the players gives way to the top to others: it means that someone has taken the lead thanks to long and hard work.


If you speak in in general terms, the preparation of the guys consists of training competitions, when participants solve the problems of tournaments of past years, as well as theory - lectures, analysis of problems and other sometimes routine things. As Gennady Korotkevich adds, camps also play a significant role in the development of university-educated programmers, when teams from different cities of the post-Soviet space can unite and help each other improve.

“Communication between people plays a very important role in this sport. Teams from the CIS countries are successful because different universities get together, in fact, under one roof, communicate and do what they love together. Training camps really develop, give you a chance to prove yourself, look at the task in a new way”, the champion is sure.

As Aleksey Maleev, director of the Center for the Development of IT Education at the Moscow Phystech, emphasizes, those who want to prove themselves in sports programming need to be aware that 4-5 years of real plowing await them. And at the same time, no one can guarantee that in five years you will enter at least the top ten ACM ICPC. But this hard work, coupled with the cooperation of universities, allows graduates from Russia and the CIS countries to enter the global education market with a real trump card. And that is why the Russian school of programmers is in demand all over the world, the representative of the Moscow Institute of Physics and Technology is sure.

ACM ICPC champion agrees that sports programming benefits universities Niyaz Nigmatullin. According to an experienced participant in international contests, by the way the university team performs in the championships, you can quickly understand what they can teach you at their alma mater. At the same time, you need to understand that sports programming is not at all what hundreds of students do, because only a few choose and go through the path of a sports programmer, Niyaz notes.


economic question

“Now the question of the relevance of sports programming has moved into a purely economic aspect. The thing is that we are at a certain critical point, when there is not much time left before a new round of information technology development. This is the world in which we will all soon find ourselves: the banking system, medicine will completely change, unmanned vehicles will appear, not to mention the fact that many professions will simply disappear - people will lose their jobs. But programmers will really have a lot of it. And we see this already now: the demand for them is such that the salaries of physicists and mathematicians, even in the USA, are two times lower than those of programmers. And those countries that now have highly qualified personnel in the fieldIT will make a breakthrough in the next 10-20 years", - Vladimir Parfenov is sure.

That is why the Olympics are needed. To identify the best of the best, talents and those who just love programming and need support, Vladimir Parfenov is sure. In addition, talented children - the very future asset - are eager to compete and prove themselves from an early age. There are 3,000 out of 140 million such guys who will soon change the world in Russia alone, and the most important thing is to see those who can keep them company. After all, the rest of the world does not stand still, adds the dean of the Faculty of Information Technology and Programming - over the past 15 years, China has already made a tremendous breakthrough, and the United States remains on horseback because of its developed infrastructure.

“Our modern programmer starts working immediately in the fourth year, if he does not go into science, where, alas, the salary is still less. At the same time, he receives a lot of offers from employers. Of course, if we are talking about St. Petersburg, our 400-500 IT companies are trying to create something new, and it is worth joining them. It's not uncommon for those who start working at big companies like Google to return to their home country, sometimes complaining. After all, it is one thing when you are sitting in the beautiful city of St. Petersburg, and quite another when you are in a village called Silicon Valley ... " laughs the teacher.


Doping

Despite the endless questions about doping, young champions still point out that in sports programming, the main thing is that the head works well. So, for example, the 2016 world champion Stanislav Ershov admits that he likes to get enough sleep on the days of the competition, and also eat sweets. At the same time, the young man notes that he does not dream of increased media attention and fame - like people of science, he prefers to stay away from the hype. Gennady Korotkevich, a prize-winner of many competitions, who is one of the few people in the world who is able to earn a living from sports programming, does not really believe in doping. According to Gennady, it would be great if someday there would be professional recommendations for athletes-programmers - on regimen or nutrition. In general, young people do not deny that in the future there may be a real dope for brain activity more serious than chocolate, but they do not need it.



tell friends