10 ошибок, которые мешают пройти отбор на стажировку
Прежде чем попасть на стажировку в Яндекс, нужно успешно пройти отбор: заполнить анкету, выполнить тестовое задание и пройти от двух до трех технических интервью, а также финальные встречи с командами. На собеседованиях одинаково важны как технические знания, так и soft skills: умение работать в команде, готовность быстро учиться и стрессоустойчивость. Наставники и руководители групп, которые проводят секции, рассказали об ошибках, которые допускают будущие стажёры, и дали советы по подготовке.
Ошибки, связанные с фундаментальными знаниями и hard skills
Нанимающие, с которыми мы общались, единодушно назвали пять ошибок, касающихся технической подготовки.
Ошибка 1. Не знать базовых вещей про выбранный язык программирования или алгоритмы
Для того чтобы пройти отбор, обязательно нужно владеть техническими знаниями — а на самой стажировке вам помогут научиться применять их на практике. Перед собеседованием обязательно повторите стандартные алгоритмы (например, сортировки) и их сложность, вспомните основные структуры данных. Не забывайте про математическую базу и про особенности выбранного языка.
Евгений Калинин, руководитель группы разработки финансовых инструментов, объясняет: «Основная тема, которую проверяют на технической секции, — это алгоритмы. На стажировку обычно приходят студенты различных курсов технических специальностей, и если у студента плохо с алгоритмами, то это не очень хороший сигнал про его знания. Ещё критично незнание основ языка, на котором он собирается программировать».
Однако если вы допустили на собеседовании ошибку, то не стоит отчаиваться или паниковать: Интервьюеры также проверяют ваш навык работы над ошибками, кроме того, наводящими вопросами помогут вам разобраться с решением. Нанимающие будут смотреть на ваши ответы в целом, а не ждать, когда вы оступитесь.
Ошибка 2. Не задавать уточняющих вопросов и сразу приступать к решению задачи
Максим Зуев, старший разработчик группы бэкенда мобильных продуктов, рассказывает, что стажёры часто невнимательно читают условия — и в результате допускают ошибки. «Часто бывает так: студент получил задание на секции, увидел в нём что-то похожее на те задачи, которые он пачками решал в вузе, — и мгновенно выдал привычное решение. А там были дополнительные условия, которые требуют другого подхода», — сетует Максим.
Чтобы не допустить этого, обязательно внимательно перечитайте условия задачи и уточните всё, что понадобится вам для решения. Грамотно сформулируйте вопросы. Константин Фитиалов, старший разработчик службы бэкенда Яндекс.Плюс, поясняет: «Я ценю желание и умение разобраться в каждой детали задачи. Не бойтесь что-то уточнять у собеседующего. Грамотно заданный вопрос, например „Надо ли проверять граничные условия на входные параметры?“, может произвести даже лучшее впечатление, чем верное предположение».
Ошибка 3. Писать запутанный код, в котором сложно разобраться другим
В ходе стажировки с кодом, который вы пишете, будете работать не только вы, но и ваши сокомандники. Поэтому очень важно, чтобы ваши программы были понятными и логичными.
Евгений Зарубкин, руководитель группы разработки геопродукта, предлагает такой чек-лист для работы над кодом.
— Нарисуйте на бумаге пару случаев и выстройте логику решения. Обсудите её с собеседующим — ведь обычно от вас ждут конкретного оптимального решения.
— После того как вы придумали решение, подумайте, не реализована ли его часть в какой-то уже существующей структуре данных.
— Если в вашей программе есть цикл, то не забывайте про его начало и конец. Важно правильно инициализировать стартовые условия и обработать их внутри цикла. В конце обязательно обработайте последний кейс, если он не затрагивается внутри цикла.
— Не заводите лишние переменные. Почти всегда, когда кандидат заводит слишком много переменных, он забывает их обновлять и проверять. Иногда лучше немного подумать и оптимизировать количество переменных, чем потом запутаться и написать неправильное решение.
Ошибка 4. Не тестировать получившееся решение
«Если кандидат во время секции не проверяет код, это для меня означает, что во время стажировки мне придётся закладывать какое-то время на дополнительный контроль этого стажёра», — убеждён Максим Зуев.
Обязательно прогоните решение на пустом массиве, минимальном значении и других простейших краевых кейсах. Возьмите тестовые примеры из условия или придумайте их сами, посмотрите, как работает код и не возникает ли у вас ошибок.
Ошибка 5. Решать задачи в отрыве от действительности
Обязательно подумайте о том, как задание соотносится с задачами того сервиса, в который вы собираетесь. Николай Кривчанский, разработчик бэкенда Яндекс.Лавки, говорит: «Иногда люди на собеседовании удивляются, что их спрашивают про сложность операций: „А этим вообще кто-то пользуется?“ На самом деле — да. Когда ты разрабатываешь приложение, то хочется, чтобы оно быстро работало. За время разработки крохотные структуры могут вырасти до огромных размеров. И если ты изначально сделал архитектуру такой, что она не масштабируется, то всё будет работать медленно: придётся искать, в чём проблема, и переделывать».
Кроме того, многие задачи легче решать, если попробовать перенести их в реальную жизнь. Например, реализовать random4() с помощью random2() — это то же самое, что выбрать случайного человека из четверых людей в компании при помощи монетки. Такую задачу может решить даже студент, не знакомый с разработкой.
Ошибки, связанные с soft skills
Стажёрам важнее всего уметь работать в команде и быть готовыми быстро учиться, но есть и другие гибкие навыки, которые помогут пройти на стажировку и успешно с ней справиться: гибкость и умение адаптироваться к новым условиям, грамотный тайм-менеджмент и т. д. Если вам их не хватает, то это, скорее всего, проявится уже на собеседовании.
Ошибка 1. Слукавить или, наоборот, поскромничать в резюме
Информацию, указанную в резюме, всегда проверяют в ходе разговора, поэтому лучше писать о тех навыках и знаниях, в которых вы точно уверены. Кроме того, в портфолио стоит рассказать о тех проектах, работа над которыми вам понравилась, даже если это домашний проект или курсовая работа.
Евгений Зарубкин поясняет: «Если в резюме мало информации, то я спрашиваю, есть ли какие-то проекты, которые человек написал просто для себя. Обычно у всех что-то лежит на GitHub или есть университетская работа, про которую забыли упомянуть. Важно не то, серьёзный это был проект или нет, а опыт и увлечённость будущего стажёра».
Ошибка 2. Придумывать ответ на ходу и делать вид, что он уже известен
Собеседование — это не экзамен, и решение всё равно будет приниматься на основе общего впечатления, а не ответа на отдельный вопрос. Стажёры могут что-то не знать или не помнить, и это совершенно нормально. К тому же руководителю важно быть уверенным, что человек в будущем попросит о помощи, если ему это понадобится, а не скроет возникшую проблему.
Илья Волков говорит: «Когда кандидат не может решить задачу, я начинаю давать советы и смотрю на то, как человек их воспринимает. Если он понимает подсказки и докручивает решение в верном направлении, то я делаю вывод, что человек хорошо обучаем. Это важное качество».
Ошибка 3. Менять утверждённый план решения, как только в голову пришла новая идея
Сомневаться и всегда пытаться найти оптимальное решение — это отличная привычка для разработчика. Однако при этом важно доносить до других свои планы и светлые идеи. Это даст другим людям возможность поддержать вас и предупредить о возможных трудностях.
Максим Зуев рассказывает: «Бывает так, что кандидат по ходу написания кода молча меняет план — и в итоге делает ошибки либо закапывается в новые проблемы. Это плохой сигнал для найма, ведь человек будет делать так и в работе, а в команде очень важно следовать договорённостям и работать прозрачно для других. Новые идеи заслуживают того, чтобы их сразу проговорить».
Ошибка 4. Прийти на стажировку в то место, которое вам недостаточно нравится
Лучше выбрать проект и задачи, которые будут доставлять радость, чем идти стажироваться просто потому, что «так надо». Если вы попадёте в команду, задачи которой вам неинтересны, то рискуете быстро выгореть и разочароваться.
Так, для Ильи Волкова главные качества хорошего стажёра — это огонь в глазах и самобытность. «Разработка — игра головой, поэтому умения просто следовать указаниям недостаточно. Если у человека есть огненное желание работать над конкретными задачами и он с увлечением об этом рассказывает, то это большой плюс».
Максим Зуев всегда прямо спрашивает людей, чего они хотят от работы. Он объясняет это так: «С одной стороны, человек расскажет про свою мотивацию, а с другой — мне станет понятно, будет стажёру интересно работать над моими задачами или нет».
Ошибка 5. Провалить собеседование, упасть духом — и больше не пытаться
В Яндексе есть система, в которой фиксируются результаты бесед со стажёрами. Перед очередной встречей собеседующие посмотрят на результаты ваших предыдущих секций и обратят внимание на то, не повторяете ли вы прошлые ошибки. Если стажёр чего-то не знал, а через полгода вернулся с хорошими знаниями, то это добрый знак: значит, он умеет работать над собой и не боится пробовать снова.