Всем привет! На днях я завершила процесс поиска новой работы на позицию Senior Developer. Я прошла множество разноплановых интервью и, разумеется, несколько раз столкнулась с главным, на мой взгляд, врагом сеньор-программиста на собеседованиях: ступором.
Стресс, желание показать себя в лучшем виде, давление высоких ожиданий и требований - этот коктейль иногда вскипает. Внезапно, может даже после самого простого вопроса (ответ на который вы точно знаете), голова становится полностью пустой, вы не можете выдавить ни слова и написать не то, что строчки, а даже одного символа кода, и долгие секунды тянутся вечность, лишь усугубляя ситуацию. Звучит страшно? На деле тоже очень не приятно.
Вы можете идеально подготовиться, все знать, уметь и еще сверху повторить. И вы абсолютно точно отличный специалист. Но как побороть давление ситуации и разобраться со ступором, который возник уже в процессе собеседования, когда вы с интервьюером смотрите друг на друга лично или через монитор, а от вас ждут действия?
В этой статье я попыталась по горячим следам обобщить свой совсем свежий опыт прохождения интервью на позицию Senior Developer, и поделиться с вами рецептами, при помощи которых я борюсь со ступором на собеседованиях.
Этап 1. Первое общение с HR
Данный этап обычно проходит спокойно. Общие вопросы о вашем опыте, об ожиданиях, об интересе к вакансии. Самый безопасный в плане вероятности возникновения ступора этап. И даже если на пару секунд зависните - не страшно.
Ситуация: стресс может возникнуть, если речь
идет о вакансии с требованием иностранного языка. Если у вас в
резюме указано владение английским - у вас могут что-то на нем
спросить и попросить на нем же ответить. Без практики это
однозначно может вызвать ступор.
Рецепт: если вы рассматриваете вакансии с
иностранным языком, перед созвоном (и перед описанным ниже этапом
soft skills) попрактикуйтесь - проговорите какие-то ответы на общие
вопросы вида чего вы ожидаете от будущего места работы, какие
качества коллег для вас имеют значение. Если вы знаете язык, но
мало практиковались - разминка спасает от ступора.
В остальном тут обычно все спокойно. Основное веселье начинается после того, как вам предложили пойти дальше.
Этап 2. Оффлайн-тест
Вы поболтали с HR и вам предложили пройти небольшое тестовое
задание на пару часов. Задачи, немного теории. Казалось бы, с чего
тут может возникнуть ступор то?
Ситуация: комфортные условия, никто не наблюдает,
никакого стресса Вы запускаете приложение с тестом, читаете
условие, и перед глазами пелена.
Рецепт: на этот случай он у меня один (помимо
очевидных вида кофе заварите заранее)
- Перед тем, как приступить к тесту - решите несколько
алгоритмических задачек на своем языке программирования. Просто
чтобы набить руку и размяться. Обычно на офлайн-тесте время
ограничено, и задачу, которую вы 100% решите, вы можете не успеть
решить достаточно быстро. Тренировка тут единственный способ, на
мой взгляд.
Этап 3. Теоретические вопросы по основам
И вот она, встреча с интервьюером лично.
Первое, что нужно помнить: теоретические вопросы по основам однозначно будут. Иногда даже самые банальные, самые поверхностные и самые базовые. Как показывает мой личный опыт - не так страшен сложный хитрый вопрос, как вопрос: что такое HTTP (а вы как раз не повторили точное определение!). Вот тут и появляется он - леденящий душу батюшка ступор. Голова пустая, только пульсирует мысль: Но я же знаю, я постоянно работаю с HTTP, это вообще основа всей моей работы, почему я не могу сказать ни слова. И долгие секунды вы смотрите на интервьюера в шоке сами от себя.
Итак, рецепты:
-
Не бойтесь этого. Вы правда можете забыть определения и формулировки самых базовых вещей. Это часто встречается, посмотрите, к примеру, статью квадрант компетентности. Этот случай я отношу к неосознанной компетентности - когда знание уже впиталось в "подкорку": вы на уровне рефлекса умеете с этим работать, но сформулировать вслух сложно. В такой ситуации помните: забыть что-то базовое на собеседовании - это ожидаемо, и при стрессе случается даже у лучших. Эта мысль зачастую помогает успокоиться в момент первой паники.
-
Но ответ таки нужно дать. Скажите интервьюеру что-то в духе: Так, я не могу слету вспомнить красивое академическое определение, потому буду говорить своими словами. И начинайте говорить все свои ассоциации. Вы уже не вспомнили слету идеальное определение, так что настало время для неидеальных. И знаете, скорее всего вы скажете все более менее правильно.
-
Воспользуйтесь помощью аббревиатуры, если она там есть! Попробуйте её расшифровать. На примере HTTP: Хипер-текст трансфер протокол А-а-а, трансфер протокол, точно! И понеслась. Мозг заработал, ступор побежден!
-
Но я действительно этого не знаю Иногда вы на самом деле не знаете ответа на вопрос, впервые видите какой-то синтаксис или никогда не читали о каком-то базовом понятии. Даже ассоциаций никаких нет. Такое тоже может случиться. Решение - скажите об этом прямо как есть. Если честно, я не знаю. Вообще, даже ассоциации никакой не приходит. Это как минимум сэкономит всем время и покажет вашу честность и умение признавать свои пробелы (первый шаг к решению проблемы - её признание, помните?). А как максимум - интервьюер подкинет еще пару смежных понятий, и окажется что вы таки понимаете о чем речь и сможете вполне прилично ответить.
Примечание: Кстати, именно там, где я поначалу словила ступор на вопросе что такое PHP-FPM? мне в итоге сделали отличный оффер на сеньор девелопера со стеком PHP+Golang. Видите, не так страшен волк, как его малюет наше паникующее сознание.
Этап 4. Лайвкодинг
Раньше это была самая страшная для меня секция. Что может быть хуже - ты отлично рассказал о своем супер-опыте, теория отскакивала от зубов, но вот тебе дали задачу, ты один на один с кодом и Не можешь написать ни строчки. Дальше мрак и паника, они решат, что я дилетант, дно, чсв-теоретик который на самом деле ничего не умеет
Но это чушь. Коллеги, вы собеседуетесь на сеньора. Вы уже работали программистом. А это значит, что вы совершенно точно, 100% умеете писать код. И единственная причина, почему вы не можете написать ВООБЩЕ ничего - гребаный ступор.
Мои рецепты преодоления ступора на лайв-кодинг секции:
-
Не можете написать ни строчки? Напишите пару символов! Объявите переменную. Голова боится, а руки делают. Это поможет преодолеть первую панику, погрузит вас в привычную вам сферу - написание кода.
-
В задаче присутствует массив? Напишите цикл, который для начала просто по нему пробежится. Постепенно шаг за шагом добавляйте условия из требования.
-
Скажите интервьюеру прямо: Буду решать маленькими шажками поэтапно! Возможно, в процессе реализация поменяется полностью!. Интервьюер, скорее всего, и так не против, но вам это поможет побороть очень опасную и совершенно необоснованную мысль: а вдруг я начну писать дичь, вот позорище, меня посчитают идиотом Но вы предупредили, что можете начать писать дичь, и вообще Кент Бек и другие гиганты завещали не пытаться решать все сразу правильно, а решать маленькими шажками. Это прекрасная методология. Все в порядке.
-
Озвучивайте! Каждое действие проговаривайте вслух.
Свежий пример из жизни:
Так, мне надо заполнить двумерный массив рандомными числами от 1 до 100 без повторений Слету решение в голову не пришло (прим. помните, у нас же был ступор), потому буду писать поэтапно. Для начала, напишу цикл for, заполню хотя бы одномерный массив не-рандомными числами. Ага, теперь нам понадобится функция rand. А нам двумерный нужен был? Так, делаем вложенный цикл. Вот, супер, заполнили А как бы теперь избавиться от коллизий А, так надо отдельно хранить все значения, которые мы уже использовали!.."Вот так, шаг за шагом я пишу и всё проговариваю вслух. Интервьюер видит развитие мысли, и знаете, мне кажется, им обычно это нравится! Они ведь, зачастую, ход вашей мысли хотят узнать куда больше, чем получить эталонное решение.
-
Не пытайтесь сразу оптимизировать решение. Скорее всего, об этом вас все равно потом спросят - потом и подумаете. Но у вас будет хотя бы неоптимальное решение, с которым можно работать дальше.
-
Бонусный пункт: кстати, с кодом вы вовсе не один на один. Интервьюер тоже в деле, и запросто может направить/подкинуть идею. Иногда это только сбивает - тут не стоит сразу бросаться решать его методом - так можно снова впасть в ступор, лучше просто вслух проанализировать идею. А иногда стоит и прямо попросить подсказку, так и сказать: Что-то у меня ступор, подскажите, пожалуйста, с чего начать вот тут. Лучше спросить и хотя бы попытаться сделать, чем даже не спросить и проиграть всего-то собственной панике.
Примечание: иногда в очень серьезных статьях я видела советы вида сначала хорошенько продумай решение, а потом начинай писать!. Но лично мне, к сожалению, такой подход никак не помогает преодолеть ступор, а наоборот, только его усугубляет. Если чувствуете что-то похожее - попробуйте начать писать код по пошаговому рецепту.
Примечание 2: рецепты работают и при написании SQL-запросов. Точно также, начинайте с обычного SELECT, постепенно добавляйте условия.
Этап 5. Архитектурное собеседование
Казалось бы, вот оно, море, в котором мы почувствуем себя рыбой в воде, а то и акулой этого бизнеса. Сейчас то я покажу свой скилл в построении распределенной архитектуры, выборе хранилищ и знании паттернов систем пакетных вычислений!
Вам говорят: Спроектируйте простенькое приложение по загрузке и обработке csv-файлов пользователя, где он хранит данные о своих покупках за месяц.
Не вопрос! Очереди, распределенные хранилища, шарды, реактивная архитектура
Интервьюер: Так а как пользователь файл загрузит то?..
Все в мире: через форму на сайте методом POST!
Вы: (тут начался ступор)
Это абсолютно свежий пример из жизни. Я то думала, что от меня
ожидают верхнеуровневых определений и в целом перечисления всего,
что бывает. И простой жизненный вопрос сбил с толку.
Рецепты преодоления ступора следующие:
-
Выкиньте из головы мысль, что вам нужно предусмотреть сразу все. Это только застопорит вас. Представьте, что вам просто надо сделать самую простую базовую фичу на одной физической машине, и начинайте говорить, можно попутно рисовать модель на бумажке. А уже после вопросов интервьюера вида: А где хранить, а как снизить задержку, а обеспечьте доступность, масштабируемость, отказоустойчивость и т.д., - добавляйте элементы. Он точно спросит.
-
А если не знаете - не страшно. Предполагайте и предлагайте. Помните: архитектура, не смотря на то, что казалось бы каждый чих покрыт паттерном, методологией и готовым решением - это все равно более стратегический вопрос. Единственно правильного решения архитектурной задачи НЕТУ. Все зависит от конкретного сервиса, требований, возможностей бизнеса и т.д.. Знать всё - невозможно. А вот предполагать - это нормально, может именно этого от вас и ждут.
В целом этих двух рецептов должно хватить для преодоления первого ступора на архитектурном собеседовании. Особенно если вы не знали, что такое собеседование вообще будет.
Этап 6. Софт-скиллз (или общение за жизнь, опыт и планы)
Обычно в этом месте уже идет знакомство с командой, обсуждение планов на будущее. И тут вам больше не нужно пройти дальше что бы то ни было. Тут вам следует самому понять, хотите ли вы идти дальше именно с этой командой.
Этот этап я для себя называю Обоюдные смотрины. Теперь не только
вас оценивают, тут уже и вы решаете, подходят ли вам эти люди,
сможете ли вы с ними плодотворно работать и развиваться. И именно
это отношение помогает преодолеть любой ступор.
Примечание: вы, разумеется, также оцениваете команду на всех
этапах, но на мой взгляд именно этот этап - ключевой.
Да, тут все равно может попасться вопрос, который собьет с толку, на который не будет ответа.
Примеры:
-
А вспомните последнюю конфликтную ситуацию на работе. Что думает паникующий мозг? Как правильно ответить, что они хотят услышать, а если я расскажу про тот случай, когда мы на повышенных тонах спорили в переговорке за лучший паттерн
Рецепт: посмотрите на вопрос как на возможность узнать команду. Если у вас был конфликт в действительно важной для вас ситуации, расскажите, обсудите. Если вы с командой не сработаетесь - вы сами же это почувствуете при обсуждении именно таких вопросов.
-
Еще одна ситуация, которая может вызвать ступор. Интервьюер: Теперь наша очередь отвечать на ваши вопросы. Задавайте! Мозг: Но как так то Надо что-то спросить?..
Рецепт: у вас точно это спросят, так что просто подумайте заранее, что для вас действительно важно, и составьте список вопросов на листочке.
Кому интересно - делюсь опытом. У меня недавно была эта ситуация. Я давно не собеседовалась, и настолько готовилась отвечать сама, что на вопрос А какие у вас к нам вопросы растерялась и еле выдала робкое а как у вас с удаленкой, когда в офис планируете?.
К следующему собеседованию я уже подготовилась и накидала на листочке важные для меня вопросы (карьерный рост, участие в конференциях, обучение, примеры реальных задач на последнем спринте). И к вопросу о моих вопросах была полностью готова. Знаете, есть у меня смутное чувство, что это сильно сыграло мне на руку как в плане того, что я и правда узнала всё, что для меня важно, так и интервьюеры узнали, чего я ожидаю. В одном из мест мой эйчар организовала дополнительную встречу с еще парой команд. И знаете что? Мои интервьюеры подготовились к моим вопросам заранее! Это было так приятно. Я даже не ожидала такого эффекта.
Заключение
Вот и все мои нехитрые рецепты. В данной статье я обобщила свой опыт успешного прохождения серии интервью на позицию Senior Developer.
Если даже одному человеку эта статья поможет на интервью преодолеть ступор хотя бы в одной из описанных ситуаций - значит она того стоила. Всем спасибо за внимание, и желаю вам найти место работы своей мечты!