Создатель Codeforces Михаил Мирзаянов стал преподавать в Университете ИТМО

В Университете ИТМО преподавать курс по веб-разработке будет основатель крупнейшего портала по спортивному программированию Codeforces Михаил Мирзаянов. Он переехал в Петербург из Саратова, где почти 20 лет занимался развитием Центра олимпиадной подготовки студентов. ITMO.NEWS спросил у эксперта и нового члена ITMO.FAMILY, почему он решил сотрудничать с Университетом ИТМО, что изменилось в олимпиадном программировании в России за последние годы, зачем создавать онлайн-площадки для тренировок программистов и что мотивирует его заниматься этим делом так долго.

Михаил Мирзаянов

Вы долгое время работали в Саратовском государственном университете. Почему решили работать в Университете ИТМО?

Я уже около 10 лет развиваю Codeforces. Я совмещал эту деятельность с работой в Саратовском госуниверситете, где я был руководителем Центра олимпиадной подготовки программистов. Постепенно делать это становилось все сложнее: Codeforces как проект продолжает расти, растет и количество дел, которые нужно делать для его дальнейшего развития. Мне сложно было делегировать эти задачи кому-то еще, но при этом я не хотел, чтобы моя занятость в Codeforces сказывалась на качестве подготовки программистов в Центре. Я хотел больше сосредоточиться на Codeforces и найти партнеров по духу, кто любит спортивное программирование, кто ставит перед собой профессиональную задачу развивать эту область.

Здесь, в Петербурге, в Университете ИТМО, очень много талантливых и небезразличных людей, которые занимаются спортивным программированием так же увлеченно, как и я. Ранее я ежегодно приезжал в Университет ИТМО на полуфиналы ACM ICPC, и атмосфера в университете очень мне импонировала. Я каждый раз испытываю радость, когда захожу в столовую вуза, а там за ноутбуками сидят студенты, которые программируют и обсуждают программирование, а не сидят во «ВКонтакте». Я уже провел первую встречу со студентами вуза, и это очень активные и заинтересованные ребята. К тому же, когда я спросил, кто зарегистрирован на Codeforces, в аудитории из 120 человек почти все подняли руки.

Какие задачи по Codeforces вы не хотели делегировать другим людям? И почему?

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

Региональный этап ACM ICPC
Региональный этап ACM ICPC

У вас интересный подход в том смысле, что сейчас, наоборот, везде продвигается система совместной работы над проектами, по типу той же agile.

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

Почему вы будете преподавать именно веб-разработку? Как вы выбрали, чем заниматься в Университете ИТМО?

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

Чем еще вы планируете заняться в Петербурге в вашей профессиональной области?

Мне будет интересно присоединиться в работе жюри олимпиад по программированию в Санкт-Петербурге. Это будет отличная возможность познакомиться с профессиональным сообществом города в области программирования.

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

Серебряные призеры ACM ICPC-2002 из Саратова. Справа Михаил Мирзаянов. Источник: codeforces.com
Серебряные призеры ACM ICPC-2002 из Саратова. Справа Михаил Мирзаянов. Источник: codeforces.com

Здесь я могу смотреть и в большей перспективе, так как занимаюсь этим уже почти 20 лет. За это время очень сильно вырос профессионализм: увеличилось количество человеко-часов, которое нужно потратить на тренировки по решениям задач, чтобы выйти в финал чемпионата мира или просто успешно выступить на олимпиаде. Это произошло по причине увеличения интереса к спортивному программированию во всем мире и появлению тренировочных ресурсов, среди которых и Codeforces. Мне сложно оценить, как ситуация менялась в Петербурге, но по своему опыту могу сказать, что именно в последние годы наблюдается локальное ослабление интереса к олимпиадному программированию у студентов. Дело в том, что у них появилось больше возможностей показать свои способности с помощью различных стажировок в компаниях. То есть раньше было не так много возможностей продемонстрировать перед потенциальными работодателями свои навыки. Возможно, это актуально лишь на каком-то локальном уровне некоторых российских вузов, ведь аудитория Codeforces только растет, а в чемпионате мира принимают участие все больше команд.

Также довольно сильно на развитие области спортивного программирования, особенно в регионах страны, повлияло то, что с появлением ЕГЭ больше талантливых школьников получили возможность уехать продолжать учебу в крупные города, в Петербург или Москву. Поэтому региональным вузам становится сложнее участвовать в том же ICPC и побеждать. Хотя региональные вузы по максимуму используют те ресурсы, которые у них есть: проводят олимпиады, тренируют студентов, работают со школьниками. И наконец, за последние годы существенно развилась научная составляющая олимпиад по спортивному программированию: появляются подходы, которые раньше не использовались. Например, раньше о персистентных структурах данных никто не знал, а теперь с ними знакомы участники школьных олимпиад.

А вы не думали как-то перепрофилировать Codeforces, чтобы это была интересная площадка и для тех, кто уже немного «подостыл» к олимпиадному программированию?

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

Платформа Codeforces
Платформа Codeforces

Как вы думаете, насколько людям сейчас, не связанным непосредственно с IT, необходимо обучаться базовым навыкам в этой области? Например, с этого года в Университете ИТМО стартует блок дисциплин «Цифровая культура», по которому все студенты пройдут блок дисциплин по базовым навыкам в IT.

Об этом сложно рассуждать, не проанализировав результаты подобных инициатив. Безусловно, существуют некоторые знания, которые важно преподавать всем и даже в школах, например, про культуру пользования интернетом и безопасность в сети: зачем нужна двухфакторная аутентификация, должны знать все. Это точно так же, как на всех направлениях подготовки в вузах студентов обучают философии. Казалось бы, зачем? Но грамотному человеку нужно понимать хотя бы на базовом уровне этот предмет. То же самое, возможно, и со знаниями в области IT. Хотя в первый год и преподавателям, и студентам может быть сложно подстроиться под новую систему, а также найти правильные методики преподавания материала.

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

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

Команда Саратовского государственного университета на ACM ICPC в 2016 году
Команда Саратовского государственного университета на ACM ICPC в 2016 году

Затем я обнаружил для себя, что мне очень интересно делиться знаниями, учить как школьников, так и студентов. Я взял на себя роль тренера команд Саратовского государственного университета, стал много работать со школьниками Саратова, проводил олимпиады. Интерес распространению этих знаний за эти годы ничуть не угас, скорее вышел на новый уровень. Я глубоко убежден, что все те навыки и знания, которые ребята получают в процессе подготовки и участия в соревнования по программированию имеют значительную собственную ценность. Хорошее понимание алгоритмов и структур данных, высокая техника программирования, умение искать решения к сложным задачам, концентрироваться на результате и работать в команде – все это важные и полезные умения, они обязательно явно или неявно пригодятся в будущей профессиональной деятельности сегодняшним участникам. Абсолютная уверенность в том, что, развивая олимпиадное движение, я помогаю интересующимся все это получить, дает мне ежедневную мотивацию развивать соревнования по программированию.

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

Для меня большое значение имеет мотивация: это принципиально, что ты с радостью идешь на работу. Не должно быть так, что ты себя заставляешь это делать. В год, когда я только вернулся в вуз из индустрии, команда Саратовского госуниверситета неудачно выступила на ICPC. Мне было грустно думать, что умные и талантливые ребята не смогли хорошо показать себя на соревнованиях. Несмотря на то, что я ушел из университета, я чувствовал ответственность за то, что происходит с олимпиадным программированием СГУ: мы в ответе за тех, кого приручили.

Кроме того, именно тогда я начал плотнее работать с Codeforces. И я понимал, что если хочу заниматься этим проектом профессионально, то совмещать его с работой в индустрии будет сложно. Моя работа в вузе в качестве руководителя Центра олимпиадной подготовки – это та же предметная область, а задачи по Центру зачастую пересекались с моими планами по развитию Codeforces.

Региональный этап ACM ICPC
Региональный этап ACM ICPC

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

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

Какой личностный рост вы испытываете, развивая Codeforces и олимпиадное программирование?

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

Codeforces – это крупнейший портал по спортивному программированию, на котором выкладываются тренировочные задачи, проводятся собственные соревнования, а также появляются новости и статьи в области IT. Сегодня на портале зарегистрировано порядка 750 000 аккаунтов. Около 45000 пользователей принимали участие в соревнованиях на портале хотя бы раз за последние полгода. Ежемесячная аудитория – около 350000 пользователей (по данным Google Analytics).

Редакция новостного портала
Архив по годам:
Пресс-служба