«Больше не участвую. Сотрудникам нельзя»

Интервью с Андреем Вавиловым — призёром соревнований Яндекса по программированию.

В прошлом году Андрей победил в соревновании по фронтенд-разработке Яндекс.Блиц, но не стал устраиваться в компанию. В этом году он снова попробовал себя — принял участие в майском чемпионате по программированию, занял 12 место и воспользовался возможностью пройти собеседование в Яндекс по упрощённой схеме. Теперь он работает над интерфейсами Карт. К запуску чемпионата Yandex Cup Андрей рассказал нам, почему всем разработчикам важно знать алгоритмы, какова мотивация для участия в таких соревнованиях и как попасть в финал.

Путь фронтенд-разработчика

Ты уже в школе начал увлекаться математикой?

Я учился в самой обычной школе в Нижнем Новгороде. Сначала был в математическом классе, а затем перешёл в класс информатики. Да, математика мне была интереснее других предметов, наверное, из-за склада характера. Эпизодически я участвовал в олимпиадах. Это не было целью, я не готовился к ним целенаправленно, в отличие от других ребят, и призовые места не занимал. Так что не скажу, что они сильно на меня повлияли.

Отчасти повлиял университет. Правда, я его так и не закончил. Полтора года я проучился в Университете Лобачевского, после чего перевёлся на заочное обучение в другой вуз и параллельно начал работать JavaScript-программистом в интернет-провайдере. Занимался интерфейсами, работал над внутренними сервисами, такими как интранет или трекер задач. Работа в тот момент была важнее учёбы.

Философский вопрос: почему ты стал фронтендером и что тебе особенно нравится в профессии?

У меня произошло несколько стадий эволюции: от «мне нравится, что я сразу вижу результат моего труда» до «я создаю интерфейсы, они помогают людям общаться с машинами». Мне интересна разработка и программирование в целом. Фронтенд — не единственное, чем я готов заниматься. Если будет бэкенд с интересными задачами на одном из тех языков, которые я знаю, могу переключиться на него.

Как дальше развивалась твоя карьера? Когда ты начал участвовать в соревнованиях по программированию?

После интернет-провайдера я работал в дизайн-студиях и в какой-то момент попробовал силы в своём деле: мы с друзьями открыли онлайн-типографию. Это был сервис, который позволял в три клика сделать печатную продукцию и заказать её доставку прямо в руки. Потом был стартап по автоматизации кафе и ресторанов — аналог системы R-Keeper. Последние три года я работал над AutoML-платформой, в которой можно быстро создавать ML-модели для предсказания чего-либо.

231

Что касается соревнований, до Блица я участвовал только в хакатонах и в подобных мероприятиях. Яндекс. Блиц — моя первая попытка именно в спортивном программировании. В моей специализации, во фронтенде, соревнований не очень много. Поэтому меня и привлёк Блиц. В отличие от множества других соревнований, там были задачи на стыке алгоритмов с фронтендом.

Откуда ты знал алгоритмы? Что тебя побудило с ними познакомиться?

Мне кажется, это общая фундаментальная подготовка. Изначально я не уделял алгоритмам достаточно внимания, так как 90% времени не взаимодействую с ними напрямую. Не знаю — ну и ладно. Но в какой-то момент осознаёшь, что базовые знания об алгоритмах и структурах данных необходимы для профессионального роста. Даже интерес к более системным языкам, например к C++, уже обогащает тебя как специалиста. Знание структур и алгоритмов позволяет понять, как работают язык и система в целом, что скрывается «под капотом». Если копнуть поглубже, можно узнать много полезного и значительно повысить свой скилл.

Яндекс.Блиц

Расскажи о своём участии в Блице.

За пару дней до начала квалификации я увидел пост с анонсом в соцсетях Академии и подумал, что это что-то новое для меня, классный опыт. Также, естественно, меня заинтересовали призовой фонд и дополнительные бонусы победителям. Смешной момент: до самого финала я не знал, что конкурс позиционируется как короткий путь в Яндекс: двадцатку финалистов приглашают пройти собеседования по упрощённой схеме.

Я участвовал, потому что хотел узнать, с какими задачами сталкиваются разработчики такой крупной компании и смогу ли я их решить

Подготовка заняла примерно 3–4 часа. Освежил знания про алгоритмы и структуры. В будни я работал и даже после 18:00 не смог бы переключиться, вечером уже накапливается усталость. Поэтому отложил прохождение Блица на выходные.

В квалификации на каждое задание давалось 100 попыток. Через пару минут после отправки решения приходит результат: видно, сколько баллов ты набрал за это задание, на сколько процентов его решил. Результат можно улучшить. Невероятно сложно с первого раза сделать задание идеально, разве что самые простые, которые идут в самом начале. Возможно, четыре задания я сделал на 100 процентов и ещё два — процентов на 60–80. На квалификации результаты были похуже, чем в финале, зато в финале я собрался с силами и понял, что могу отлично всё решить.

Когда ты пробился в финал, замотивировало ли тебя это сильнее готовиться?

Между квалификацией и финалом проходит неделя. За это время я тоже выделил часа четыре и уже целенаправленно почитал некоторые книги и статьи.

231

В последний час соревнования результаты замораживаются, то есть ты видишь своё место только по итогам четырёх или пяти заданий. Можно примерно оценить, входишь ты в топ-20 или нет. Дальше наступает момент интриги и напряжения: вроде есть ощущение, что сделал хорошо, но нет понимания, победил ли. Мне удалось победить.

Затем меня пригласили на награждение, сразу после которого можно было пройти собеседование в Яндекс. Я отказался, так как у меня не было задачи сюда устроиться — не хотел менять место работы.

Участие в чемпионате по программированию

А что привело тебя к участию в чемпионате?

Тоже соцсети. По описанию я понял, что это то же самое, что и Блиц, только поменялось название и появились секции по бэкенду, аналитике и машинному обучению. Подумал, раз в прошлом году было интересно, значит, и сейчас должно понравиться. Мне захотелось посмотреть, какие будут задания, станет ли ещё больше специфики для фронтенда.

Подготовка к чемпионату чем-то отличалась?

Если в Яндекс. Блице я готовился ко всему подряд, то в чемпионате я уже точно знал, на что будут направлены задания, и при подготовке фокусировался на определённых темах.

Я посмотрел разбор Блица на Хабре. Это помогло, потому что в квалификации было как минимум четыре варианта заданий, а когда ты решаешь, видишь только один вариант. В разборе предлагался микс заданий из разных вариантов — можно было посмотреть задания, которые тебе не попались, и какие-то разобрать подробнее. Самые сложные — шестые задания в финалах, там требуются знание алгоритмов и фундаментальная подготовка. Первые задания довольно лёгкие и традиционные, видимо, для разогрева, чтобы участник точно их сделал. Вторые, третьи и четвёртые больше направлены на креативность. Они несложные, но в них есть что-то необычное.

Я не понимал, удастся ли мне войти в топ-20, так что до последнего момента не думал о собеседованиях в Яндекс. Когда узнал результат, решил попробовать устроиться. Это было спонтанным решением.

Собеседования в Яндекс

Почему ты в этот раз решил пройти собеседования? Что изменилось?

Наверное, я осознал, что мне хочется перемен, а Яндекс — то место, где я смогу расти дальше. Работу здесь я расцениваю как попытку выйти за границы своих возможностей.

В упрощённом варианте собеседования вместо четырёх технических секций было три: секция на общее знание JavaScript, асинхронная секция (проверяют, как ты пишешь асинхронный код) и секция про алгоритмы и структуры данных. Получается, тут не было секции про HTML и CSS, хотя в какой-то мере одно задание, связанное с ними, было в секции про JavaScript.

Через неделю после того, как я прошел технические секции, были встречи с тремя командами из геосервисов. Обстановка уже, естественно, стала более расслабленной. Мы обсуждали задачи, которыми было бы интересно заниматься. Так можно понять, куда ты больше подходишь, где, как тебе кажется, ты будешь лучше себя чувствовать и принесёшь больше пользы. Я выбрал большие Яндекс. Карты. На мой взгляд, это хорошая точка входа, чтобы познакомиться с геосервисами через самый масштабный и сложный проект.

Пару слов про переезд в Москву?

Мы переезжали с женой и нашим котом. Конечно, это не самое простое решение, но нам не было сложно поменять город. Тем более, что между Нижним и Москвой три часа на поезде — не такой уж большой переезд. К тому же у Яндекса отличная релокационная программа, которая во многом помогает.

Продолжишь участвовать в соревнованиях?

В соревнованиях Яндекса уже, скорее всего, нет, потому что сотрудникам нельзя в них участвовать. А в других — да. Правда, очень избирательно. Например, я участвовал в соревнованиях Telegram, и если они снова будут, то я постараюсь поучаствовать.

В какой-то момент застаиваешься с одними и теми же задачами — нужна встряска

Участие в подобных соревнованиях хорошо раскачивает и побуждает попробовать что-то новое.

Краткий пересказ от Yandex GPT