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

    Sports programming is a very controversial topic. Some believe 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 just recently said that in Google there is a negative correlation between a person’s victories at olympiads for programmers and his success in work. In his opinion, sports programming teaches you to concentrate on short-term tasks, while at work you need to think about the future of the project.

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



    All stages of Yandex.Algorithm this year will be held online, so 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 five problems must be solved in 100 minutes. The finals, which will take place on August 6, will be the 25 best according to the results of the selection. The training round, which is worth registering , will be held on May 3.



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

    Works on 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 Informatics of BSU in 2013. Silver medalist of the student world championship ACM ICPC 2013, finalist and winnermany more different competitions. The author of the tasks of the final of the Yandex.Algorithm of 2013.



    I think that helps, because some skills gained during participation in the Olympiads can be applied in industrial programming. At the same time, it is worthwhile to be tolerant of the fact that in industrial programming everything should happen more measuredly and calmly. You need to wean yourself from the habit of doing something quickly so that it works at least somehow. This is very useful at olympiads, but interferes with industrial development.


    Mikhail Parakhin, Moscow.
    Director of Search Technology. In Yandex - a year

    After graduating from MEPhI, he began working at CJSC Scientific and Technical Center "Module". In the 90s, it was almost the only place in Moscow where they studied automatic learning systems. Then he went to Parascript, which is actually a monopolist in the field of handwriting and printed text recognition. For many years he worked in the USA. For the past seven years, at Microsoft, five of which led Bing's multimedia search services division. Last spring, he came to Yandex as director of search technology.

    image

    I have a negative experience here. ACM people love to do scary things in my projects, so now I don’t like them. I do not think that experience itself is in the way, it helps. Sports programming in itself leads to such a style when you do not free up your memory and write everything quickly and quickly, so that then no one will read it. Plus, people who are interested in the sports part of the question pass interviews in the company very well, but they don’t know how to work, and they need to learn. There is a discrepancy between the expected and the actual.


    Pavel Sukhov, Nizhny Novgorod.
    Junior geodata storage developer. Yandex is the year.

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

    image

    The main advantage of sports programming is that it teaches you how to solve complex problems and do it quickly. The main minus is that it teaches you how to solve complex problems and do it quickly. But let's 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 tasks of another style. Sports programming is not a panacea, but certainly 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.

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



    This is a well-known controversial issue. You can find the pros and cons of sports programming and generally 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 look at the team competition, it often turns out that only three people understand what is written. The participants of one team learn to read and understand very quickly the same code, they can write some kind of algorithms almost symbol by symbol. Industry code should be clear to everyone.

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


    Vladislav Malakhovsky, Minsk.
    Team Leader Interactive Technology. 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 Radio Electronics. I tried to write my first basic programs at the age of 10 in a circle of the Palace of Pioneers.



    The experience of any work helps in something, the question is in efficiency. Sports programming gives knowledge of some deep algorithms and just the skill to recognize in time where 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 fairly primitive constructions that know everything at all. But in particularly difficult places, of course, sports programming will allow you to sleep an extra night and not waste time searching for a good solution.

    Andrey Turtle. Minsk
    Interface Developer. In Yandex - 1 year.

    He is engaged in the development of Yandex search interfaces. Recently completed work on search interfaces for older browsers, which are still used by a significant number of people. He studied at the Minsk State College of Electronics. Before Yandex, he also worked in the frontend. He began to officially work as a programmer at the age of 17.



    Depends on a person. Someone begins to shove confused algorithms and some wild optimizations into places that are not seemingly critical. It will be difficult to work with such a person, and such a person will be difficult, because any simple task for him will look difficult. Other people who write code, no matter sports programming, industrial, just apply skills in the right situation.


    Sergey Silaev. Minsk
    Developer. In Yandex - 1 year.

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




    I have been involved in sports programming for several years, and judging by myself and my friends, the tasks that arise in the search are very much related to algorithms and knowledge of the theory of algorithms really simplifies the implementation of fairly complex computing systems. But there is one minus - the guys participating in the competitions get used to working irregularly, because many Olympiads are remote, held at night. As a result, such a rhythm is transferred to work. It’s convenient for someone to work in the mornings, and someone is more comfortable 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.
    Head of the Minsk office of Yandex. Yandex - 3 years.

    Besides the fact that Lyosha oversees our development office, he also manages the toloka.yandex.ru service, which also has Belarusian roots in its name. He graduated from the Institute of Applied Mathematics and Economics at the Belarusian State University and graduated from the Academy of Sciences in Applied Mathematics.



    I have a hobby. For ten years now I have been the author of problems and a member of the jury of our national olympiads in computer science. In his student years he participated in ACM, therefore, as it seems to me, I well understand the soul of a sports programmer. And yes, I think this experience helps a lot.

    Sports programming trains the ability to achieve results in extreme conditions for a limited time. And it is very similar to life. Often you have to solve problems of a certain complexity, which, perhaps, have no solution. The Olympics is a model of a small world. Reach the result, get a high score, and everything will be fine.

    This is not to say that then all the Olympiads become good employees and make a good career. In most cases, this helps, they are successful, their creativity is very well developed. But there are some disadvantages. Sports programmers are basically a subculture where you often listen to your opinion, you are surrounded by attention, receive prizes and begin to unconsciously feel like a star. When the situation then changes, you come to work and cease to be a star, you need to gain your authority again. And people often don’t 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 used to getting very involved and are ready to perform only interesting tasks in the future. But in every work there are tasks where you need to go some way and record the result. Not all are enough for this finish line. Not all representatives of sports programming have enough internal self-organization to go through a small interval of routine work.

    Who is the olympiad? This is a person who is used to achieving results through his creative activities in extreme conditions for a limited time. The Olympics is a kind of model that gently lays down 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, the Olympiad can not always build a good career. But often people change their minds.

    Mikhail Lopatkin, Nizhny Novgorod.
    Mobile browser core developer. 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 team for Olympiad programming.

    image

    Sports programming is good at training liveliness of the mind. On the one hand, it is useful at work. On the other hand, you learn all sorts of tricky algorithms, which by and large are not very useful. I haven’t had to write any stream search in the browser yet, and I don’t think I will.


    Alexey Chernigin, Nizhny Novgorod
    Developer of mobile geoplatform. Yandex is the 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 nodes. Then he developed video surveillance systems and computer vision algorithms for retail chains. Yandex is developing mobile geo-applications.

    image

    People who perform effectively at competitions are often quite difficult to adapt in industrial programming, because sports programming is more of a math than programming. First, any problem must be solved mathematically, that is, build a theory, come up with a solution, and only then turn it into code. But since the key here is the speed and efficiency of the solution, people type code quickly. The person who will look at him simply will not understand what is written there. The code should 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 what is going on. Therefore, the guys have to retrain, or rather even retrain to write high-quality code. But, of course, they are talented mathematicians,

    Oleg Ignatiev, Moscow.
    Image Search Quality Developer. Yandex is the year.

    Prizewinner of the All-Russian School Olympiad in Computer Science, winner of the Moscow team championship. Quarter-finalist ACM ICPC. The student took seventh place in the semifinal Russia. Graduated from Moscow State University



    Sports programming provides a lot of things that help. Let's say in half an hour I can write a bunch of code and test some prototype instead of spending a week checking it. In 30 minutes I can understand if I should do something for a week or not. Without sports programming, I would not have learned this. Plus, the competitive part helps, simply because it is. The competitive part of any sport helps in life. I believe that there are no minuses in the olympiad experience, and often find myself the defender of sports programmers in disputes.

    They are undeservedly considered bad industrial programmers solely because they expect much more from them, because they are highly advertised. A sports programmer differs from an ordinary programmer only in that he won some olympiads. It seems to be no worse and incomprehensible, for which 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 won’t have any questions. In this regard, with those who have experience in sports programming, it is easier. The rest of the qualities they have are exactly the same as all people: they are just as lazy as they may not be interested in work.

    I have seen many discussions of Norwig research. Most of all I like the remark that it asked sports programmers and non-sports questions, and the interview with Google is really very focused on making the first one go very well. As a result, if a person is not a sports programmer and coped with it, then most likely he is a megastar. Therefore, non-sports programmers could get better results. But there are a million more reasons why the results were just that. Specifically, I do not believe that sports programmers are imprisoned for 5 hours of work. I have many friends who are constantly engaged in some activity besides work, are doing some kind of their own project and they are not sorry to spend several months on it.

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

    A very large part of the activity is working in our academic programs. He teaches at the School of Data Analysis, participates in the creation of a training program at the Faculty of Computer Science of HSE and Yandex. Twice won medals at the ACM ICPC as part of the team of Moscow State University. M.V. Lomonosov.

    image

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

    Ivan Fefer, Moscow
    Video ranking developer. In Yandex - half a year.

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



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

    During programming competitions you have to write a lot of code, and this forms a technique, a style - you always try to think over 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 back at any styles. If the hypothesis is working, you can implement everything in accordance with the standards of industrial programming.

    Yes, during the competition I try to solve as many problems as possible in as little time as possible. But when I work, I can’t imagine that I’m in a competition. I hear a lot of opinions that sports programmers write bad code. Yes, at the competition I write a code whose support cycle is not more than five hours. But when I write code with a five-month support cycle, I write different code.

    At the last work, like this one, the first thing I started with was reading the style guide. And I try to follow it. In addition, even during my studies at the sports programming center at the university, we even had one or two lectures, where the teacher told how to write code, that it is better to always indent, separate operators with spaces, separate logical blocks. Even in personal competitions, code that is written clearly and transparently is better than typed very quickly. Because in the case when you made a mistake and cannot find it by testing, you need to sit down and read again what you wrote. Of course, this was written recently, but reading incorrectly written code is much more difficult than beautiful and correctly written.

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

    Of all the negative that I heard, the most truthful is probably arrogance. Sometimes participation in world-class competitions, especially successful ones, makes one think. Everything, of course, is very personal, but, in my opinion, it gives only objective self-confidence and in no way makes you better than other people.

    Also popular now: