Старый холивар на новый лад: изменятся ли олимпиадники-программисты со временем
19 мая команда СПбГУ из Санкт-Петербурга стала победителем международной студенческой олимпиады по программированию ACM ICPC 2016, финал которой проходил на Пхукете. Призеры получили приглашения на стажировки в исследовательских офисах компании IBM (выступила спонсором соревнования) и в других международных IT-компаниях.
Не секрет, что российские команды занимают призовые места на подобных соревнованиях с завидной регулярностью. Но что с ними происходит в реальной жизни? Кто из участников принимает приглашения на стажировку или работу в серьезных компаниях? Более остро стоит вопрос о том, что с ними происходит после того, как они приняли предложение. Принято считать, что олимпиадники-программисты — личности неординарные.
С одной стороны, компаниям мирового уровня нужны такие люди (будущие рок-звезды), с другой стороны, от эти нестандартных сотрудников требуется выполнение весьма стандартных условий сотрудничества — работа в команде, работа в срок, постоянный режим труда (пусть даже удаленный), корпоративная культура. Что касается соблюдения субординации, здесь от молодого «гения» требуется выслушивать, и главное, выполнять указания непосредственного руководителя, который часто «гением» не является.
В период рассвета холиваров на тему «олимпиадников-программистов» были распространены два полярных мнения — «олимпиадники не годятся для промышленной прикладной разработки» и «олимпиадники работают за десятерых, на них держится половина ИТ-компаний мира».
В какой-то момент холивары поутихли, но российские олимпиадники продолжают побеждать на турнирах и регулярно получают предложения о трудоустройстве от западных компаний. И до сих пор не каждый из них соглашается на такие предложения: кто-то считает, что российские мозги не должны утекать за границу, кто-то даже продолжает обучение в аспирантуре или магистратуре, занимаясь своей научной работой, которая подчас оказывается никому не нужной, но очень сложной и интересной.
Человеческий фактор
Команду СПбГУ к олимпиаде готовил Андрей Лопатин, известный своим участием в разработке социальной сети «ВКонтакте». При подготовке студентов к чемпионатам Лопатин старался учитывать не только талант, но и человеческий фактор — кто с кем сработается, что происходит в команде, как успокоиться перед финалом. Он понимал, что по-настоящему командная работа нелинейно увеличивает шансы на победу. Командная работа — это установка интересов коллектива выше собственных, это делегирование задач, признание своих слабых мест, и даже, в чем-то, принятие собственного бессилия.
Если бы такая работа не была выстроена, то сборная ВУЗа могла превратиться в сборище «непризнанных гениев», единоличников, каждый из которых тянул бы одеяло на себя. Кстати, таким поведением отдельные олимпиадники как раз и заслужили репутацию «трудных» сотрудников, бросая тень на более сознательных коллег по цеху.
Год назад Лопатин говорил, что навыки олимпиадников в работе помогают, однако их адаптация к работе над коммерческим продуктом проходит всегда непросто: «Чем ближе компания к стартапу, тем быстрее этот процесс происходит. А «ВКонтакте» долго жила именно в такой атмосфере», добавил он.
В этом году, 23 мая, Лопатин побеседовал с изданием «Секрет фирмы»:
— Мне кажется, компаниям стоит быть более открытыми и участвовать в конкурсах и олимпиадах. Нужно, чтобы люди из компаний постоянно встречались и общались с программистами. Ведь что такое олимпиада? Это один из путей становления программистов. Олимпиады многие критикуют, будто они оторваны от реальности. Это не так, задачи, которые решаются на соревнованиях, — часть каких-то больших задач.
Если соревнования (стараниями организаторов) и их участники (стараниями тренеров) будут так же настойчиво (как описывает Лопатин) приближаться к реальности, то шансы ИТ-компаний принять на работу адекватных и коммуникабельных «гениев» будут расти и дальше. В этом случае доля лиц, негативно настроенных по отношению к олимпиадникам, уменьшится.
Другое дело, что обычные ИТ-компании могут считать Google, Microsoft и даже «Яндекс» оторванными от реальности. Им не нужно думать о банальном выживании. Мол, они могут себе позволить проводить эксперименты, замахиваться на проекты, которые не в состоянии «потянуть» простые смертные. В этом случае олимпиадники подходят как нельзя лучше. Тем более, что большинство этих проектов все равно не дойдет до релиза, а после закрытия одного проекта олимпиадника переведут на очередной «перспективный» фронт работ —, а вдруг все-таки случится технологический прорыв после (N+1)-й попытки?
— Вы замечаете среди программистов людей с предпринимательским мышлением, людей, которые хотят открыть своё дело?
— Среди моего окружения такого мало, хотя тема интересная. Не знаю, почему-то об этом не принято задумываться. Может быть, нужно подумать о том, как переломить эту тенденцию.
От себя добавлю, что встречал, как минимум одного, олимпиадника-программиста, который основал свою ИТ-компанию и до сих пор ее возглавляет. Начинал он в команде АлтГТУ в 2005 году, но на старших курсах переключился на другие проекты: сначала устроился iOS-разработчиком на полставки, а потом и вовсе занялся заказным проектом для МВД. Закончив ВУЗ, вместе с одногруппником (который олимпиадником, кстати, не был) они запустили собственный проект, который стал полноценной ИТ-компанией через 2 года. Возможно, этот случай является исключением.
За что еще не любят олимпиадников-программистов
Один из пользователей сайта «Хабрахабр», основываясь на личном опыте, сформулировал негативные особенности сотрудничества с олимпиадниками-программистами в компаниях, занимающихся прикладной разработкой.
Знание эффективных алгоритмов или внутреннего устройства процессора заставляет их думать, что код должен быть максимально эффективен. Таким образом на оптимизацию тратится слишком много времени, код становится совершенно неподдерживаемым, нерасширяемым и неустойчивым к ошибкам, сетует он.
А это, вероятно, из наболевшего:
• Попытка сразу писать быстрый/нетребовательный к ресурсам код;
• Желание выжать из кода все, в ущерб остальным показателям;
• Вера в то, что O (n) вместо O (n^{2}) или замена всех операций умножения на 2 на побитовый сдвиг сделают из программы конфетку.
Нерушимый миф
Существует расхожий миф о том, что все спортивные программисты уходят в Google или, как минимум, в «Яндекс», где вдохновенно трудятся над поисковыми алгоритмами и иже с ними. Портал dev.by опросил 21 финалиста АСМ ICPC. Среди них нашелся один человек, занимающий должность в Microsoft, один — в Google и один — в «Яндекс». Остальные работают в менее «раскрученных» компаниях.
Однако на Geektimes нашлась еще одна история олимпиадника, подтверждающая данный миф. Более того, этот человек, Александр Куприн, попал сначала в «Яндекс», а потом в Google.
Приводим самые интересные фрагменты его истории:
В теории всё было не очень страшно. Страшно было на практике. На меня обвалилось столько ужасно незнакомых вещей, что даже гитом [репозиторий Git] пользоваться не приходилось — вместе с ребятами я один-единственный раз выкачал репозиторий, а потом всё делал локально. Забегая вперёд, скажу, что в последний день летней стажировки [в «Яндексе»] отправил свой код на почту начальнику, а не что-то куда-то внедрил.
Задание начальство подобрало с душой. Нужно было каким-то образом научиться сравнивать документы на похожесть, ввести определение похожести и делать это всё достаточно быстро — ну, в предположении, что у нас овер 10^9 документов.
С горем пополам и божьей помощью декомпозировав задачу, я приступил к поиску решения. Ребята советовали разные статьи. Но как должен поступить настоящий олимпиадник? Конечно же придумать что-то своё!
Читал статьи и думал я где-то неделю. Дальше произошёл переломный момент, которым я горжусь до сих пор: я придумал решение. В дальнейшем практика показала, что оно оказалось уж точно не хуже аналогов, которые всё равно пришлось реализовывать для построения графиков и убеждения начальства.
В итоге, на своё первое ревью я «отправил» нечто, состоящее из 300+ строк кода. В свою защиту могу сказать, что эти 300+ строк полностью решали поставленную задачу. Ребята бились в истерике. Артём Бабенко плакал кровавыми слезами и говорил, что больше пяти раз он не станет принимать мой код.
В дальнейшем мой код рос и ширился. Это было как-то глупо и странно, учитывая, что функциональность не менялась. Пять раз быстро исчерпались, и со мной существенную часть времени проводил другой начальник Егор Самосват. Несмотря на то, что я чувствовал себя идиотом и выглядел ничуть не умнее, происходящее мне нравилось. Фактически, я учился в одновременно комфортных и боевых условиях.
А тем временем работа медленно подходила к концу. Как мне кажется, по большому счёту я справился. Пусть и не так здорово, как могло бы быть, но справился. Дабы не терять контакты, меня пообещали взять где-то зимой на удалёнку.
Прогнозы
Мнения об олимпиадниках по-прежнему разнятся. Противники подобных дискуссий могут сказать, что сколько людей — столько и мнений, все люди разные. Однако на основе этих мнений и историй можно выявить некие усредненные, наиболее вероятные, тенденции, которые необходимы тем же ИТ-компаниям и прочим неравнодушным для прогноза, для принятия судьбоносных бизнес-решений.
На фоне исследований и опросов (например, опрос компании Universum или исследование Smart Start) современные тенденции таковы, что студенты, и студенты-программисты в том числе, становятся все более прагматичными и «приземленными», меркантильными.
Относится ли данная история к олимпиадникам-программистам? Меняются ли они в ответ на вызовы времени? Или они продолжают жить где-то в своей «параллельной Вселенной», как думают многие?