Обычный программист разрабатывает программы, сервисы, игры — в зависимости от специализации компании. Реализация таких проектов занимает недели или даже месяцы — это обычная схема разработки программного обеспечения с конкретными прикладными задачами.
Спортивное, или олимпиадное программирование, кардинально отличается от обычного. Здесь нужно не просто найти решение проблемы, а сделать это максимально быстро. Лучшие разработчики формируют команды и отправляют их на контесты национального или международного масштаба, где за короткий срок требуется решить сложнейшие алгоритмические задачи.
|
---|
В среднем на решение одной задачи у сильных команд уходит от 10 минут до получаса. Как правило, участникам соревнований отводится 5 часов времени для решения 10–12 задач. Задания для контестов придумывают профессиональные разработчики с многолетним опытом и бывшие конкурсанты. Они используют практические кейсы и проблемы, поэтому спортивное программирование не оторвано от реальности, хоть и отличается от обычного.
В России и мире проводятся сотни чемпионатов для «спортсменов». Среди них наиболее значимые — студенческий чемпионат ICPC, а также Google Code Jam, Hash Code, TopCoder Open и VK Cup. Соревнования помогают налаживать связи в сообществе и прокачивать навыки. Немаловажную роль играют и денежные призы. Например, первая тройка победителей Google Code Jam получают вознаграждение в размере от $1000 до $15 000.
Насколько развито спортивное программирование в России
Первый в мире чемпионат по программированию, ICPC, проведен в США в 1977 году, а российские конкурсанты стали выступать на первенстве с 1993 года. Менее чем за 30 лет команды из России вышли в лидеры — сегодня они получают призовые места на большинстве крупнейших контестов по олимпиадному программированию. Так, на студенческом чемпионате мира ICPC российские разработчики с 2000 года завоевали 33 золотых медали.
Такие результаты не случайны. Начиная с 90-х годов российские школы и вузы начали готовить программистов к соревнованиям разного уровня — начиная с небольших региональных и заканчивая международными. Программирование тогда было новым направлением, но развивалось оно быстро, во многом благодаря сильной математической школе, которая сформировалась в советские времена.
Постепенно спортивный кодинг выходил за пределы Москвы, где лидером движения выступал МФТИ. Именно этот московский вуз занялся организацией мастер-классов в регионах, а затем и в других странах.
|
---|
— С 2012 года успешно работает проект Moscow Workshops, зародившийся на базе кампуса МФТИ. Он представляет собой сеть коротких учебных программ. С момента основания в них уже отучились более 3000 студентов и старшеклассников из более чем 60 стран, — рассказывает проректор МФТИ Алексей Малеев.
В апреле состоялся первый обучающий онлайн-фестиваль по искусственному интеллекту и алгоритмическому программированию Rucode, в котором приняли участие более 10 тысяч человек, в том числе конкурсанты из 80 регионов России. Его тоже организовывал МФТИ при участии крупных IT-компаний, таких как «Яндекс» и «Мегафон».
|
---|
Российские технологические гиганты часто спонсируют соревнования. Например, «Яндекс» выступает спонсором OpenCup — Открытого Кубка им. Е.В. Панкратьева по программированию. В этом первенстве могут участвовать не только школьники и студенты, но и профессиональные программисты из России, Польши и США, в том числе действующие медалисты.
Сегодня по всей России действуют школы и кружки по спортивному программированию, а летом и зимой проводятся образовательные интенсивы и сборы для старшеклассников. Владивосток, Ижевск, Москва — география у проектов обширная. Например, в Петрозаводском государственном университете каждый год проходят зимние сборы по программированию, участники которых решают те же задачи, что и финалисты чемпионата ICPC. Движение развивается и в Новосибирске.
— С 2000 года Новосибирский государственный университет проводит Открытую Всесибирскую олимпиаду по программированию им. И.В. Поттосина, — говорит доцент Новосибирского государственного университета, старший научный сотрудник Института систем информатики им. А.П. Ершова СО РАН Татьяна Чурина.
Отборочный интернет-тур и первая номинация очного тура этой олимпиады проводятся тоже по правилам ICPC. Каждый год в контесте участвует более 1000 студентов и школьников.
RuCode — новая образовательная инициатива
— Такие чемпионаты как RuCode очень важны, — отмечает Татьяна Чурина.
Независимо от места проживания, учебного заведения, учебной программы, навыков использования языков и техники программирования, все участники знакомятся с задачами и алгоритмами работы международного уровня. Например, в курсы интенсивов фестиваля RuCode включили материал, который показался новым и полезным не только студентам, но и преподавателям вузов.
Программа мероприятий фестиваля RuCode включала открытый онлайн-курс «Быстрый старт в спортивное программирование» (доступ к нему остается открытым и после фестиваля), интенсивы по искусственному интеллекту и спортивному программированию, а также чемпионат, в котором приняли участие 2000 человек.
|
---|
Интересно, что в RuCode денежные призы предусмотрены не были.
— Когда мы занялись организацией двухмесячного фестиваля по искусственному интеллекту и программированию RuCode, то сразу решили, что денежных призов не будет. Зато будет максимальная доступность знаний и возможность бесплатного обучения у лучших тренеров, — говорит Алексей Малеев — При этом если изначально мы планировали провести фестиваль очно в 10 регионах, то из-за известных событий вынуждены были перенести все в онлайн, благодаря чему в разы увеличили количество участников. В итоге во всех этапах фестиваля приняли участие более 10 000 школьников, студентов и выпускников вузов из 80 регионов России. Более того, к нам присоединились ребята из 58 других стран.
Высокий уровень подготовки программистов из Новосибирска объясняется, в частности, преемственностью знаний. Ведь именно здесь работал академик Андрей Петрович Ершов, один из основателей теоретического и системного программирования в СССР и создатель сибирской школы информатики. В свое время он настаивал на том, чтобы школьников и студентов обучали программированию, а не просто владению компьютером на пользовательском уровне.
Во многом именно благодаря такому наследию программисты из Новосибирска традиционно сильны. По словам Татьяны Чуриной, студенты НГУ занимаются спортивным программированием с 1997 года. В 1999 они впервые вышли в финал ACM-ICPC. Команда НГУ с тех пор четырнадцать раз выходила в финал, а в 2007 году удалось взять серебро. С 2000 по 2018 годы сборные команды НГУ входили в диапазон сильнейших мировых команд от 5 до 50 места наряду с такими лидерами, как Массачусетский технологический институт, Стэнфордский университет, Калифорнийский университет в Беркли и Токийский университет.
Зачем нужно спортивное программирование?
Участники соревнований по спортивному программированию умеют мыслить нешаблонно — в противном случае быстро решить олимпиадную задачу не получится. Как правило, они регулярно тренируются, в результате чего развивается навык быстро принимать решения и находить нестандартный подход. А это ценится многими работодателями, в первую очередь представителями крупнейших технологических компаний мира — таких как Яндекс, Mail.ru Group, Face****book*, Acronis, Google, Сбербанк, Microsoft.
|
---|
— IT-компании буквально охотятся за нашими выпускниками, и в первую очередь за участниками мировых чемпионатов по программированию, — отмечает Татьяна Чурина. — Можно долго перечислять, сколько их работает в Google, Яндекс, JetBrains, Huawei, а также в институтах РАН.
Еще одна хорошая возможность, предоставляемая участникам олимпиад по спортивному программированию, — это проверка своего опыта и знаний. Участие в олимпиадном программировании зачастую позволяет обнаружить в себе скрытые резервы и понять, насколько хорошо вы подготовлены к работе программистом.
Истории успеха
Среди экс-участников чемпионатов по программированию есть немало известных software-инженеров и предпринимателей. Так, главные технические разработчики ВКонтакте и Telegram — Дуров и Лопатин — дважды чемпионы мира по спортивному программированию.
Большинство участников мероприятий по олимпиадному программированию устраиваются в крупные технологические компании. Среди них Сергей Цаплин, который работает старшим инженером в санкт-петербургском офисе Huawei, Сергей Федоров, старший разработчик в Yandex Self-Driving Cars, Николай Кузиванов, младший программист-разработчик во «ВКонтакте», и Сергей Волнов, который трудится в Google на должности старшего разработчика.
|
---|
Тренеры новосибирских команд Александр Стененко и Степан Гатилов — участники финалов ICPC — неоднократно получали и до сих пор получают предложения от зарубежных компаний. Но они предпочитают жить и работать в родной стране и городе — Новосибирске.
Еще один призер ICPC — Тони Шей, который сначала создал баннерообменную сеть, купленную Microsoft за $265 млн, а потом основал интернет-магазин одежды Zappos.com, который купила компания Amazon за $1,2 млрд.
Мероприятия по спортивному программированию дают возможность, с одной стороны, готовить большое количество хороших специалистов, которые постоянно держат себя в тонусе, посещая тренировки. С другой, поставляют кадры лучшим IT-компаниям и институтам РАН. В конечном итоге это идет на пользу не только IT-рынку, но и экономике в целом.
* — экстремистская организация, деятельность запрещена на территории РФ
** — признан Минюстом РФ иностранным агентом