«Для них открыты двери почти всех компаний в любой точке мира»
Как и чему учатся российские программисты Тренировки к чемпионату мира по программированию среди студентов ACM ICPC завершились в октябре в Барселоне. Это были крупнейшие тренировки в этой сфере и единственные подобные за пределами России в них приняли участие около 150 человек из разных стран мира, в том числе победители последнего чемпионата, который прошел в США,— команда Санкт-Петербургского университета информтехнологий, механики и оптики. Российские команды за последние годы шесть раз подряд побеждали в этих соревнованиях, а такие тренировки, полностью имитирующие условия чемпионата мира,— это уже регулярное мероприятие. Как проходят подобные тренировки, когда и почему российские школьники приходят в программирование, как занимаются олимпиадным программированием в российских вузах и где планируют работать выпускники российских технических университетов с опытом участия в международных соревнований, разбиралась корреспондент “Ъ” Валерия Мишина. «Задача коммивояжера» Происходящее на тренировках по программированию в Барселоне, полностью имитирующих условия международного чемпионата, на первый взгляд трудно назвать «активностью»: участники соревнования сидят с ноутбуками за длинными столами и сосредоточенно на них работают. В полутемном зале установлен большой экран — на нем в реальном времени отображается, сколько задач и как решили команды: кто сейчас на каком месте, у кого есть штрафные очки, кто сколько сделал попыток, сколько времени потрачено на решение. Все именно так, как происходит на международной студенческой олимпиаде по программированию ACM ICPC, крупнейшем подобном соревновании в мире. Этот чемпионат проводится с 1970-х годов. А с 2000 года в нем начали побеждать команды российских вузов: первыми тогда стали студенты Санкт-Петербургского госуниверситета (СПбГУ). Всего же российские команды побеждали в ICPC 12 раз, при этом с 2012 года победителями становились только команды из ИТМО или СПбГУ. «Наша олимпийская школа по программированию действительно сейчас одна из лучших в мире,— объясняет один из организаторов тренировок в Барселоне, основатель проекта Moscow Workshops ACM ICPC — сети тренировочных международных сборов по спортивному программированию, директор Центра развития ИТ-образования Московского физико-технического института Алексей Малеев.— Мне кажется, в первую очередь это потому, что у нас хороший бэкграунд в математике, у нас много алгоритмических подходов, наши олимпиады по математике сильно развивают школьников и студентов в этом направлении. А олимпиады у нас существуют с 1930-х годов». О плюсах российской школы программирования говорит и профессор Технологического университета Каталонии Сальвадор Роура, который является тренером местной команды: «У нас нет подобной последовательной, непрерывной системы, когда школьники, а затем студенты занимаются программированием. Как правило, здесь этой сферой начинают заниматься уже в университете». «В МФТИ многие поступают по результатам олимпиад, например, призеры Всероссийской олимпиады,— рассказывает тренер центра развития ИТ-образования МФТИ Михаил Тихомиров.— К нам идут и участники школьных сборов по подготовке к олимпиадам. И для желающих заняться олимпиадным программированием мы сначала организуем личные тренировки, потом потихоньку вводим их в командные, чтобы они прониклись спецификой, что иногда бывает сложно, так как это довольно большой скачок от школьной олимпиады к студенческой». По его словам, ко второму курсу студенты уже посещают еженедельные тренировки, участвуют в командных обсуждениях задач, они часто бывают на выездных командных олимпиадах — их в год проводится около двадцати: «Как показывает практика, выездные командные соревнования — это очень полезно, особенно на первых этапах, помогает преодолеть страх, нервозность, учит работать в разных условиях». Среди основных соперников российских команд на чемпионате мира по программированию он называет студентов из Японии, Китая, Южной Кореи и Польши. Их представители приехали и на эту тренировку. От чемпионата тренировки отличаются тем, что после соревнований преподаватели объясняют тему и методику решения, дают советы, как потратить на задачу оптимальное время, как найти правильную стратегию. «На чемпионате обычно дается пять часов на решение 12 задач, плюс-минус одна-две задачки,— объясняет Алексей Малеев.— Участники решают задачу и пишут код ее решения. Ну, например, классическая "Задача коммивояжера": есть несколько расстояний между разными точками, и нужно проехать все города, побывать в каждом ровно один раз и сделать это с минимальным временем». Он также приводит в пример классическую задачу о рюкзаке: «Вы собираетесь в поход, у вас есть рюкзак ограниченного веса, то можно взять с собой условно до 20 кг, а у вас дома много разных предметов, каждый из них имеет какую-то ценность. В походе такие вещи, как палатка или спальный мешок, будут иметь высокую ценность, точно меньше, чем любимый пуфик и торшер. Но, в принципе, и их тоже можно взять. И задача о рюкзаке — это как собрать рюкзак максимально большей ценности с ограничением по весу». Российские участники сборов «Hello, Barcelona» По правилам ACM ICPC, программу решения нужно написать на одном из трех языков программирования: Java, С++ и Python. «Но Python используется реже, так как это язык более высокого уровня и там все операции происходят дольше, а у нас есть ограничения по времени и объему памяти»,— говорит господин Малеев. Код решенной задачи отправляется в тестирующий сервер, где он проходит сотни тестов, и задача считается решенной, если она прошла их все. «Если хотя бы один тест-код не пройден, увы, задача считается нерешенной, и участники соревнования или тренировки сразу об этом узнают и могут и дальше делать попытки по ее решению, количество таких попыток не ограничено». Командам предстоит написать алгоритм, который бы удовлетворял всем критериям, и при этом необходимо работать слаженно, четко распределив роли. «В разных командах все по-разному, но довольно распространенное явление, когда кто-то в команде берет на себя роль капитана,— называет варианты стратегии Алексей Малеев.— Во-первых, есть мотивационная составляющая — нужно пять часов отработать на максимально эффективном уровне: ведь если вдруг у вас две задачи, которые не поддаются решению, это может вас расстроить. Может мотивация упасть, вы скажете "да все, пошли отсюда". Но кто-то должен за этим следить и должен принять решение. А если что-то долго не получается, кто-то должен принять решение отложить это пока в сторону, так как есть еще нерешенные задачи. Это такие стратегические решения, которые очень важны в таких соревнованиях, потому что одна ошибка может стоить очень много». Он отмечает, что команды, у которых мало опыта в тренировках и соревнованиях, часто «упираются» в какую-то одну задачу, тратя на нее несколько часов: «Но задач-то 12, и, потратив три часа на одну, остальные 11 придется решать за два часа. В итоге место такой команды будет невысоким в общей таблице». Чтобы повысить мотивацию участников, организаторы разделили команды на два «дивизиона»: «А» — это опытные команды, «В» — это те, кто только начал заниматься олимпиадным программированием. По итогам тренировок награждаются шесть команд: по три в каждом дивизионе. Москва—Барселона В России есть минимум два крупных центра подобных тренировочных сборов: на базе Петрозаводского госуниверситета и в МФТИ. Сборы в МФТИ как раз и переросли сначала в проект Moscow Workshops, а с этого года тренировки проводятся совместно с европейским технологическим университетом Harbour.Space, который находится в Барселоне. В этом городе тренировки будут проходить минимум два раза в год в течение десяти лет. Это будут единственные тренировки такого масштаба в Европе. Их проведение именно в Барселоне организаторы объясняют логистикой — не все могут, да и хотят доехать до России: «Если на географию посмотреть, из Северной и даже Южной Америки сюда относительно близко лететь. Европейцам вообще очень близко, и даже коллегам с Дальнего Востока». Кроме того, в течение десяти лет университет Harbour.Space и Moscow Workshops планируют организовать тренировочные лагеря в Австралии, Аргентине, Индии, Китае, Сингапуре и США. «В МФТИ мы начали внутренние тренировки в 2010–2011 годах, а открытыми мы стали только в 2012-м,— вспоминает Алексей Малеев.— Во многом мы переняли опыт у наших коллег в Петрозаводске, где такие сборы были запущены раньше. Около семи-восьми лет назад в университете мы начали активно развивать направление Computer Science, а это специальные программы бакалавриата, магистратуры, это набор выпускающих базовых кафедр, связанных с этой тематикой, и, конечно же, начали заниматься чемпионатом ICPC, потому что в каком-то смысле это независимый критерий оценки качества наших студентов». С 2014 года Moscow Workshops стали проводить тренировки на английском языке. «После этого стало существенно расти число команд из других стран, которые приезжали к нам на тренировки: 8, 11, 13 и так далее,— рассказывает организатор.— Сейчас у нас 150 участников из 27 стран. И наша идея еще в чем. В том, чтобы совместить путешествия и обучение. Сегодня студент может выбирать: он поедет сюда, в Барселону, или к нам, в Москву. И я ему рекомендую съездить и туда, и туда». Алексей Малеев отмечает, что ИТ — молодая, быстроменяющаяся индустрия: «Соответственно, и образование меняется. И лучшие тренеры — это вчерашние студенты-чемпионы. Так мы и стоим историю с Moscow Workshops: сейчас кто-то из вчерашних выпускников работает в университете, кто-то в индустрии, кто-то живет в Москве, в Питере, в Цюрихе, в Мюнхене, но всем нам интересно встретиться вместе на несколько дней, приятно обменяться мнениями и поделиться опытом с молодежью. Так мы выстраиваем все наши программы: это сборная солянка из людей, которые завоевывали медали не так давно и сегодня приезжают тренировать». «Нам хотелось показать российскую школу лицом,— рассказывает основатель университета Harbour.Space, организатор тренировочного лагеря в Барселоне Светлана Великанова.— В прошлом буткэмпе (тренировочном лагере.— “Ъ”) лагере в дивизионе "А" победила японская команда. Члены ее команды, оказывается, изучают русский язык. Они объяснили, что хотели выучить язык, чтобы пообщаться с русскими программистами, с теми, кто доминирует в чемпионате мира». «Организуя тренировки здесь, мы хотели показать то, что у нас, в России, есть самое лучшее из сохраненного после развала СССР,— объясняет она.— Этот же принцип работы и самого университета. К нам многие преподаватели из России приезжают вахтенным методом: из Высшей школы экономики, из МГУ, из МФТИ, сотрудники "Яндекса", "Касперского". Но к нам приезжают и со всего мира, в том числе из Силиконовой долины в США. И представители индустрии видят и комментируют наши программы, говоря, какой курс хорошо было бы добавить. И они видят наших студентов, знают их не понаслышке. И на тренировках у нас тот же принцип взаимодействия с компаниями». Во время работы тренировочного лагеря для участников также организуются встречи с представителями ИТ-индустрии, сотрудниками Google, IBM, Amazon, лекции читают представители Сбербанка, участники обсуждают свои стартапы с инвестором университета, главой компании SDVentures Дмитрием Волковым, одним из спонсоров является и крупная HR-компания Indeed. «Ребята, которые здесь сидят, а тем более те, кто завоевывает медали в ICPC, если захотят найти работу по найму, для них открыты двери почти всех компаний в любой точке мира,— говорит Алексей Малеев.— Первая золотая медаль МФТИ (в ICPC объявляется не только победитель, но и вручается по четыре золотых, серебряных и бронзовых медали) — это мой ученик Яков Длугач, тогда физтех завоевал две золотые и одну серебряную медали. На пятом курсе, а у нас шесть лет длится обучение, он завоевал медаль. У него шестой курс, он путешествовал по всему миру и смотрел, где ему комфортнее жить, так как понимал, что его возьмут в любую компанию. И у него была мечта с детства: он хотел получить лицензию пилота. Он понял, что самая комфортная инфраструктура для этого в Цюрихе, так как там много аэроклубов. И он пошел работать в Google Europe». В финале чемпионата ICPC один студент может участвовать только дважды. Однако потом, по словам Алексея Малеева, участники соревнований часто продолжают работать вместе: «Я большинству советую сохранить те связи, которые они здесь приобрели. Они же мыслят одинаково. И потом им будет гораздо проще собирать команду, но уже настоящую, реальный проект в реальной компании. В России, например, пример тому "ВКонтакте" — разработка почти полностью сделана бывшими участниками ICPC. А коллеги из Штатов нам говорили, что они уже знают как минимум 300 компаний, которые основаны выпускниками ICPC». «И еще они возвращаются сюда в качестве тренеров, а мы с удовольствием их приглашаем,— сказал он.— Но продолжать этим делом заниматься всю жизнь, наверное, все же неправильно, нужно из спорта перерастать и делать следующие шаги».