Андрей Лопатин — о российских программистах, выигравших чемпионат мира
Команда студентов Санкт-Петербургского университета выиграла чемпионат мира по программированию, который завершился 19 мая на Пхукете. Россияне решили задачи на 7 минут быстрее студентов Шанхайского университета, команда Гарварда заняла третье место. Всего в финале участвовало 128 команд. В состав команды СПбГУ входили Игорь Пышкин, Станислав Ершов, Алексей Гордеев, а также тренер Андрей Лопатин — сотрудник социальной сети «ВКонтакте» и бывший разработчик мессенджера Telegram. В 2000 и 2001 годах он сам побеждал на студенческом чемпионате мира в составе команды СПбГУ.
«Секрет» поговорил с тренером Андреем Лопатиным, который год готовил студентов к олимпиаде.
— Что всё-таки сильнее — СПбГУ или ИТМО?
— Это вечный вопрос. Зависит от того, у кого спрашивать. СПбГУ четыре раза выигрывал, ИТМО — шесть.
— Расскажите немного о себе. Читала, что вы закончили легендарный лицей №239 в Санкт-Петербурге, где учились многие известные люди от Григория Перельмана до Бориса Гребенщикова и познакомились там с Николаем Дуровым (сооснователь «ВКонтакте» и Telegram. — Прим. «Секрета»).
— Да, было дело. Лицей №239 — один из лучших в Санкт-Петербурге. Там много известных людей училось, в одно время с нами, например, Инна Друзь. Но я его не закончил, с 8-го по 10-й класс там учился, а закончил 11-й класс в языковой школе №238. С нашим набором проводили эксперимент: мы учили английский, французский, латынь, древнегреческий и другие языки, проходили философию, востоковедение, античную культуру.
Мои родители — преподаватели. Мать преподавала математику в школе, а отец — военный преподаватель, он командовал ротой в АСО (аварийно-спасательный отряд).
— Когда вы увлеклись программированием?
— Началось с того, что мне в руки попала книжка про язык Basic, я её прочитал, но никакого практического применения найти не смог. С компьютерами я познакомился в начале 90-х, нам привезли их в языковую школу, и я попытался по памяти воспроизвести какие-то программы из книги. С удивлением узнал, что в Basic есть множество разных диалектов и то, что я знаю про язык из этой книжки, плохо работает на компьютерах. Я начал изучать разные языки программирования, а в алгоритмы серьёзно погрузился в девятом классе.
В восьмом классе я писал какие-то программы, в основном на Assembler — сейчас это звучит довольно дико, это самый низкоуровневый машинный язык, но тогда вариантов особо не было. Например, писал компилятор языка Forth — программу, которая записывала звук с магнитофона.
— Вы хотели заниматься научной работой, связанной с программированием и математикой?
— Ещё в школе я был участником сборной России по информатике и ездил на международные олимпиады для школьников. Потом поступил в СПбГУ, там нам много рассказывали про алгоритмы, я уже серьёзно ими занимался.
В науке я успел поработать, но не очень долго, после университета я больше занимался практическими вещами. Например, тренерством команды по программированию, работал над «ВКонтакте» и Telegram, занимался проектом в сфере транспортной логистики Veeroute. Во «ВКонтакте» я работал с 2008 года, когда перестала справляться стандартная архитектура, пришлось сделать свою, мы вместе с Николаем её создавали.
— В каких олимпиадах вы выигрывали?
— Студенческий финал чемпионата мира 2000 и 2001 года, мы в компании с Николаем Дуровым, в 2009 году я выиграл марафон Topcoder. Тогда это были очень важные мероприятия, а сейчас как-то уменьшили влияние.
— У них же там и Facebook, IBM и другие компании в партнёрах.
— Facebook сейчас проводит свои соревнования. Возможно, они немного их поддерживают, я не вдаюсь в тонкости взаимоотношений Topcoder и Facebook, ну работает — и хорошо. Ребята участвуют активно в Topcoder, я тоже иногда вспоминаю былое, мне полезно участвовать, просто не всегда хватает времени. Цифры говорят за себя: раньше они приглашали 72 человека только по алгоритмам на финал, а сейчас всего 8-12. Может, конкуренции не выдержали.
У нас в России есть сильный проект Code Forces, который, на мой взгляд, стал популярнее в мире, чем Topcoder, его делает Миша Мирзаянов из Саратовского университета. Это хороший кейс — как человек из алгоритмического программирования создал ведущий мировой проект в своей сфере. Там в каждом раунде участвует тысяч пять программистов.
— Вы готовите студентов в первую очередь к международной студенческой олимпиаде? Это самая важная олимпиада в мире?
— Да, в первую очередь это чемпионат мира ACM ICPC. За последние 16 лет команды из Питера девять раз занимали первое место — либо мы, либо ИТМО. Этот чемпионат считается самым престижным. Там соревнуются университеты со всего мира, по три человека в команде. Допускаются аспиранты, потому что по-английски это называется Ph.D. Но есть ограничения по возрасту и количеству попыток: в полуфинальных и четвертьфинальных соревнованиях можно не больше пяти раз участвовать, в финальных — не более двух.
— Видела, что Саратовский университет тоже побеждал.
— Да, Саратовский университет выигрывал как раз с тренером Мишей Мирзаяновым.
— А до 2000 года очень много американских университетов, тогда в России никого не было?
— Раньше это было такое локальное мероприятие, а потом пришёл IBM со спонсорством, они развернули очень активную кампанию по привлечению людей. Российские команды начали участвовать с 1995 года.
— Какие у нас основные конкуренты? Китайцы?
— Зависит от года, но обычно поляки, китайцы, студенты MIT. У поляков очень сильная школа в Варшаве. Они несколько раз выигрывали, и в этом году в фаворитах (интервью проходило до чемпионата, команда Варшавского университета заняла пятое место. — Прим. «Секрета»).
— У программистов есть денежная мотивация для участия в олимпиадах или это скорее желание решить какую-то задачу и доказать себе, что смог это сделать?
— Денежная мотивация тоже присутствует. Плюс участие в олимпиаде помогает строить карьеру. Сразу начинают сыпаться приглашения от разных фирм.
— Но есть теоретические программисты, а есть те, кто решает прикладные задачи?
— В командах встречаются люди, которые занимаются теоретической математикой и тем, что называется computer science, но часто и в компаниях нужны такие математики. В бизнесе тоже приходится и интегральчик посчитать или что-нибудь такое, задачи по оптимизации иначе не решаются. Теория важна, но люди чаще хотят решать практические задачи.
— Как повлиял технологический бум на профессию программиста? Сейчас спрос вырос?
— Эта профессия всегда была престижной, были уже всякие бумы доткомов и прочее. Уже в конце 90-х за программирование в России получали очень хорошие деньги в долларах. Некоторые уезжали на Запад — например, мой школьный тренер уехал по приглашению Microsoft в США ещё в 1997 году. Когда я был в старших классах, многие думали о карьере программиста, чтобы иметь хороший заработок, но мне просто было интересно. Сейчас компьютер и мобильная техника прочно вошли в нашу жизнь, программисты нужны везде, и сейчас, как и тогда, люди получают хорошие зарплаты.
— Сейчас больше людей уезжает?
— Мне кажется, примерно столько же. Одно время, по ощущениям, меньше уезжало — это период с 2004 по 2012 год. Помню, как в 2005-м Google проводил мероприятие и сразу приглашал финалистов олимпиад [на работу], и мы считали с ребятами, сколько от зарплаты останется после вычета налогов, затрат на жизнь. Выходило, что особого смысла ехать ради денег нет. Сейчас из-за курса доллара уезжать стали, наверное, чаще.
Я бы сказал, что уезжают 30-50% [олимпиадников]. Некоторые хотят заниматься наукой, они уезжают в американские, канадские, немецкие университеты, некоторые потом возвращаются.
— Как часто проходят тренировки?
— Командные — три раза в неделю по пять часов, плюс сборы несколько раз в год. Есть ещё всякие соревнования — уже упомянутые TopCoder, Codeforces, конкурсы Facebook, Google, «ВКонтакте», «Яндекса», — всего и не упомнишь. Ребята в них участвуют, чтобы не терять форму. Это уже спортивное мероприятие, где нужно не только, чтобы голова работала. Вот есть шахматы: кто-то говорит, что это помогает планировать, просчитывать ходы людей — я сам занимался шахматами, мне кажется, что мне это помогло участвовать в других соревнованиях, потому что у меня уже был опыт соревнования. Хотя программирование — гораздо более приближённый к реальности интеллектуальный вид спорта.
— Где обычно проходят сборы?
— Иногда собираемся в Петрозаводске, в начале апреля ездили на сборы в МФТИ, наша команда выиграла, хотя там были и участники из Шанхая. Не было, к сожалению, команды из Варшавы, которая нас обыграла на предыдущих сборах в Петрозаводске. Было бы интересно снова встретиться и посмотреть, как мы прокачались. В 2007 году у них была очень сильная команда. Она обыгрывала всех на голову и выиграла чемпионат мира. В 2008 году эта команда прыгнула на недосягаемую высоту по результатам всех сборов, тренировок, даже не было мысли, что кто-то другой может выиграть. И вот в прошлом году у этой команды с одной задачей не заладилось в финале и они не получили ни одной медалей, хотя медали даются 12 лучшим командам — четыре золота, четыре серебра и четыре бронзы.
— Драйв и адреналин как в большом спорте?
— Нагрузка очень высокая, участников вырубает на долгое время, хотя, когда я стал тренером, я понял: быть участником — это ещё не самое страшное. Участник хотя бы может что-то сделать, а тренера просто изолируют и он ничего не может, когда хочет подсказать. Это очень нервно.
— Потом эти люди, как правило, устраиваются в крупные компании?
— Часто. Помню, когда команда в 2010 году взяла серебряную медаль, их устроили работать во «ВКонтакте». Мне кажется, это было для них полезно, потому что они узнали, что такое ответственность, когда работаешь на большую компанию и большую задачу. Это помогло им в финале чувствовать себя более уверенными, они получили золотую медаль и стали чемпионами Европы в 2011 году. Сейчас люди из той команды работают во «ВКонтакте» и Telegram.
Большие компании постоянно предлагают работу и ребятам, и мне. Не так давно мне пришло письмо от Google примерно в такой форме: скажите, пожалуйста, в каком офисе бы вы хотели работать? В Лондоне или в Цюрихе? Я как-то участвовал в году 2003 в Олимпиаде, которую Samsung спонсировал, они до сих пор периодически присылают письма: может быть, вы всё-таки хотите?
— Вы вообще такие варианты не рассматриваете?
— Совершенно непонятно, зачем мне это. Как правило, в крупных компаниях гораздо меньше возможности что-то пробовать.
— Есть ощущение, что программисты — это такое закрытое сообщество людей, которым комфортно друг с другом и не всегда с окружающим миром. Есть такое?
— Программисты могут быть замкнутыми в силу того, что у них немного специфичный способ мышления, поэтому про них придумывают всякие анекдоты вроде «намылить, смыть, повторить» и так далее. Но есть, наоборот, открытые ребята. Кстати, говорят, что ребята из команды, с которой я ездил в 2008–2009 годах, регулярно играли в тарелку, в мяч и звали играть с ними команды со всего мира и так задавали тренд. В российских компьютерных школах, как мне кажется, большое внимание уделяются тому, чтобы человек вырос хороший. Такая среда, которая может быть сложилась ещё с советских времён, — песни под гитару, самодеятельность, всё такое. Общественная деятельность какая-то ведётся, например спектакль можно поставить.
— А вы замечаете, что происходит омоложение профессии? 20-летние программисты выигрывают конкурсы и устраиваются в крупные компании.
— Талантливая молодёжь всегда есть, периодически появляются люди, которые в раннем возврате показывают очень хорошие результаты. Например, когда я учился в 11-м классе, семиклассник Петя Митричев из 57-й школы чуть было не помешал мне пройти на международную олимпиаду школьников. После Пети Митричева был Гена Короткевич, которому в пятом классе не хватило несколько баллов до золотой медали на той же международной олимпиаде.
— Но всё-таки есть какая-то ценность в тех, кто писал код 30 лет назад? Или им пора на покой?
— Опыт помогает какие-то спецэффекты исправлять быстрее, он играет роль, но дело в том, что языки, на которых пишут программисты, меняются очень быстро. Знание современных технологий и умение адаптироваться играет большую роль.
Если скорость развития технологий будет всё время расти, то да, возможно, старожилам придётся уходить на покой. Я постараюсь адаптироваться. Сейчас модно говорить про технологическую сингулярность, возможно, если скорость будет расти экспоненциально, взрослым программистам будет сложно успевать за молодыми.
— Чем компания может привлечь программиста кроме решения интересных задач и зарплаты?
— Мне кажется, компаниям стоит быть более открытыми и участвовать в конкурсах и олимпиадах. Нужно, чтобы люди из компаний постоянно встречались и общались с программистами. Ведь что такое олимпиада? Это один из путей становления программистов. Олимпиады многие критикуют, будто они оторваны от реальности. Это не так, задачи, которые решаются на соревнованиях, — часть каких-то больших задач.
— Вы замечаете среди программистов людей с предпринимательским мышлением, людей, которые хотят открыть своё дело?
— Среди моего окружения такого мало, хотя тема интересная. Не знаю, почему-то об этом не принято задумываться. Может быть, нужно подумать о том, как переломить эту тенденцию.
Кто спонсирует российских студентов на чемпионатах
В список 12 призёров в 2016 году вошли ещё четыре команды из России: студенты МФТИ заняли четвёртое место, ИТМО — седьмое, УрФУ — восьмое, Нижегородский госуниверситет — десятое. Чемпионат мира по программированию среди студенческих команд проводится с 1970-х годов. Изначально в нём участвовали представители американских университетов, со временем в конкурсе стали принимать и студенты из других стран. Начиная с 2000 года российские команды побеждали в ACM ICPC (International Collegiate Programming Contest) 11 раз, сборная СПбГУ занимала первое место трижды.
Российские команды спонсировали соцсеть «ВКонтакте» и основатель проекта Looksery, проданного Snapchat за $150 млн в 2015 году, Виктор Шабуров. Он сам закончил математико-механический факультет СПбГУ в 1999 году с красным дипломом.
Некоторые считают, что финалисты олимпиад оторваны от реальности и несовместимы с корпоративной средой. Если в России спросить у программиста, круто ли быть финалистом чемпионата мира, он скажет, что от финалистов толка нет — они бесполезны и специализируются на решении каких-то задач, а программировать не умеют. Это типичный стереотип. На самом деле наши ребята умеют решать задачи, которые никто никогда не решал, и компании стараются этим пользоваться. Предприниматель, когда нанимает людей из команды чемпионов, должен добавить к этому ядру программистов, которые специализируются на Android, iOS или других вещах, и они вместе смогут решать задачи.
Пример — Looksery, которая первая в мире сделала технологию распознавания лиц, вошла со своим приложением в топы многих стран и зарабатывала деньги сразу после запуска. Если предприниматель берёт крутое ядро финалистов и окружает их профессионалами, создаёт хорошие условия для работы и ставит задачу двигаться только вперёд и решать сложные задачи, он получит огромный эффект.
Я привёз десять команд на чемпионат, мы спонсировали СПбГУ и Уральскую команду, Иннополис, Запорожский университет из Украины и ещё чуть-чуть дали другим университетам — условно, чтоб билеты на Пхукет оплатить могли. Я сам — бывший олимпиадник, правда по математике, и три моих стартапа я строил на костяке из финалистов олимпиад. Пять лет назад мою компанию SPB Software купил «Яндекс» за $38 млн, мы были лидерами в своём сегменте на мировом рынке, другую компанию, Handster, купила Opera. В Looksery вообще работает 60% олимпиадников (все они за два года после продажи компании стали миллионерами. — Прим. «Секрета»).
Я стараюсь жертвовать на спонсорство наших команд 10% дохода, для меня это благотворительность, я не ожидаю никакого возврата. С другой стороны, жертвовать хочется в релевантной области. Когда олимпиадники знают тебя, их проще привлекать к работе над проектами.
Фотография на обложке: Александр Лопатин