«Собирать всех ИТ-специалистов в одном месте в России не нужно» — Руководитель Центра развития ИТ-образования МФТИ о том, как в вузе готовят чемпионов олимпиад

В мае 2016 года на Пхукете прошёл финал международной студенческой олимпиады по программированию ACM ICPC 2016, золотые медали на котором взяли команды сразу двух российских вузов — СПбГУ и МФТИ.

Редакция vc.ru побеседовала с руководителем Центра развития ИТ-образования МФТИ Алексеем Малеевым — о том, в чём российские «олимпиадные» программисты превосходят западных коллег, зачем большому бизнесу победители олимпиад, как проводится подготовка к соревнованиям и какие задачи участники решают в финалах состязаний.

vc.ru: Начнём с самого интересного — в чём российские «олимпиадные» программисты превосходят западных?

Алексей Малеев: На самом деле, сейчас в мире есть четыре сильные школы в спортивном программировании: российская (все русскоговорящие страны), польская, восточная (Китай, Япония) и северо-американская.

b3b7d1442b983b.jpg

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

В дополнение к этому за последние два десятилетия в целом в России удалось выстроить сильную подготовку уже специально по программированию. Например, начиная с 2000 года российские студенты уже 10 раз становились чемпионами мира во всемирных соревнованиях ACM ICPC.

Почему среди победителей нет, например, французов, если всё завязано на математике? Во Франции всегда была сильная математическая школа. Сейчас уже нет? Или техническая слабая?

Сложный вопрос. Мне кажется, не менее важной составляющей успеха является мотивация и трудоспособность.

Большинство наших тренировок проходит по выходным, поскольку подготовка к олимпиадам не «вшита» в обязательную учебную программу вуза. Наши студенты вместе со студентами Андрея Лопатина (тренер команды СПбГУ — прим. ред.) в течение года участвуют в примерно 10 различных выездных чемпионатах, а также 3–4 раза в году в тренировочных сборах. Отчасти это проходит в ущерб занятиям в университете, и ребятам после приходится наверстывать упущенное.

Во Франции система соревнований по программированию не настолько развита, студенческие соревнования по программированию национального уровня не проводятся.

В чем заключается разница в подготовке «олимпиадных» и «промышленных» программистов?

Вы абсолютно правильно здесь отметили, что «олимпиадный» код существенно отличается от «промышленного». Второму мы обучаем всех студентов в рамках обязательных курсов, и это правильно, поскольку именно эти навыки им необходимы для дальнейшей карьеры разработчиков в ИТ-индустрии. Эти же знания являются базой и для решения олимпиадных задач, но только их недостаточно.

А вот «олимпиадному» мы учим только желающих — тех, кто готов рискнуть, в первую очередь своим свободным временем на протяжении нескольких лет, и погрузиться в мир олимпиад.

Что рискующий получит взамен? Что дадут олимпиады тем, кто достигнет каких-то успехов, но в сборные так и не пробьется?

Я могу чётко выделить здесь три причины, почему стоит заниматься спортивным программированием:

  • Во-первых, это дополнительное развитие для самого студента, которое включает и новые алгоритмы, и soft skills, и более широкий взгляд на подходы к программированию. Например, коллеги из «ВКонтакте» рассказывали, что в авральных ситуациях их выручает как раз «олимпиадный код».
  • Во-вторых, олимпиады дают возможность реализовать свои амбиции, посоревноваться друг с другом. Несмотря на относительно небольшое число студентов на Физтехе (около 6500 человек), число участников первого отборочного тура — чуть ли не максимальное среди вузов России. В этом сезоне в московском четвертьфинале приняла участие 71 команда из МФТИ, а это 213 студентов (в командах ровно по три человека). Доходит до того, что команды состоят из ребят, проживающих вместе в общежитии, которые отстаивают честь своей комнаты.
  • И наконец, олимпиады помогают в старте карьеры. На всех без исключения этапах, от университетских чемпионатов до всемирного финала, работают представители ИТ-индустрии, в первую очередь, из HR. Они следят за ребятами и многих приглашают на практики и стажировки, и далеко не только чемпионов. Я бы даже сказал, не столько победителей, поскольку за их сердца ещё придется посражаться, сколько крепких «середнячков», коих гораздо больше.

Напоследок можно добавить, что олимпиады помогают студентам путешествовать по миру, знакомиться с новыми городами и странами. Помимо основного чемпионата ACM ICPC, который во многом определил стандарт подобного рода соревнований, проводятся множество соревнований по таким же или аналогичными правилам.

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

Мы в кампусе в Долгопрудном ежегодно организовываем Московский фестиваль спортивного программирования в рамках международной олимпиады на Кубок им. И.Н. Векуа. Эта олимпиада объединяет программистов нескольких стран, она одновременно проходит в городах, где прошли плодотворные творческие годы Ильи Несторовича Векуа (советский учёный-математик — прим. ред.): Тбилиси (Грузия), Санкт-Петербург, Москва, Новосибирск, а также Харьков и Винница на Украине.

Помимо университетов большие открытые чемпионаты организовывают крупные компании: Top Coder Open, Google Code Jam, VK Cup, «Яндекс.Алгоритм». Бывает, что организаторами одновременно выступают и вуз, и представители индустрии, как в случае с Russian Code Cup, в организации которого активно задействованы петербургский университет ИТМО, Саратовский государственный университет и крупнейший российский ИТ-холдинг Mail.Ru Group. Финальные туры этих соревнований проходят в разных городах и странах.

Расскажите, как к чемпионату готовилась команда МФТИ. Как отмечали победу?

Для нас во многом эта трудовая победа. Мы запустили подготовку к студенческим олимпиадам по программированию пять лет назад и постепенно поднимались в итоговых таблицах. С тех пор мы стали регулярно выходить в финал ACM ICPC, но лишь однажды и довольно случайным образом нам удалось попасть в число медалистов. В этом году благодаря поддержке ректора МФТИ Николая Николаевича Кудрявцева мы произвели кардинальные организационные преобразования, что позволило привлечь в университет на штатные позиции наших молодых выпускников.

Сезон 2015/2016 принёс нам много новых достижений на пути к золотым медалям ACM ICPC. В этом учебном году студенты МФТИ впервые стали чемпионами Москвы, обойдя всех преследователей на Московском четвертьфинальном этапе. В декабре впервые поднялись на третью строчку в полуфинале NEERC, в котором были представлены сильнейшие университеты стран бывшего СССР. Далее начался семестр подготовки к финалу ACM ICPC, в рамках которого мы впервые выиграли Чемпионат Урала, проводимый в Уральском федеральном университете. По уровню этот чемпионат сравним с финалом ACM ICPC, поскольку в нём участвуют многие из команд-финалистов России и Китая. И, наконец, финал.

После такого года отмечать победу ребята отправились в недельный тур по Таиланду, коль уже прилетели в эту страну.

Как вычислить хорошего олимпиадника среди студентов? Какие навыки, признаки его отличают?

Здесь крайне важен опыт участия в школьных олимпиадах по информатике. Довольно часто успехов в студенческих соревнованиях добиваются ребята, которые начинали участвовать в олимпиадах еще в школе, и не потеряли мотивацию ко времени поступления в университет.

В то же время, на мой взгляд, мотивация, и как следствие огромный кропотливый труд по «прорешиванию» тысяч задач являются ключевым залогом успеха. Мы давно знакомы с Андреем Лопатиным — наши студенты провели вместе не один чемпионат и не один десяток тренировочных сборов — команды СПбГУ зачастую лидируют в номинации «дорешивание».

e4b148d0916b66.jpg

Дорешивание — решение задач, которые не смогли решить во время тренировки. Обычно после тренировочного раунда проходят разборы предложенных заданий, тренеры рассказывают, какой алгоритм можно было бы применить в том или ином месте. А далее ребятам необходимо реализовать эти алгоритмы в программном коде. Работа многим студентам может показаться скучной и бессмысленной, мол, и так всё понятно, зачем время тратить? Однако в это время они полностью осознают алгоритм и получают практический навык его реализации.

Как устроен отбор студентов в МФТИ?

На Физтехе есть традиция торжественного собрания 31 августа — последнего дня каникул. В этот день ректор собирает всех вновь поступивших первокурсников, поздравляет их с вступлением в ряды физтехов, и рассказывает, как будет устроена их жизнь в МФТИ. В этот же день мы приглашаем всех желающих на первую тренировку — у нас всё добровольно.

Как правило, на это занятие приходит сперва 50–60 человек, через месяц остается около 20, которые реально готовы заниматься. А далее этих ребят ожидает объединение в команды, спецкурс «Алгоритмика» по субботам, еженедельные тренировки по воскресеньям, подготовка к четвертьфинальному, первому, отборочному этапу ACM ICPC и многое-многое другое.

Как такие программисты могут пригодиться в промышленных масштабах и могут ли? Кажется, они ориентированы скорее на решение узких задач.

Безусловно, победы такого уровня гарантируют потрясающий старт карьеры. Для победителей открыты двери в любые компании в мире — они сами теперь могут выбирать организацию, а не участвовать в отборах, проводимых HR-специалистами. И в то же время я уверен, что лучший путь для этих ребят — собственные компании.

Медаль Всемирного чемпионата является подтверждением высокого уровня развития многих навыков. Работа в команде, эффективная работа вне зоны собственного комфорта, мобилизация сил в стрессовых ситуациях, уверенность в собственных силах, склонность к оправданному риску. Этот перечень во многом перекликается с необходимыми компетенциями технологических предпринимателей.

a3968b2e514b06.jpgМарина Даньшинаруководитель образовательных проектов Mail.Ru Group

В рамках образовательного направления Mail.Ru Group мы проводим различные чемпионаты, в том числе чемпионат по спортивному программированию Russian Code Cup. Это самый первый чемпионат, который мы запустили, и в этом году будем проводить уже в шестой раз.

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

Так как ребята, которые занимаются олимпиадным программированием, посвящают этой деятельности огромное количество времени, у большинства из них нет возможности ознакомиться с потенциальными работодателями. Поэтому мы с радостью участвуем в мероприятиях, где есть возможность рассказать о наших подразделениях (среди которых три социальные сети, два мессенджера, картографический сервис, почта, поисковая система и другие) и конкретных задачах, которые решаются в процессе работы.

ce8d78726e92afd400e8.jpg«Яндекс»пресс-служба

В «Яндексе» работает много участников и победителей олимпиад по спортивному программированию. Они очень хорошо понимают, что такое прорыв и как справиться с нестандартной задачей.

Максим Бабенко, золотой медалист ACM, руководит разработкой системы распределенного хранения и обработки данных, использующейся во всём «Яндексе». В его команде работают и другие олимпиадники — Игнат Колесниченко, Максим Ахмедов.

Алексей Гусаков, вице-чемпион мира по ACM ICPC, стал одним из ключевых участников команды «Яндекса», которая занимается качеством поиска. Андрей Стыскин, один из руководителей направления поисковых сервисов в «Яндексе», тоже постоянно участвовал в чемпионатах по спортивному программированию.

Алексей Сикорский руководит офисом «Яндекса» в Минске и одновременно с этим — сервисом «Яндекс.Толока». Сикорский уже примерно 10 лет является членом жюри олимпиады по информатике в Белоруcсии, а до этого участвовал в ACM ICPC. Вообще, существенная часть минского офиса, а там и поиск разрабатывают, и карты, — это олимпиадники.

В «Яндексе» есть небольшая команда, в которой в разное время было сразу несколько золотых медалей международной математической олимпиады школьников (Владимир Дремов, Андрей Халявин, Виктор Омельяненко, Илья Кацев, Алексей Поярков). Они занимаются метриками качества поиска и основной технологией машинного обучения в «Яндексе» — MatrixNet.

В 2009 году команда, в основе которой были олимпиадники, полностью переделала всю аналитическую часть «Яндекс.Пробок» (Гольдштейн, Левин, Колесниченко, Петров). «Яндекс» с 2011 года проводит ежегодный чемпионат по спортивному программированию — «Яндекс.Алгоритм».

И нам известны примеры состоявшихся молодых российских и зарубежных компаний, ядро которых сложено из ветеранов сообщества ACM IСPC: AIM TECH, Looksery, целый пул проектов Botan Investment и многие другие. Зачастую эти организации активно поддерживают развитие студенческих олимпиад.

Мне кажется, что в проектах типа Looksery силы распределены так: инвестор давал задачу реализовать определённую технологию, ребята программировали. Сложно представить, что такие специалисты могут планомерно сидеть и самостоятельно прорабатывать стратегию, рисовать планы, исследовать рынок. Их область — быстрый и эффективный поиск решения. Как вы считаете?

Отчасти я согласен с таким распределением труда в Looksery, идея бизнеса, скорее всего, родилась у Виктора Шабурова (российский предприниматель и инвестор — прим. ред.) и его ближнего окружения.

С другой стороны, участие в этом проекте никак нельзя назвать работой по найму. Перед разработчиками стояла амбициозная задача, у них было много свобод, от них требовались новые технические решения, без которых проект не состоялся бы. И если уж посмотреть на формальную сторону работы команды Looksery, то большинство её членов получили свою долю в проекте.

Расскажите, как устроено обучение в школе программирования МФТИ. Чем занимаются участники, кто туда может попасть?

В первую очередь стоит рассказать про обучение компьютерным наукам в МФТИ. Поскольку это повествование может стать темой отдельной беседы, постараюсь указать лишь ключевые моменты. Соответствующие учебные программы мы запустили пять-шесть лет назад. И обучение по ним идет в соответствии с основными принципами «Системы Физтеха»:

  • Особое внимание уделяется работе с талантливыми школьниками по всей стране. И в последние годы победители финала Всероссийской олимпиады довольно часто выбирают именно Долгопрудный для дальнейшего обучения.
  • Сами учебные курсы по программированию ведут преподаватели-совместители, разработчики из ведущих компаний российской ИТ-индустрии, а программа обучения в бакалавриате включает крайне насыщенную фундаментальную подготовку по математике и Computer Science, включая глубокую теоретическую подготовку.
  • Большинство выпускающих кафедр базируются в тех же ИТ-компаниях, где студенты проходят специализацию и вовлекаются в реальные проекты, по материалам которых защищают свои дипломные работы. Среди них крупнейшие в России «Яндекс» и Mail.Ru Group, ABBYY, 1С, «Когнитивные технологии», «СберТех», Parallels, Acronis и многие другие. Эксперты от индустрии активно вовлечены во все сферы образовательного процесса и влияют на принятие решений внутри университета.
  • Параллельно мы в Центре развития ИТ-образования МФТИ ведём работу с олимпиадниками, проводим еженедельные семинары и тренировки. Проводим международные воркшопы и школы на базе кампуса в Долгопрудном, на которые приглашаем школьников и студентов со всего мира.

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

Теоретическая подготовка в МФТИ как-то отличается от подготовки в МГУ, в СПбГУ? Есть какие-то интересные кейсы?

Конечно же, у каждого сильного университета свои программы, а у каждой программы есть свои особенности. Например, мы на Физтехе в обязательной части программы на младших курсах делаем упор на математику, включая классические дисциплины непрерывной математики, такие как математический анализ, алгебра, аналитическая геометрия, дифференциальные уравнения, ТФКП — эти курсы есть практически во всех учебных программах. Кроме того, в число обязательных предметов входят комбинаторика и теория чисел, теория вероятностей, математическая статистика и другие.

Одновременно мы учим алгоритмам, но не даём многообразие языков программирования, а первые четыре — все четыре семестра — используем C и C++, посредством которых обучаем студентов процедурно-ориентированным, объектно-ориентированным подходам, промышленному программированию.

Освоение такого огромного объема требует от студентов колоссальной трудоспособности и умения эффективно распоряжаться своим временем.

Как ИТ-компании и эксперты вовлечены в обучение студентов? Принимают участие в заседаниях кафедр, составляют программы?

Формат выпускающей базовой кафедры подразумевает обучение на старших курсах и руководство студенческим НИР в рамках реальных проектов. Как правило, на Физтехе заведуют базовыми кафедрами первые лица этих организаций. Например, в ABBYY — Сергей Андреев, генеральный директор; в 1С — Борис Нуралиев, директор и основатель.

Специалисты из индустрии активно участвуют в преподавании и методической работе — это тоже одна из традиций, которую мы продолжаем и в компьютерных науках.

Большинство преподавателей программирования работают в МФТИ по совместительству, их основная профессиональная деятельность связана с разработкой и конструированием софта внутри индустрии. Благодаря этому у студентов МФТИ появляется еженедельный контакт со специалистами, которые находятся на фронтире развития технологий.

Как устроены воркшопы?

Мы приглашаем студентов и тренеров из российских и зарубежных университетов. В настоящее время проводим их дважды в году в партнерстве с Санкт-Петербургским университетом ИТМО на кампусе в Долгопрудном. В рамках воркшопа студенты могут с головой погрузиться в олимпиадное программирование: ежедневно проходят соревнования в условиях, максимально приближенным к боевым, по вечерам — разборы задач и лекции по алгоритмам.

3b45872e2610cd.jpg

За четыре года к нам стали приезжать сильнейшие студенты из примерно 60 ведущих в области Computer Science университетов из 20 стран. В этому году 8 из 12 команд, которые завоевали медали на финале Всемирного чемпионата ACM ICPC, включая чемпионов из СПбГУ, прошли подготовку на наших сборах. Мы запустили в России Всемирный тренировочный центр олимпиадного программирования, уникальный по географии охвата университетов и уровню подготовки.

Приезжают ли известные спикеры? О чём рассказывают? Хантят специалистов?

У нас много партнеров из индустрии, в первую очередь из Mail.Ru Group и «Яндекса» — крупнейшие ИТ-компании России, отечественные компании AIM TECH, НИКС, а также международные Looksery, WorldQuant, JetBrains, Facebook. Они активно задействованы в содержательной программе воркшопов.

Например, к нам приезжали с лекциями Рохит Агарвал — вице-президент компании WorldQuant по исследованиям; Михаил Левин — заместитель руководителя службы баннерной системы «Яндекса» и многие другие.

Лекторы из индустрии зачастую рассказывают участникам о современных трендах в отрасли и о передовых технологиях, применяемых на практике. Многие из их них прошли олимпиадную подготовку: Михаил Левин, к слову, является бронзовым медалистом ACM ICPC 2007 года и серебряным медалистом 2008 года.

Хантят ли они студентов? Мне кажется, участники воркшопов могут с уверенностью рассчитывать на места в этих компаниях, и ребятам есть из чего выбирать.

Опишите программу одного воркшопа.

В первую очередь стоит сказать, что команды на наших воркшопах делятся на две лиги по уровню, причём ребята самостоятельно со своим тренером выбирают себе наиболее подходящую лигу. В лиге А представлены более опытные команды, которые уже прошли достаточную теоретическую подготовку, поэтому упор здесь делается на практику — решение большого числа интересных полноценных пятичасовых контестов.

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

Традиционный формат воркшопа подразумевает 11-дневную насыщенную программу, она складывается из трёх блоков по три рабочих дня и двух выходных между ними. Каждый рабочий день предусматривает по крайне мере одно соревнование, а иногда и пару. Другими словами, студентам за это время предлагается решить не менее 100 сложных задач.

Иногда мы предлагаем ребятам «блиц-контесты», когда времени отводится всего 2–3 часа, при этом предлагаются либо только простые, либо исключительно сложные задачи. В первом случае тренируется старт реального сорвенования — время, когда командам необходимо отобрать простые задачи и как можно быстрее по возможности без штрафных попыток их решить. Во втором случае — финиш соревнования: ко второй половине как правило остаются нерешенными сложные задачи, собственно, они во многом определяют распределение команд в верхней части турнирной таблицы. За любым контестом следует разбор задач, а также лекции от партнеров из индустрии. Вечера отводятся на дорешивание.

Работая в таком режиме, стоит обязательно научиться отдыхать. В выходные дни мы часто посещаем московские офисы ИТ-компаний, знакомимся изнутри с миром профессиональных разработчиков. Играем в разные квесты, посещаем интересные выставки и музеи. Например, весной этого годы мы побывали в историческом парке на ВВЦ «Россия — моя история».

Общая концепция такого формата была обкатана ещё в Петрозаводском государственном университете. На Физтехе в подмосковном Долгопрудном компактно расположены учебные корпуса и студенческие общежития, лабораторные здания и спортивные сооружения, которые полностью заполняют два квартала.

Какие задачи решают на олимпиадах? Можно несколько конкретных примеров.

Ярким примером заданий может послужить вариант финального соревнования этого года. Стоит добавить, что задача I поддалась только одной команде, а H вообще осталась невскрытой.

Почему, если у нас такая хорошая школа разработки, мы никак не можем создать свою Долину?

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

К сожалению, мы наблюдаем существенный дефицит кадров на рынке труда в данной отрасли, что и тормозит развитие. Причём основная причина кроется не в формальном количестве выпускников по тем или иным направлениям подготовки, а в качестве образования. Чтобы преодолеть этот разрыв, необходимо создать условия для привлечения наиболее квалифицированных в школы и университеты.

Пойдут ли наши победители олимпиад после выпуска работать в университеты? Я могу с уверенностью сказать, что многим из них это было бы интересно при условии сопоставимых с бизнесом зарплат. Подтверждением тому служат все без исключения тренеры российских команд-медалистов: СПбГУ, МФТИ, ИТМО, УрФУ, ННГУ. В каждом из этих университетов для них созданы уникальные финансовые условия по отношению к среднестатистическим преподавателя стараниями администрации и индустриальных партнеров.

Государство как-то может способствовать установлению таких условий в других университетах? Как?

Инвестиции в сильных преподавателей в школах и вузах в интересах и бизнеса, и университета, и студента, и власти и общества в целом. Я уверен, со временем всё больше участников будет вовлечено в такую глобальную кооперацию, а ИТ-отрасль сможет превратиться в одного из драйверов отечественной экономики.

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

Возможно ли вообще собрать всех сильнейших представителей отрасли в одном месте в России? Или это фактически неосуществимо и система всегда будет оставаться такой децентрализованной?

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

Твитнуть
Поделиться
Поделиться

В избр.

Ком.

Статьи по теме

©  vc.ru