От студента до мидл-разработчика за полтора года: опыт выпускника Академии Яндекса

Осенью 2021 года Дмитрий Анфимов поступил в Школу бэкенд-разработки Академии Яндекса. Он успешно прошёл обучение, попал на стажировку и вырос до мидл-разработчика в Яндекс Учебнике. Дима рассказывает, что помогло ему пройти все этапы от студента школы до сотрудника компании, и делится советами с теми, кто только начинает путь.

Как готовился к поступлению в Школу бэкенд-разработки

Перед четвёртым курсом института я увидел, что в сентябре Академия Яндекса начинает набор в Школу бэкенд-разработки, ШБР. Тогда я учился в Северном (Арктическом) федеральном университете в Архангельске на кафедре прикладной математики и информатики. Опыта работы или стажировки в IT-компании у меня не было. Но ещё со школьных лет я участвовал в олимпиадах, где решал алгоритмические задачи — именно они входили в первый этап отбора ШБР.

В институте я занимался спортивным программированием и несколько раз участвовал в ICPC, Международной студенческой олимпиаде по программированию. Там тоже нужно было решить несколько алгоритмических задач за ограниченное время. Но в соревновании участвовала команда, а не отдельный человек.

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

Как проходил отбор в школу

Я поступал в Школу бэкенд-разработки на трек Python. В моём потоке было два этапа отбора, оба проходили онлайн:

1. Контест. Нужно решить пять задач за ограниченное время. Система проверяет их автоматически и выдаёт результат. Я правильно решил три задачи.

2. Интервью с менторами школы. Если в решении алгоритмических задач у меня уже был солидный бэкграунд, то собеседований я никогда до этого не проходил. Поэтому испытывал сильный стресс и, по моим ощущениям, отвечал не очень уверенно.

Интервью длилось 40 минут. Нужно было решить одну небольшую задачу, чтобы показать, что контест проходил действительно я. А затем рассказать о своём опыте, мотивации, почему я поступаю в школу и что хочу получить от обучения. В конце беседы можно было задать свои вопросы.

Совет от Димы: репетируйте речь перед интервью

Я чуть не провалил три собеседования. Позже я обсуждал эту ситуацию с коллегой и он рассказал мне, как готовился. Он репетировал с другом, что и как будет говорить на встречах. Если десять раз проговорить перед кем-то свою речь в «Зуме», станет легче и страх уменьшится.

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

У кандидата проверяют базовые знания о языке, спрашивают, с какими технологиями он знаком. Например, нужно знать устройство типов данных в языке: какова сложность поиска ключа в словаре. Уметь объяснять основные понятия: что такое «замыкание», в чём разница между генератором и итератором. Ответы на эти и другие вопросы есть в хендбуках Академии Яндекса. По ним можно изучать основы языков Python и C++, а также основы алгоритмов.

Когда в школу набирают студентов, никто не смотрит на возраст, это здорово. Например, итоговый проект со мной делал десятиклассник, а в соседней группе был человек 35 лет. Школа никак не ограничивает людей, главное — пройти отбор. В одной команде можно собрать специалистов с разным опытом, и они будут учиться друг у друга. Я вообще не понимаю, кому сколько лет в Яндексе. Все общаются на «ты», все одинаково открыты и доброжелательны.

Из каких этапов состоит обучение

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

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

Совет от Димы: не бойтесь спрашивать

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

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

Если вы сидите третий час над задачей и не понимаете, что происходит, — подойдите к коллеге и попросите помочь. Если полдня бьётесь над домашкой в Школе разработки, задайте вопрос сокурсникам в чате или ментору. Все люди очень открытые, они готовы отвечать на вопросы, некоторым это даже нравится.

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

Все, кто остался, собрались в Москве. Мне оплатили проезд и проживание в хостеле. Нас разделили на несколько рабочих групп до шести человек, в которые вошли студенты из разных треков школы, и раздали проекты от сотрудников Яндекса. Эти задания были похожи на реальные фичи сервиса. За две недели наша команда под руководством наставника разработала небольшой сервис и защитила свой проект.

Как попал на стажировку в Яндекс

Для выпускников школ действует ускоренный процесс отбора на стажировку. Обычно нужно пройти две алгоритмические секции, после чего пообщаться с разработчиками из отделов Яндекса, где есть вакансии. У меня было только одно собеседование с кодом и интервью с будущими коллегами. Команду мне подобрала рекрутер после окончания учёбы — я попал в Яндекс Учебник.

Стажировка оплачивается, продолжительность зависит от того, сколько часов в неделю человек готов работать. Например, при полном рабочем дне она продлится три месяца, при 20 часах в неделю — шесть месяцев. На это время предоставляют проживание в хостеле вместе с другими стажёрами.

Когда я пришёл в команду, ко мне прикрепили опытного разработчика. Мы с наставником не так уж много контактировали, пару раз в неделю обсуждали общие вопросы. Но у меня был коллега, с которым мы сидели за соседними столами, я обращался к нему за помощью. Он пришёл в отдел на полгода раньше меня и тоже окончил Школу бэкенд-разработки.

Незадолго до окончания стажировки собирается фидбэк о стажёре и решается, останется он в компании или нет. Я попал в штат через пять месяцев стажировки и остался в команде Яндекс Учебника.

Ya

Что было после стажировки

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

Стажировка не сильно отличается от того, что делает обычный сотрудник, поэтому я легко адаптировался. Мы разрабатываем продукты в команде. Продакт-менеджер приносит идеи и требования для новой функциональности, которую нужно реализовать. Разработчики проектируют варианты реализации и решают, как лучше выполнить проект с технической точки зрения. Затем большую задачу распиливают на мелкие подзадачи и распределяют их между собой. Это только небольшая часть подхода, который называется Scrum, он помогает нам эффективнее организовать свою работу (подробнее об этой методологии можно прочесть в статье «Кто такой скрам-мастер»).

Когда человек приходит со стажировки в штат или когда его повышают, обязанностей становится больше. При этом и больше пространства для принятия решений.

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

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