Спортивное программирование — это не про силу, а про интеллект. Отличная стартовая платформа для тех, кто мечтает связать свою профессиональную карьеру с IT-сферой.
Здесь, как и в любом спорте, чем раньше начнешь, тем больше шансов достичь успеха. Учиться программировать можно уже в начальной школе.
Я магистр математики и компьютерных наук, окончил УрФУ, кандидат наук в области алгоритмов. Призер Всероссийской олимпиады школьников по информатике 2007 года. Бронзовый медалист студенческого чемпионата мира по программированию (ICPC) 2011 года.
Автор и лидер проекта олимпиадных лагерей по информатике для Свердловской области, основатель и руководитель собственной онлайн-школы по программированию. Тренер трех команд УрФУ, которые стали призерами чемпионата мира. Сейчас занимаюсь организационными вопросами в сообществе спортивных программистов Свердловской области.
Синоним спортивного программирования — олимпиадная информатика. Здесь есть две составляющие: идея и программа, которая реализует ее в компьютерном коде.
Со стороны соревнования выглядят не очень зрелищно. Команда из трех человек сидит у одного компьютера и пять часов решает как можно большее количество задач из 10-12 предложенных. Важную роль играет тактика. Основную часть времени сокомандники общаются: двое решают задачу, записывая идею на листочке, а третий сидит за компьютером с другой. Как только идея появилась, кто-то садится писать программу, а двое оставшихся начинают обсуждать следующую.
У задачи есть ограничение времени (с какой скоростью программа выдает ответ) и памяти (сколько она может потреблять «оперативки»). Решение задачи — это программа на 100–200 строк кода, которую проверяет система. Ошибкой может стать то, что выдан неправильный ответ или программа срабатывает дольше, чем за секунду. Тогда ее надо исправить.
Приведу пример такой задачи: вам нужно долететь из одного города в другой. При этом вы не хотите делать более двух пересадок и тратить на дорогу более определенного количества часов и чтобы стоимость была не слишком большая. Тут нужно написать программу, которая выберет самый дешевый маршрут из всех, которые удовлетворяют требованиям.
Пример простой задачи |
Самые крутые соревнования в спортивном программировании — чемпионат мира ICPC. По правилам, заявиться на него могут только студенты, и не более пяти раз за всю жизнь, а в финале — не более двух раз. А еще нельзя участвовать после 23 лет. Потом ты либо становишься тренером, либо уходишь в программирование или науку. 99% спортивных программистов работают в IT-компаниях.
Спортпрог — это шанс стать сотрудником крупнейшей международной компании, например, FAANG (Facebook, Apple, Amazon,Netflix, Google) и других. После окончания чемпионата мира большинство его финалистов получают приглашения пройти собеседование. Для этого надо решить задачи аналогичные спортивному программированию.
По данным CNews, cредняя зарплата приезжих разработчиков в Google, Microsoft, Apple — 140 тысяч долларов в год и больше, это примерно 10 миллионов рублей.
Раньше у сообщества спортивных программистов УрФУ была цель каждый год воспитать несколько очень крутых спортсменов. Сейчас мы сместили акцент на массовость: получить не единицы, а как можно больше ребят, пусть и не самых звездных.
Я стараюсь строить пирамиду, в которой есть новички, средние и сильные ребята. Если вдруг «звезда» ушла, то мы опустились только на одну ступень, но не упали вниз.
Вот мы отобрали 100 человек и готовим их. Двое-трое из них станут суперспортсменами, которые поедут на чемпионат мира и, возможно, привезут медали. Еще 15 поедут на чемпионат России. А остальные куда? Они хорошо сдадут ЕГЭ по информатике, станут призерами на локальных олимпиадах, без проблем поступят в вуз и станут программистами. Побочный продукт здесь — это рост количества людей в IT-отрасли. Это важно и для региона, и для страны.
Как люди попадают в спортивное программирование? Классический вариант — информатики «похищают» готовых ребят на кружках по олимпиадной математике. Они умеют выполнять идейную часть, остается только научить их программировать. Так делают почти все тренеры по информатике в стране. И мы в том числе. Но при этом выбрали другой приоритетный путь.
Сейчас берем и тех, кто знает математику только на уровне школьной программы, учим их программировать, и только потом доучиваем их необходимым разделам. И это более перспективный подход, потому что порог входа ниже. Выучить начальное программирование проще, чем олимпиадную математику.
Чтобы отобрать будущих спортивных программистов, мы проводим специальные олимпиады и приглашаем новичков на смены в лагеря фонда «Золотое сечение». Информацию об их проведении можно узнать в группе ВКонтакте спортивного программирования в УрФУ.
Фото: предоставлено 66.RU Михаилом Рубинчиком |
---|
Участники команды УрФУ на чемпионате мира по программированию – 2016 стали серебряными медалистами. |
В достижении обеих наших целей — поиска самородков и наращивания массовости — инструмент достижения одинаковый: просеять как можно больше людей. И тут мы не отказываемся от классического способа, когда берем уже готовых ребят из математических кружков.
В Екатеринбурге мы сотрудничаем с СУНЦ УрФУ, гимназией № 9 и лицеем № 130: занимаемся с ребятами, общаемся с педагогами. На базе УрФУ мы проводим много олимпиад, в том числе для новичков.
В этом году «Золотое сечение» планирует выделить 280 путевок на олимпиадную информатику. На часть смен мы отбираем людей по итогам школьных олимпиад. Часть приходит вообще без специальных знаний по математике и опыта программирования.
Результат нашей работы на массовость уже заметен. Если в 2017 году Свердловская область смогла вывести только четырех человек в финал Всероссийской олимпиады школьников, то в этом году уже 18.
Как и в любом другом спорте: чем раньше начнешь заниматься с усердием, тем лучше будет результат. Многое зависит от интереса и желания. Есть те, кто программирует уже в 3–5 классах.
По статистике большинство детей начинают в 7-8 классе, поэтому если хочется их побеждать, стоит начать в 5-6.
Самые увлеченные тратят на решение задач более 40 часов в неделю. Но таких единицы. Чтобы стать призером Всероссийской олимпиады, можно решать по 15–20 часов в неделю. Если в 9-10 классе ты попал в топ-300 по стране — это уже гарантия поступления в любой вуз России.
Алгоритм «Как вырастить спортивного программиста?» схож с тем, как вырастить успешного человека в любой другой области. Нужно сделать так, чтобы он прилагал много усилий. Лучше всего люди работают, когда у них огромная внутренняя мотивация, но таких не много.
Поэтому мы выбрали «путь настойчивости». В нашем сообществе есть команда тьюторов, которые напоминают: «Давай ты на этой неделе выберешь час, чтобы порешать задачи». И в принципе это работает. Наша задача — дать спортивному программисту как можно больше инструментов, чтобы он нашел в себе силы на большую самостоятельную работу.
Например, кто-то ленится найти себе сокомандника, это сделаем за него мы. Другой не может найти время в расписании, чтобы порешать задачи, мы смотрим вместе и находим.
Чтобы научиться решать задачи, нужно просто это делать: начать с самых простых и постепенно повышать сложность. Мы рекомендуем решать сайт timus.online.
Фото: предоставлено 66.RU Михаилом Рубинчиком |
---|
Михаил Рубинчик: «Делиться тактикой — это лишь малая часть работы тренерского штаба». |
Участие тренера в привычном «физкультурном» смысле не так важно, но все-таки требуется. Наша главная задача в том, чтобы замотивировать: «Ребята, это важно. У вас все получится. Нужно продолжать». Также я подбираю задачи для самых опытных наших команд. Для новичков это делают менеджеры, которые действуют по формальному алгоритму.
Для суперзамотивированных ребят тренер не нужен. Любую теорию и задачи можно найти в интернете.
Кроме того, я формирую составы команд к новому соревновательному сезону, который начнется в сентябре. Бывает, что два человека замотивированы, а третий — лентяй. Но они друзья. Моя задача — помочь решиться на замену.
Сейчас я руковожу тренерским штабом в УрФУ, организую процессы. Ставлю задачи командам, готовлю инструкцию для менеджера, чтобы он напоминал ребятам, что они должны делать. Мы попытались автоматизировать и масштабировать процесс.
Фото: предоставлено 66.RU Михаилом Рубинчиком |
---|
Тренерские задачи Михаила Рубинчика сродни менеджерским. |
В спортивном программировании финансовое участие родителей мотивированных ребят стремится к нулю. Они, как и тренер, могут только помочь найти силы работать или разобраться с расписанием. Суперкомпьютер тут не нужен — лишь бы не зависал при печати текста.
Если выступать на уровне Всероссийской олимпиады школьников, то можно даже заработать. Призер в Москве получает 300 000 рублей, а участник — 100 000 рублей. В Свердловской области сумма меньше, но с этого года ожидается, что именно по математике и информатике при помощи IT-компаний появятся такие же существенные премии.
Студенты, которые стали призерами чемпионата России и продолжают активно тренироваться, получают стипендию от УрФУ от 10 000 до 30 000 в месяц.
Деньги на развитие спортивного программирования поступают из нескольких источников. Часть выделяет УрФУ, часть — IT-компании. Путевки в «Золотое сечение» — за счет бюджета Свердловской области.
Кроме того, у нас есть эндаумент-фонд, который формируется за счет безвозмездных пожертвований частных лиц и IT-компаний. За полтора года мы собрали 18 млн рублей. Проценты с этого счета будут идти на подготовку к соревнованиям.
Пик карьеры спортивного программиста — выход в финал чемпионата мира. Но прежде предстоит пройти через квалификационный тур, четвертьфинал в Екатеринбурге, полуфинал в Санкт-Петербурге.
Чемпионат мира каждый год проходит в новой стране. Россия уже дважды принимала эти соревнования у себя, в том числе в Екатеринбурге в 2014 году.
Чтобы отобраться на чемпионат мира, надо работать несколько лет. Члены команды УрФУ по спортивному программированию собираются два раза в неделю и по пять часов решают задачи. Все происходит в таком же точно формате, как соревнования. Плюс ежегодные три-четыре поездки на сборы.
Фото: предоставлено 66.RU Михаилом Рубинчиком |
---|
Чемпионат мира ICPC-2014 в Екатеринбурге |
Первые команды УрФУ по спортивному программированию 6 раз становилась призером чемпионата мира ICPC. Главная причина успеха в том, что мы умеем привлекать сильных абитуриентов. На сегодня все они — студенты и выпускники матмеха УрФУ. В других региональных вузах это не удается. Поэтому конкурируем мы сейчас в основном со столичными. Была еще в 1998 году команда УПИ — они первыми среди российских регионов попали на чемпионат ICPC.
Уральскую школу программирования от прочих отличает система тренировок. Мы рекомендуем много решать архивы задач: взять 1000 задач и посвятить им 5 лет.
Спортивный программист должен уметь работать в команде, учиться решать задачи разными способами, терпеливо и внимательно перечитывать условия и решения, обсуждать с сокомандниками. Азарт создает мотивацию, но он может помешать тактике, которая заключается в том, чтобы решить как можно больше задач.
Вам понравилось? Еще больше классных новостей и историй — в нашем Telegram-канале. А еще любую публикацию там можно обсудить. Или, например, предложить нам свою новость. Подписывайтесь!