📜 ⬆️ ⬇️

Do experience and achievements in sports programming in real life and work help or hinder?

Sport programming is a very controversial topic. Some people think that achievements in it are a good indicator of talent and skills for industrial development, others - that such experience brings more harm.

For example, Peter Norvig literally recently said that there is a negative correlation in Google between the victories of a person at Olympiads for programmers and his successes in work. In his opinion, sports programming teaches us to concentrate on short-term tasks, while at work we need to think about the future of the project.

In connection with the approach of Yandex.Algorithm, our own championship in sports programming, we decided to ask developers from Yandex, who both participated and won various contests, or not, does experience help in sports programming in industrial programming help?
')


All stages of Yandex.Algorithm this year will be held online, so that those who are not ready to go somewhere will be able to participate in it. The algorithm consists of several qualifying rounds, in each of which you need to solve five problems in 100 minutes. In the final, which will be held on August 6, 25 best ones will be selected. The training round, which is to register , will be held on May 3.



Roman Udovichenko, Minsk.
Geoservice developer. In Yandex - three years.

Works in Yandex.Maps on various tasks, the solution of which allows to improve the readability of maps and make them more convenient for orientation. He graduated from the Faculty of Applied Mathematics and Computer Science of the BSU in 2013. The silver medalist of the 2013 ACM ICPC student world championship, the finalist and the winner of many other competitions. Author of the tasks of the final Yandex. Algorithm 2013.



I think it helps, because some skills gained while participating in competitions can be applied in industrial programming. At the same time, it is worthwhile to tolerate the fact that everything in industrial programming should be more measured and calm. We need to wean ourselves off the habit of doing something quickly so that it works at least somehow. This is very useful at competitions, but it hinders industrial development.


Mikhail Parakhin, Moscow.
Search Technology Director. Yandex - year

After graduating from the MEPhI, he began working at ZAO SEC Modul. In the 90s it was almost the only place in Moscow where they were engaged in automated learning systems. Then he went to the company Parascript, which is actually a monopolist in the field of handwriting and typed text recognition. For many years he worked in the United States. The last seven years have been Microsoft, five of which headed the multimedia search services division at Bing. Last spring, I came to Yandex as search technology director.

image

I have a negative experience here. ACM people like to do scary things in my projects, so now I don’t like them. I do not think that experience itself interferes, it helps. Sports programming in itself leads to this style, when you do not release the memory and write everything quickly, quickly, so that no one will read it later. Plus, people who are fond of the sports part of the issue are very well interviewed in the company, but they do not know how to work, and they need to learn. There is a discrepancy between the expected and the actual.


Pavel Sukhov, Nizhny Novgorod.
Junior developer of geodata storage systems. In Yandex - a year.

He studied at the Nizhny Novgorod branch of the HSE, where he has been teaching for two years. Before Yandex, he worked in a research laboratory. In Yandex, it develops geo-applications.

image

The main plus of sports programming is that it teaches how to solve complex problems and do it quickly. The main disadvantage - it teaches to solve complex problems and do it quickly. But let us imagine that the task is simple and is not solved quickly, but for a long time, methodically and persistently. You know how to cope with tasks of one style and, accordingly, lose in solving problems of another style. Sports programming is not a panacea, but definitely not harmful. This is a mechanism for working with a specific type of task.


Alexey Tolstikov, Minsk.
Factor developer, curator of the Minsk branch of the School of data analysis. In Yandex - 3 years.

Repeated participant of the ACM ICPC championships, took the 20th place as a member of the BSU team in the 2010 final in Harbin. Semifinalist Google Code Jam, twice finalist of the Russian Code Cup. Winner TopCoder Belarus College Tour. He graduated from BSU, where he teaches.



This is a well-known controversial issue. You can find both pluses and minuses of sports programming and in general participation in these algorithmic olympiads. In part, they structure consciousness, because students or even schoolchildren who have not written projects learn to structure their code.

But at the same time, they write code, wanting to do everything as quickly as possible, and further, if we already look at the team competition, it often happens that only three people understand the writing. Members of the same team learn to very quickly read and delve into the same code, they can write some algorithms almost a symbol into a symbol. Industrial code should be clear to everyone.

In this sense, Olympiad programming teaches bad, but still a lot of good things. This, in my opinion, is teamwork, the ability to share functions within a small team. In industrial programming, this comes with experience of 2-4 years, and in sports, students learn this in parallel.


Vladislav Malakhovsky, Minsk.
Head of the team of interactive technologies. In Yandex - 2 years.

Engaged in the development of Yandex. Browser. He studied at the faculty of computer systems and networks of the Belarusian State University of Informatics and Radioelectronics. I tried to write the first programs on basic in 10 years in the circle of the Palace of Pioneers.



Any experience in something helps, the question of efficiency. Sports programming gives knowledge of some deep algorithms and just the skill in time to recognize which algorithm to apply. But in commercial programming, most of the time, there is no need to use any complex algorithms, because most of the program or project that is being developed consists of quite primitive structures that everyone knows in general. But in particularly difficult places, of course, sports programming will allow you to sleep an extra night and not spend time searching for a good solution.

Andrew Turtle. Minsk
Interface developer. In Yandex - 1 year.

Engaged in the development of Yandex search interfaces. Recently I completed work on search interfaces for old browsers that are still used by a significant number of people. He studied at the Minsk State College of Electronics. Prior to Yandex, too, was engaged in front-end. He officially began working as a programmer at the age of 17.



Depends on a person. Someone starts to push confused algorithms and some wild optimization in places that are not critical. It will be hard to work with such a person, and it will be hard for such a person, because any simple task will look difficult for him. Other people who write the code, it does not matter sports programming, industrial, simply apply the skills in the right situation.


Sergey Silaev. Minsk
The developer. In Yandex - 1 year.

Engaged in the analysis and processing of large amounts of external data. At the same time, he teaches at the Belarusian State University and the Yandex Data Analysis School in Minsk. Graduated from the BSU Faculty of Applied Mathematics.



For several years I have been involved in sports programming, and judging by myself and my friends, the tasks that arise in the search are very strongly connected with algorithms and knowledge of the theory of algorithms really simplifies the implementation of quite complex computing systems. But one minus can be singled out - the guys participating in the competitions get used to work irregularly, because many remote Olympiads are held at night. As a result, this rhythm is transferred to work. It is convenient for someone to work in the morning, and it is more comfortable for someone to come in the evening and work in silence until midnight. For some, this is a plus, but for someone - a minus.

Alexey Sikorsky, Minsk.
The head of the Minsk office of Yandex. In Yandex - 3 years

Besides the fact that Lyosha oversees our development office, he also manages the toloka.yandex.ru service, which has Belarusian roots in its name. He graduated from the FPMI and the economist of BSU and the master's degree of the Academy of Sciences in applied mathematics.



I have a hobby. I have been the author of problems for ten years now and a member of the jury of our national Olympiads in Informatics. In student years I participated in ACM, therefore, as it seems to me, I understand the soul of a sports programmer well. And yes, I believe that this experience helps a lot.

Sports programming trains the ability to achieve results in extreme conditions for a limited time. And this is very similar to life. Often it is necessary to solve problems of a certain complexity, which may not have a solution. Olympiad is a model of a small world. Achieve the result, get a high score, and everything will be fine.

It cannot be said that all the Olympiads then become good employees and make a good career. In most cases it helps, they are successful, their creativity is very well developed. But there are some cons. Sports programmers are basically a subculture, where your opinion is often listened to, you are surrounded by attention, you get prizes and you begin to unconsciously feel like a star. When then there is a change of scenery, you come to work and stop being a star, you need to win your authority again. And people often do not understand: “How so? Why, when I come, no one listens to me? ”Or you think:“ I already know everything. Why do I need to learn something? "

The second point is interest. Sports programmers are accustomed to get very involved and are ready to perform only interesting tasks in the future. But in every work there are tasks where you have to go through a certain path and fix the result. This finish line is not enough for everyone. Not all representatives of sports programming have enough internal self-organization to go through a small period of routine work.

Who is olympiadnik? This is a person who is used to achieve results with the help of his creative activities in extreme conditions in limited time. Olympiad is a kind of model that gently falls on real life. It often has to cope with tasks when you do not know if there is a solution at all or not, you have to be creative, you are limited in time.

Yes, Olympiad can not always build a good career. But often people are rebuilt.

Mikhail Lopatkin, Nizhny Novgorod.
Developer core mobile browser. In Yandex - 2 years

Writes a mobile Yandex. Browser for Android. Prior to Yandex, he worked in various outsourcing companies. He graduated from the Nizhny Novgorod State Technical University and is now coaching the university's team in Olympiad programming.

image

Athletic programming well trains mental alertness. On the one hand, it is useful at work. On the other hand, you study all sorts of clever algorithms that by and large do not really come in handy. I didn’t have to write any search for a stream in the browser, and I don’t think it’s necessary.


Alexey Chernigin, Nizhny Novgorod
Mobile geoplatform developer. In Yandex - a year.

He graduated from UNN them. N.I. Lobachevsky. He worked in a telecommunications company, where he was engaged in the development and support of software for cellular communication centers. Then he developed video surveillance systems and computer vision algorithms for retail networks. In Yandex, he is developing mobile geo applications.

image

People who perform effectively at olympiads are often quite difficult to adapt in industrial programming, because sports programming is more math than programming. First, any problem needs to be solved mathematically, that is, to build a theory, to come up with a solution, and only then turn it into code. But since the key factor here is the speed and efficiency of the solution, people dial the code quickly. The person who will look at him will simply not understand what is written there. The code must be such that it is immediately clear what is happening here. The code written by the olympiad can often be fast, but then people will look at it for a long time and think about what is happening here. Therefore, the guys have to retrain, or rather even learn to write quality code. But, of course, they are talented mathematicians, talented programmers, and they have great potential.

Oleg Ignatiev, Moscow.
Developer Quality Search Images. In Yandex - a year.

Prize-winner of the All-Russian Olympiad in Informatics for Schoolchildren, winner of the Moscow team championship. Quarter-finalist ACM ICPC. A student took the seventh place in the semi-final Russia. He graduated from the Moscow State University.



Sports programming gives a lot of things that help. For example, in half an hour I can write a bunch of code and test some kind of prototype instead of spending a week on checking. In 30 minutes I can understand whether I should do something for a week or not. Without sports programming, I would not learn it. Plus, the competitive part helps, just because it is there. The competitive part of any sport helps in life. I believe that there are no minuses in the Olympiad experience, and often I find myself a defender of sports programmers in disputes.

They are undeservedly considered bad industrial programmers solely because they expect much more from them, because they are heavily advertised. A sports programmer differs from an ordinary programmer only in that he won some kind of Olympiad. It seems that he is no worse and incomprehensible why he is considered a bad programmer.

In my experience, he does not need to explain how to do something from an algorithmic point of view, you can say to do something and he will not have any questions. In this regard, with those who have experience in sports programming, it is easier. The rest of their qualities are exactly the same as those of all people: they are just as lazy as they are, and they may not be interested in work.

I have seen many discussions of the Norvig study. Most of all, I like the remark that it asked questions to sports programmers and non-sports programmers, and Google’s interview is really very focused on getting the first ones to go through it very well. As a result, if a person is not a sports programmer and coped with him, then, most likely, he is a megastar. Therefore, non-sports programmers could have better results. But there are still a million reasons why the results were such. Specifically, sports programmers are sharpened for 5 hours of work, I do not believe. I have many acquaintances who are constantly engaged in some kind of activity besides work, they are doing some kind of their own project and they don’t feel sorry for spending several months on it.

Mikhail Levin, Moscow
Head of Big Data Analysis Service. In Yandex - 5 years

A very large part of the activity is work in our academic programs. He teaches at the School of Data Analysis, participates in creating a curriculum at the Faculty of Computer Science at HSE and Yandex. Twice he won medals at ACM ICPC in the team of Moscow State University. Mv Lomonosov.

image

This is the eternal holivar. Of course, it is not clear that if a person won the Olympiad, then he is a good developer. There is a problem that people have to retrain. But I think sports programming helps quite in specific things. With him quickly there is an understanding that the programs do not work. There comes the experience of programming, then the experience of writing programs that work and include testing, thinking through the details of the solution, quick search for bugs, and in general the notion of what a program that works. Also there are elements of teamwork, which is very useful. Yes, there are things that may even interfere with work. For example, code written by olympiads cannot be used in industrial programming. But participants of the competition are not oriented to this - they need to do something in an hour that works and that can be thrown out later. However, it helps to quickly create working prototypes.

Ivan Fefer, Moscow
Developer video ranking. In Yandex - half a year.

He studied at the Saratov State University, where facultative classes in sports programming are very developed. Participated ICL in Kazan, Russian Code Cup, VK Cup, Yandex. Algorithm. In 2014 he was a finalist in ACM ICPC in Yekaterinburg.



Of the useful things that gave me experience in sports programming, this, of course, is a programming technique, the ability to implement any algorithm, regardless of its complexity. Also this is some kind of fundamental scientific knowledge. It is clear that, directly because of their fundamental nature, they are difficult to apply, but they help develop thinking.

During programming competitions, you have to write a lot of code, and this forms the technique, the style - you always try to think through your program so as not to stumble while writing it. It also helps in the work. Specifically, I sometimes have to conduct experiments. Thanks to this experience, I can write something quickly and efficiently just to test my hypothesis. In such a situation, you can write as if you are in a competition, without looking at any styles. If the hypothesis turns out to be working, everything can be implemented in accordance with the standards of industrial programming.

Yes, during the competition I try to solve as many tasks as possible in the least possible time. But when I work, I can't imagine being in a competition. I hear a lot of opinions that sports programmers write bad code. Yes, in a competition I write code, the support cycle of which is not more than five hours. But when I write code that has a cycle of support for five months, I write another code.

At the last work, as well as on this one, the first thing I started with was read the style guide. And I try to follow him. Moreover, even during my classes at the center of sports programming at the university, we even had one or two lectures, where the teacher told us how best to write code, what is always better to set indents, separate operators with spaces, separate logical blocks. Even in individual competitions, the code that is written clearly and transparently is better than typed very quickly. Because in the case when you made a mistake and you can not find it by testing, you need to sit down and read what you wrote again. Of course, this is written recently, but reading incorrectly written code is much more complicated than beautiful and correctly written.

In addition, there are team competitions where team members read each other's code. There, too, you can use, for example, single-letter variable names, but your own style is still formed inside. We always know that a variable called g means a graph. Of course, at work, I do not call the variable g, I call it graph, but for this I did not have to specifically retrain.

Of all the negative things I've heard, the most truthful is probably arrogance. Sometimes participation in world-class competitions, especially successful ones, comes to mind. Everything, of course, is very personal, but, in my opinion, this only gives an objective self-confidence and in no way makes you better than other people.

Source: https://habr.com/ru/post/256163/


All Articles