«Меня не раз звали в Google, но работа мне пока не нужна»

Геннадий Короткевич, самый титулованный спортивный программист мира, дает интервью Rusbase.

07.06.2017




Геннадий Короткевич в спортивном программировании — как Усэйн Болт в беге. Он выиграл все самые известные соревнования, начиная от командного чемпионата мира (дважды) и заканчивая индивидуальными турнирами, которые организуют Google, Facebook, Яндекс, Mail.ru и другие компании. Сегодня Короткевич является самым титулованным программистом мира и занимает первое место в рейтинге сильнейших кодеров по версии Codeforces.

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

Корреспондент Rusbase Мария Соснина съездила в Питер, где расспросила Короткевича о том, как это — решать задачи быстрее всех.

Где ты был 24 мая — в тот момент, когда стало ясно, что команда из ИТМО в очередной раз выиграет чемпионат мира?
— Я тоже находился в Рапид-Сити, где проходил финал, и мне было очень приятно, что ребята победили. Я, кстати, решал те же задачи — параллельно со всеми участниками турнира. Ради фана мы собрали неофициальную команду, в которой были Петя Митричев (занимает первое место в рейтинге TopCoder.com — прим. Rusbase), Миша Тихомиров (тренер команды МФТИ — прим. Rusbase) и я — и вели онлайн-трансляцию на YouTube. Таким составом нам удалось решить 11 задач из 12. То есть мы бы тоже могли выиграть чемпионат мира, не будь мы такими старыми (смеется).
Тебе 22 года, ты выиграл все значимые программистские турниры. Расскажи, чем ты занимаешься сейчас.
— Я больше не выступаю на командном чемпионате мира, потому что по правилам в нем можно участвовать только два раза. Поэтому у меня сейчас вольный формат, я участвую в соревнованиях, которые мне интересны. В середине июня еду в Сиэтл — на турнир от Facebook. В августе пройдут соревнования Google Code Jam. На них после отборочных раундов поедут 25 лучших программистов, финал пройдет в Дублине.
Что выиграл Геннадий Короткевич
  1. Командный чемпионат мира / ACM ICPC (2013, 2015)
  2. Google Code Jam (2014-2016)
  3. Facebook Hacker Cup (2014, 2015)
  4. Russian Code Cup (2014, 2016)
  5. Яндекс. Алгоритм (2010, 2013-2015)
  6. VK Cup (2015, 2016)
Соревнования по программированию обычно длятся пять часов. Как твой мозг выдерживает такое напряжение? Можно ли применять какой-нибудь «допинг»?
— Это не такой уж спорт, чтобы кто-то пристально следил за допингом. Пока спортивное программирование, к счастью, не находится под контролем WADA. Многие едят шоколадки — сладкое обычно помогает работе мозга. Иногда можно что-то принести с собой — например, энергетик. Но мне кажется, что это не так важно. Когда ешь, то отвлекаешься, а это не очень-то помогает. Обычно я просто пью воду.
У многих спортсменов есть ритуалы. Что делаешь перед соревнованиями ты? Надеваешь «ту самую, счастливую» худи, пьешь крепкий кофе?
— Ритуалов как таковых нет, но мне здорово помогает во время турниров, если я просто встану и пройдусь. Часто выхожу умыться. Сидеть и думать несколько часов подряд мне тяжело. Конечно же, я волнуюсь, но в последнее время гораздо меньше. Все-таки я стал опытнее и увереннее в себе. Волнение иногда бывает полезным — держит в тонусе, заставляет действовать быстро.
Фото: Маша Парфитт
Поговорим о скорости. О твоем умении расправляться с задачами ходят легенды. У тебя есть какая-то своя методика?
— Скорее, это определенные подходы и идеи, которые можно применять. С одной стороны, это common sense. То есть какого-то свода методик, как подойти к решению той или иной задачи, не существует. С другой стороны, все очень индивидуально. Например, есть сложная задача. Я ломаю голову над ее решением и не понимаю, как к ней вообще подступиться. И тогда мне бывает полезно взять какой-нибудь частный, конкретный случай. Они бывают легкие, тривиальные, а бывают посложнее. Я пытаюсь найти наиболее сложный для меня частный случай, который еще не умею решать. Решение частного помогает придумать решение для общего. Это лишь один из примеров.
Что насчет озарений? Сидишь-сидишь, а потом — раз, вот же оно!
— О да, такое бывает довольно часто. Иногда нужно просто подойти к задаче с другой стороны. Помню, как в финале чемпионата мира-2015 в Марокко мы с ребятами бились над одной из задач, которую довольно быстро решили другие команды. Прошло уже больше двух часов, а мы все еще не знали, что делать. И в какой-то момент нас осенило. Иногда приходит случайное озарение, и ты понимаешь, что требуется. А иногда надо раскручивать задачу пошагово — одну мысль за другой.
Я слышала, что в Марокко ты сильно отравился перед соревнованиями. Это правда?
— Не знаю точно, что это было, но вечером перед финалом у меня заболел живот. Видимо, какие-то бактерии попали в организм. Было довольно плохо: острая боль, меня буквально скрутило. Я почти не спал. Ближе к утру мне раздобыли активированный уголь, и я пришел в себя. На турнире чувствовал себя уставшим, но, если честно, не связываю наше выступление со своим состоянием. Первые два с половиной часа мы слегка тормозили, потому что закопались в задачах. Потом вышли в лидеры.
Фото: Маша Парфитт
Есть задачи, на которые ты точишь зуб? Которые так и не смог решить?
— Конечно. Есть задачи, которые кто-то может решить, а я не могу. И, возможно, никогда не смогу. И это нормально. Существуют задачи, которые вообще никто не сможет решить. На соревнованиях, правда, таких не дают (смеется). На контестах бывают задачи, с которыми тяжело справиться в пределах отведенного времени.
Задача, которую не решил никто
Задача H, которую на финале чемпионата мира – 2017 в Рапид-Сиди не удалось решить ни одной из команд:

Вы — фотограф-любитель и перфекционист. Во время поездки в Рапид-Сити вы решили провести день в парке Бэдлендс, известном своими необычными пейзажами. Вы определились с количеством мест, которые хотите отснять, и узнали, когда каждое из них идеально освещает солнце. Теперь вам интересно, удастся ли удачно сфотографировать все эти места за один день — ведь на каждый снимок уйдет какое-то время (полный текст задачи).
Даже несмотря на твою суперскорость?
— Авторы задач готовят их неделями. Понятно, что за такое время можно придумать задачи, которые нельзя решить за пять часов (обычно на турнирах нужно решить от 10 до 12 задач — прим. Rusbase). Хотя обычно у авторов нет цели завалить участников. Они стараются сбалансировать уровень задач, чтобы было всем интересно — и сильным, и слабым командам.
Объясни — почему на командных соревнованиях на столе только один компьютер на команду из трех человек?
— Таковы правила, к тому же очень много работы нужно выполнять не за компьютером. Например, думать над задачами, отлаживать решения. Если код не работает, команда не может позволить себе искать ошибку за
компьютером — на это просто нет времени. Кто-то из программистов сидит над листом бумаги и ищет ошибку глазами. Соревнования длятся пять часов, то есть на трех человек это 15 человеко-часов. Но за компьютером команда может провести только пять часов — не больше и не меньше. Поэтому компьютерное время становится особенно ценным.
У этих трех человек есть какие-то амплуа? Например, один кодит, остальные думают.
— Бывает по-разному. Если программисты из сильно разных областей, то один из них решает задачи одного типа, остальные — другого типа. Но обычно в команде есть тот, кто больше кодит, и тот, кто больше думает. У меня в командах не было четкого разделения. Когда мы готовились к финалу чемпионата мира, то естественным образом получалось так, что из условных десяти задач я программировал решение для шести из них, второй человек — для трех, третий — для одной. Причем мы не договаривались специально, всегда действовали по ситуации. Писал каждое решение или тот, кто его придумал, или тот, кто лучше его понимал, или тот, кто был уверен, что сможет быстро его написать. Решения самых простых задач чаще всего кодил я, потому что мог сделать это быстрее. Но это не значит, что партнеры по команде работали меньше.
Мы «вели» Гену Короткевича еще со школы, было понятно, что таких детей, как он, во всем мире единицы. У него выдающиеся способности именно в олимпиадном программировании. Если же говорить в целом про способных детей, то их в масштабе страны около полутора тысяч. Многие из них уже заранее поделены между ведущими российскими вузами — помимо нас, это МГУ, СПбГУ, МФТИ, ВШЭ и так далее. В России сейчас гигантский спрос на талантливых программистов. IT — это единственная область, где у нас все бурно цветет, поэтому компаниям нужны кадры мирового уровня.

Чем ИТМО лучше остальных университетов? МГУ и СПбГУ — без сомнения, великие вузы. Но там преподают 75-летние люди, есть даже те, кто меня еще учил. А у нас самый возрастной преподаватель — 36-летний Андрей Станкевич, великий тренер, который делает из ребят чемпионов мира. Перед нашими выпускниками открыты все дороги: их берут в самые известные компании, они запускают стартапы, придумывают новые языки программирования (одним из создателей языка Kotlin стал выпускник ИТМО Андрей Бреслав — прим. Rusbase). Массово идут приглашения от Google и Facebook. При этом я яростный противник того, чтобы ребята уезжали. Зачем? 120 тысяч долларов в год за то, чтобы сидеть в Кремниевой долине, из чемпиона мира превратиться в точку. Это в 90-х деньги были важны, когда народ сидел без работы, и не на что было купить ни продуктов, ни лекарств. Времена давно изменились, в России можно зарабатывать не меньше, а самовыражаться — гораздо больше.

Гена должен созреть, чтобы понять, чего именно он хочет дальше. Мы держим связь с его родителями, которые тоже переживают за будущее сына. Чемпионам всегда непросто — перед ними стоит мучительный выбор, куда применить свой мозг. Он, например, может заняться наукой. Пойти в нашу лабораторию биоинформатики, придумать какие-то новые алгоритмы, публиковаться в научных журналах. Может поехать за границу получать PhD. Может устроиться в большую компанию или стартап, где сделает свой продукт. А еще может стать преподавателем и передавать свой опыт дальше. У нас есть возможность платить титулованным ребятам достойные зарплаты.

Владимир Парфенов
Декан факультета информационных технологий и программирования ИТМО
Вопрос, который интересует многих твоих поклонников. Почему у тебя ник tourist? С ним связана какая-то история?
— Ой, мне было лет девять, когда его выбрал, не больше. Точно помню, на моих лыжах было написано слово tourist, и оно мне понравилось. Вообще мне еще повезло, что я выбрал себе такой приличный ник. Знаю ребят, которым позже пришлось брать новые имена, потому что старые были ни в какие ворота.
Самое яркое путешествие из последних?
— В начале апреля я ездил на два турнира. Первый, Hash Code, проводился во Франции, второй назывался PIZZA и проходил в Польше. Между соревнованиями была неделя, и мы решили не возвращаться в Питер, а покататься по Европе. Погуляли по Парижу, съездили в Болонью. Хорошо отдохнули и провели время. Еще в ноябре я впервые побывал в Японии, мне понравилось, как там все устроено, заинтересовала местная культура. Хотел бы еще добраться до Австралии, но там пока не проводили соревнования.
Фото: Маша Парфитт
Твои родители — программисты. Как думаешь, это сыграло важную роль в твоих достижениях?
— Личной подготовкой я обязан папе. В детстве мы с ним много занимались: разбирали задачи, учились программировать вместе, и это было очень классно. Папа объяснял мне программирование так, чтобы я понял. При этом меня никто не заставлял — пойди и позанимайся. Наоборот, бывало, говорили — пойди и отдохни. То есть мне самому решать задачи было интересно. Еще у нас в Гомеле был кружок для школьников-программистов под руководством Михаила Семеновича Долинского. Я попал в среду, где можно было с ребятами что-то пообсуждать и потренироваться — ценная штука.
Видела фотографию, где ты стоишь с другими участниками соревнований. На вид они все — старше тебя лет на пять.
— Наверное, таких фоток много. В школьных олимпиадах по информатике не было разделения по возрастам и обычно я соревновался с 11-классниками. В старших классах я иногда участвовал в командных соревнованиях в одиночку. Хотелось прокачаться, набраться опыта.
Сколько раз тебе пожимал руку Александр Лукашенко?
— Получается, что шесть. Каждый раз, когда я становился призером международной олимпиады по информатике, меня приглашали на встречу с президентом страны — в числе других ребят, у которых были научные и культурные достижения. Встречи проходили во Дворце республики, всегда были шикарные банкеты, играл оркестр. Когда нас награждали, мы подходили к Александру Григорьевичу, он жал руку, вручал букет и значок.
Что он говорил?
— «Спасибо, Гена». Это все, что он успевал сказать, ведь нас было много.
После школы перед тобой были открыты двери многих университетов. Почему ты выбрал именно ИТМО?
Я раздумывал над разными вариантами, и ИТМО был в числе приоритетов. К тому же он сам проявлял большую заинтересованность. Университет отслеживает олимпиадников, поэтому оттуда выходили и на меня, и на моих родителей. Решающим моментом, наверное, стало то, что в 11-м классе я поехал в Санкт-Петербург — на всероссийскую командную олимпиаду школьников по программированию. Она проходила как раз в ИТМО. Я съездил, мне все понравилось. И я решил учиться в Питере.
Ты думал о том, чтобы учиться за границей?
Если честно, я не очень представлял себя на тот момент где-то далеко за границей. Я вообще был довольно домашним. Моя гимназия №56 в Гомеле находилась в пяти минутах от дома. Я просто выходил и шел на учебу. Уехать в другую культуру — то есть, по сути, в другое все — мне не хотелось. Поэтому я рассматривал варианты в Беларуси и России.
Как часто ты ездишь домой?
Раз в два – три месяца. Есть прямой поезд Гомель — Санкт-Петербург. Он ночной, идет примерно 16 часов. Я ложусь спать, а утром уже дома. Иногда родители приезжают ко мне в Питер.
Фото: Маша Парфитт
Как родители реагируют на твои успехи?
Папа ведет специальный дневник и записывает туда все мои результаты. В один файл — в хронологическом порядке. Родители всегда в онлайн-режиме следят за ходом соревнований. Но мама больше волнуется, чтобы я хорошо долетел. Она всегда беспокоится, когда я сажусь в самолет, поэтому я отправляю ей эсэмэски «я приземлился!», «я взлетаю!» и все в таком духе.
Как умение быстро решать задачи помогает тебе в обычной жизни?
В магазине могу что-то быстро посчитать и перепроверить. Несколько раз меня обсчитывали — и я это замечал. Не то чтобы специально. Просто в голове автоматически складываются цифры — от этого никуда не деться.
Сколько ты программируешь в день? Опиши свой график.
Ох. Я обычно ничего не делаю. Просто сплю (смеется). Вот проснулся, пошел давать вам интервью. Если говорить серьезно, то сейчас я просто стараюсь поддерживать себя в тонусе — готовлю себя к различным отборам и раундам, участвую в тренировках. В школе, когда закладывал базу, мог сидеть за компьютером по полдня. Сейчас мне хватает нескольких часов.
На земле всего шесть человек, которым дважды удалось выиграть командные чемпионаты мира ACM ICPC. Четверо из них — из ИТМО: Нияз Нигматуллин, Михаил Кевер, Евгений Капун и Гена Короткевич (еще двое закончили СПбГУ — Николай Дуров, брат основателя «ВКонтакте» Павла Дурова, и тренер Андрей Лопатин — прим. Rusbase). Каждый год только на одну кафедру компьютерных технологий мы принимаем больше 100 олимпиадников. И мы всеми силами выступаем за то, чтобы после окончания университета эти ребята не уезжали в условный Эйдховен работать на Philipps, а оставались в России. Конечно, мы силой никого не держим. Всех талантливых программистов отрывают с руками, они едут на турниры за границу, а им там предлагают оферы и стажировки. Но если раньше уезжало большинство и у нас оставалось выжженное поле, то сейчас 50 на 50. Нельзя вырастить урожай, если съедать весь посевной материал. И сейчас мы — единственный университет, который может себе позволить, чтобы на его кафедрах преподавали молодые и востребованные чемпионы мира.

Откуда мы берем для них конкурентноспособные зарплаты? Объясняю. К нам часто приходят большие компании и говорят, что хотят нанять классных программистов. И мне всегда в этой ситуации хочется спросить — а молодого Аршавина вам бонусом не приложить? Почему работодатели получают отличных специалистов, а вырастивший их вуз — ничего? Согласитесь, что это неправильно. Есть компании, которые это понимают. Например, JetBrains тратит на науку и образование, помогая вузам, один процент от своего годового оборота. Тинькофф Банк с сентября прошлого года платит стипендию Короткевичу. Есть и другие партнеры, которые нас поддерживают.

Кроме того, ИТМО получает финансовую помощь от государства в рамках программы «5 в 100» (около 1 млрд рублей в год — прим. Rusbase). В прошлом году произошло важное событие — наш университет занял 56-е место по computer science в мировом рейтинге Times Higher Education. Мы впервые поднялись так высоко и, конечно, теперь хотим еще выше. Все деньги уходят на лаборатории — их у нас больше 40, совместные программы с международными вузами и зарплаты преподавателям. Мы берем толковейших людей и создаем им все условия для учебы и работы. И очень этим гордимся.

Анатолий Шалыто
Заведующий кафедрой технологий программирования университета ИТМО
Объясни, почему ты кодишь на C++. Твой конкурент по рейтингам Петр Митричев программирует на Java.
Не так важно, на каком языке писать, важно придумать решение. И у Java, и у C++ есть свои преимущества. Например, Java — более строгий язык, делает больше проверок при написании и исполнении программы. C++ каких-то ошибок может просто не заметить, программа не упадет и продолжит работу некорректно. В том числе поэтому C++, как правило, быстрее Java. Это может быть важно из-за ограничений по времени исполнения.
Какие у тебя отношения с Петром? Соперничество дает о себе знать?
— У нас замечательные отношения, хотя Петя и старше меня на 10 лет, к тому же сейчас он живет в Цюрихе. Но соперничества между нами нет, мы отлично общаемся. В конечном счете, это просто рейтинги, мы же не за миллионы сражаемся.
Самый большой призовой чек, который тебе вручили после победы?
— На крупных соревнованиях призовые могут достигать $15 тысяч. Например, на Google Code Jam.
То есть за последние три года ты здорово улучшил свое финансовое состояние?
— Получается, что так.
Что ты сделал с деньгами?
— Пока ничего.
Все смотрели фильм «Социальная сеть», в котором Марк Цукерберг с друзьями из Гарварда придумывал свой знаменитый стартап. Возможна ли такая история в ИТМО?
— В нашем университете есть свой бизнес-инкубатор, и там действительно происходит какая-то движуха. Я пока в это не вникаю, но здесь талантливых ребят хватает, чемпионы мира ходят по ИТМО табунами. Предложения о том, чтобы запилить совместный стартап, сыпятся мне регулярно. Особенно много их было в 2013 году, когда я в первый раз выиграл ACM ICPC. От незнакомых людей приходили сообщения из серии: «Эй, Гена, давай сделаем такой-то стартап!» Приходилось вежливо отказывать.
Я слышала мнения, что с твоим мозгом можно свернуть горы и добиться внушительных результатов — или в науке, или в программировании.
— Я пока не определился со своим будущим. Все пока немного туманно. После окончания четвертого курса понял, что не хочу что-то резко в жизни менять, и остался в университете. Сейчас учусь на первом курсе магистратуры.
Стать кодером номер один — это была для тебя такая «галочка» в списке целей?
— Думаю, что да, я со школы был достаточно амбициозен в этом плане и старался все делать по максимуму. Стать первым, не пытаясь стать первым, тяжело.
Твоя следующая цель? Наука, работа на большую компанию, прорывной стартап?
— Мне пока сложно ответить на этот вопрос. Ни один из этих вариантов я не исключаю. Точнее так: либо я на самом деле не знаю, либо шифруюсь и не хочу раскрывать все карты.
Тебе предлагали работу в больших компаниях вроде Google?
— Да, несколько раз. Но здесь есть тонкости. Обычно финалистам соревнований не предлагают работу напрямую. Как правило, их сначала зовут на собеседования. Если ты хорошо выступишь на турнире, организованном Google или Facebook, тебе скажут — приходите к нам, пообщаемся. И уже после собеседования могут сказать, на какую позицию приглашают и на какие деньги. Меня так звали в Google, но я не ходил.
Почему?
— Знаю, что для тех, кто занимается олимпиадами и хорош в алгоритмах, не составляет особого труда пройти собеседование. То есть я понимаю, что, скорее всего, пройду собеседование и получу работу. Но работа мне пока не очень нужна.
В российские компании приглашали?
— Я думаю, что у меня есть возможность попасть и в «Яндекс», и во «ВКонтакте». Это сейчас крупнейшие IT-компании в Петербурге. Некоторые из моих знакомых и друзей уже там. Но я сейчас сосредоточен на учебе.
Ты бы хотел получить российское гражданство?
— Только если из-за него не надо будет отказываться от белорусского паспорта. В целом я не вижу причин, зачем мне это нужно.
Опровергни миф о том, что все программисты — странные гики.
— Ха-ха, но ведь это отчасти правда! На самом деле, все люди разные, а среди программистов есть много вполне адекватных ребят, которые не только сидят перед компьютером, но и другими вещами интересуются. Я, например, участвую в соревнованиях по настольному теннису, слежу за большим теннисом. С личной жизнью тоже все в порядке — у меня есть девушка. Я себя гиком точно не считаю.
С Геной Короткевичем я познакомился поближе вскоре после его поступления в университет. Перед чемпионатом мира-2013 мне в команду нужен был еще один человек — к уже опытным Ниязу Нигматуллину и Мише Кеверу. И я решил, что стоит попробовать Гену, хотя это был немного рискованно, ведь он учился только на первом курсе. Гена был очень сильный лично, на тот момент он шесть раз выиграл международную олимпиаду по информатике. В итоге все сложилось удачно — Короткевич быстро влился в команду, ребята год тренировались вместе и ИТМО выиграл домашний чемпионат мира (в 2013 году он проходил в Санкт-Петербурге — прим. Rusbase).

В чем причины успеха Гены? Здесь сыграло все вместе — и родители, и то, что он рано начал заниматься, и его талант. Важно и то, что ему нравилось программировать, это было для него интересно. На одном таланте, впрочем, далеко не уехать. Я видел немало способных детей, которые блистали в школе, а потом им стало некогда, кому-то надоело, кто-то просто решил забить. Конкуренция в этой среде огромная, и если перестать систематически заниматься, то сразу же вылетаешь из топов. Поэтому требуются трудолюбие и упорство. У Гены все это есть.

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

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

Андрей Станкевич
Доцент кафедры компьютерных технологий ИТМО, тренер сборной университета по спортивному программированию (семь побед в чемпионатах мира, начиная с 2004 года)
© Rusbase, 2017
Фотографии: Маша Парфитт
Текст: Мария Соснина — внештатный корреспондент Rusbase


Людмила Чумак
Геннадий Короткевич: «Меня не раз звали в Google, но работа мне пока не нужна»