13 мая 2020, 13:16
Статья

Почему программисты из России побеждают на международных олимпиадах? Слово — чемпиону мира

Обладатель золотой медали по спортивному программированию — о деньгах, девушках в IT, пандемии и смысле олимпиад для детей и взрослых
Конкурс Google Global Code Jam 2006 в офисе Google в Нью-Йорке. Ramin Talaie/ Corbis via Getty Images
Конкурс Google Global Code Jam 2006 в офисе Google в Нью-Йорке

Школьники и студенты из России уже несколько лет занимают первые места на престижных олимпиадах по спортивному программированию. Сборные команды из российских вузов находятся на первых местах в рейтингах престижных международных турниров. Например, здесь на первом месте МГУ, здесь команда из России, а еще есть звезды в личных зачетах. Как устроен мир спортивного программирования и какие двери открываются перед победителями — рассказал аспирант МФТИ, один из победителей чемпионата мира 2018 года Александр Голованов.

Как увлекаются олимпиадами? 

Я участвую в олимпиадах с 11 лет. В пятом классе я впервые поехал из родной Казани в Киров на турнир юных математиков. У нас было две команды, с нами отправились преподаватели. В Кирове мы жили в гостинице неделю — участвовали в турнире и гуляли по городу. Не помню, какое место заняла наша команда, но мне понравилось все — и соревновательная атмосфера, и общение, и то, что я посмотрел новый город. После этой поездки я стал часто участвовать в городских олимпиадах и куда-то выезжать. В детстве я был не очень социально активным, а благодаря олимпиадам я подружился со многими людьми. Если бы не соревнования, у меня было бы куда меньше друзей. Но знакомства — не основная мотивация. Мне просто всегда нравилась математика, я увлекался решением задач, мне было интересно решать их на турнирах. В старших классах я стал ездить на соревнования по программированию. И сейчас я несколько раз в год выезжаю на олимпиады от вуза и участвую в онлайн-олимпиадах.

Благодаря олимпиадам я побывал в разных странах, куда не поехал бы просто туристом. Чемпионат мира 2018 года проходил в Китае — в Пекине. Еще я ездил на соревнования в Абхазию, Болгарию, Румынию, Чехию, Беларусь, Японию, Канаду, Францию. Частично дорогу и проживание оплачиваем мы сами, частично — организаторы и университет. Обычно соревнования по программированию идут один день, а по математике — два дня. Но мы стараемся приезжать на несколько дней раньше, чтобы успеть погулять по городу.

Олимпиады, призы и деньги

Для меня спортивное программирование — это хобби. У меня есть работа — я изучаю биржевые данные и разрабатываю алгоритмы для торговли на бирже. Это приносит мне основной доход. На международных и российских олимпиадах часто есть денежные призы, но жить за счет участия в олимпиадах мало у кого получается. 

На базе новосибирского Академгородка проходят соревнования, где за первое место дают 90 тыс. рублей, за второе — 60 тыс., за третье — 30 тыс. Эти деньги делятся на команду — в команде три человека. Есть соревнования, которые проводит Google, — за первое место положено $15 тыс., за второе — $2 тыс., за третье — $1 тыс. Но там очень много участников и трудно пройти в финал — до него пять раундов. Я проходил в третий раунд, и мне прислали футболку. Уже не помню, какой был приз на чемпионате мира в 2018 году, но существеннее, чем на других турнирах, где мы выигрывали. В общем, никто не участвует только из-за призов. Хотя я знаю людей, которые зарабатывают на составлении задач для олимпиад. Есть платформы, на которых проходят онлайн-соревнования, — за их подготовку платят деньги.

Победителям проще найти работу?

Нет, чтобы устроиться на работу, необязательно выигрывать на международных олимпиадах. Люди, которые участвуют в олимпиадах, не преследуют такой цели. Соревнования и работа — очень разные вещи. Часто после большого опыта спортивного программирования человеку не так интересно делать то, чем занимаются программисты на работе. В офисе тебе дают задачу, нужно работать руками, что-то реализовывать по заказу, там нет соревновательного духа. Но в то же время я не думаю, что спортивное программирование отбивает желание работать — в любом случае, ты заканчиваешь вуз и начинаешь искать заработок. 

Кто главные соперники?

Если судить по чемпионату мира, то последние лет десять команды из российских вузов в топе самой престижной олимпиады International Collegiate Programming Contest. Там побеждали команды МГУ, СпбГУ, ИТМО. Сильные соперники — команды из вузов Китая, США, Японии и Польши. Индия — нет, там много программистов, они активно участвуют в международных олимпиадах, у них много онлайн-соревнований внутри страны, но их команды не занимают первые места. В спортивном программировании Индия не отжигает. 

Почему россияне стали побеждать?

В России проводится много олимпиад. Насколько я это себе представляю, все началось еще с развития математических олимпиад в Советском Союзе — там проводились соревнования от школьных до всесоюзных. В общем, в СССР сложилась сильная математическая школа. А программисту нужно быть хорошим математиком. В 90-х эта практика не потерялась. Сейчас развиваются летние компьютерные школы и сборы по программированию. Самые известные — петрозаводские сборы для студентов. В вузах — в том числе в моем вузе — тоже несколько лет проводятся свои сборы. То есть в России есть хорошая подготовка. 

Девушки и спортивное (и не только) программирование

Девушек на крупных международных или российских олимпиадах единицы. На школьных и студенческих сборах их побольше. Я не могу сказать, что девушкам что-то объективно мешает быть в командах. Я не считаю, что девочки не могут быть хороши в математике или программировании. В моей школьной команде была девочка — она справлялась не хуже других. Но я заметил, что девушкам быстро становится неинтересно программирование и соревнования. Мне кажется, это поменяется. Сейчас растет феминистическое движение, женщины пробуют себя в отраслях, которые считаются мужскими, а программирование считается таким направлением.

Пандемия и соревнования

Из-за эпидемии коронавируса многие мероприятия перенеслись или отменились. Что-то перешло в онлайн. В конце апреля я участвовал в турнире на всероссийском онлайн-чемпионате Rucode, мы с командой заняли девятое место.

Когда программисты уходят из спорта…

Большинство людей перестают участвовать в олимпиадах, когда заканчивают вузы. Вернее, так: большая часть уходит из спортивного программирования после школы или в университете, когда начинает подрабатывать. Есть те, кто продолжает ездить на турниры до окончания учебы и позже. Наверное, я буду менее активно участвовать в соревнованиях после аспирантуры. Но все равно хочу продолжать подольше участвовать в соревнованиях. 

Вообще, я хочу развеять миф, что программисты и особенно спортивные программисты какие-то гики, которые ходят и никого вокруг не видят, ничего не замечают. Большинство участников олимпиад интереснее, чем другие люди. С ними можно общаться не только про IT или математику. Многие участники олимпиад занимаются спортом, у них куча разных хобби. На олимпиадах всегда весело — мы с друзьями гуляем по городу, идем куда-то поесть и выпить пива, иногда ходим играть в квесты. Организаторы устраивают посиделки в караоке. Это не так, что люди приезжают и ничего не видят кроме гостиницы и задач на соревнованиях. Спортивное программирование — это целый мир. 

…и куда идут? 

Абсолютно разные пути — кто-то идет работать в крупные российские компании, кто-то уезжает за границу, кто-то открывает свое дело. Вот у меня нет цели делать стартап или продукт, который сделает мир лучше. Вернее, так: если то, что я делаю, станет полезным для многих людей, будет здорово. Алгоритмы для фондовых бирж, которые я делаю, нужны рынку, и мне нравится эта работа. Но я замечаю, что мне не слишком интересно думать о прикладном применении. Главное — процесс. Я люблю математику, мне нравится решать абстрактные задачи.

Записала Анастасия Степанова