Рецепты: как преодолеть ступор при собеседовании на Senior Developer? +10


AliExpress RU&CIS

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

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

В этой статье я попыталась по горячим следам обобщить свой совсем свежий опыт прохождения интервью на позицию Senior Developer, и поделиться с вами рецептами, при помощи которых я борюсь со стрессом на каждом из этапов.

Этап 1. Первое общение с HR

Данный этап обычно проходит спокойно. Общие вопросы о вашем опыте, об ожиданиях, об интересе к вакансии. Самый безопасный в плане вероятности возникновения ступора этап. И даже если на пару секунд зависните - не страшно. 

Ситуация: стресс может возникнуть, если речь идет о вакансии с требованием иностранного языка. Если у вас в резюме указано владение английским - у вас могут что-то на нем спросить и попросить на нем же ответить. Без практики это однозначно может вызвать ступор.

Рецепт: если вы рассматриваете вакансии с иностранным языком, перед созвоном (и перед описанным ниже этапом “soft skills”) проговорите ответы на общие вопросы вида “чего вы ожидаете от будущего места работы, какие качества коллег для вас имеют значение”. Если вы знаете язык, но мало практиковались - разминка спасает от ступора.

В остальном тут обычно все спокойно. Основное веселье начинается после того, как вам предложили пойти дальше.

Этап 2. Оффлайн-тест

Вы поболтали с HR и вам предложили пройти небольшое тестовое задание на пару часов. Задачи, немного теории. Казалось бы, с чего тут может возникнуть ступор то?

Ситуация: вы запускаете приложение с тестом, видите тикающий таймер, и перед глазами пелена.

Рецепт: на этот случай он у меня один (помимо очевидных вида “кофе заварите заранее”)
- Перед тем, как приступить к тесту - решите несколько алгоритмических задачек на своем языке программирования. Просто чтобы набить руку и размяться. Обычно на офлайн-тесте время ограничено, и задачу, которую вы 100% решите, вы можете не успеть решить достаточно быстро.

Этап 3. Теоретические вопросы по основам

И вот она, встреча с интервьюером лично.

Первое, что нужно помнить: теоретические вопросы по основам однозначно будут. Иногда даже самые банальные и базовые. По моему опыту - не так страшен сложный хитрый вопрос, как вопрос: “что такое HTTP”. Вот тут и появляется он - леденящий душу батюшка ступор. Голова пустая, только пульсирует мысль: “Но я же знаю, я постоянно работаю с HTTP, это вообще основа всей моей работы, почему я не могу сказать ни слова…”. И долгие секунды вы смотрите на интервьюера в шоке сами от себя.

Итак, рецепты:

  1. Не бойтесь этого. Вы правда можете забыть определения и формулировки самых базовых вещей. Это часто встречается, посмотрите, к примеру, статью “квадрант компетентности”. Этот случай я отношу к “неосознанной компетентности” - когда знание уже впиталось в "подкорку": вы на уровне рефлекса умеете с этим работать, но сформулировать вслух сложно. В такой ситуации помните: забыть что-то базовое на собеседовании - это ожидаемо, и при стрессе случается даже у лучших. Эта мысль зачастую помогает успокоиться в момент первой паники.

  2. Но ответ таки нужно дать. Скажите интервьюеру что-то в духе: “Так, я не могу слету вспомнить красивое академическое определение, потому буду говорить своими словами”. И начинайте говорить все свои ассоциации. Вы уже не вспомнили слету идеальное определение, так что настало время для неидеальных. И скорее всего вы скажете все более менее правильно.

  3. Воспользуйтесь помощью аббревиатуры, если она там есть. Попробуйте её расшифровать. На примере HTTP: “Хипер-текст трансфер протокол…” А-а-а, трансфер протокол, точно! И понеслась. Мозг заработал, ступор побежден.

  4. Иногда вы на самом деле не знаете ответа на вопрос, впервые видите какой-то синтаксис или никогда не читали о каком-то базовом понятии. Даже ассоциаций никаких нет. Такое тоже может случиться. Решение - скажите об этом прямо как есть. “Если честно, я не знаю. Вообще, даже ассоциации никакой не приходит.” Это как минимум сэкономит всем время и покажет вашу честность и умение признавать свои пробелы (первый шаг к решению проблемы - её признание, помните?). А как максимум - интервьюер подкинет еще пару смежных понятий, и окажется что вы таки понимаете о чем речь и сможете вполне прилично ответить.

Примечание: Кстати, именно там, где я поначалу словила ступор на вопросе “что такое PHP-FPM?” мне в итоге сделали отличный оффер на сеньор девелопера со стеком PHP+Golang. Видите, не так страшен волк, как его малюет наше паникующее сознание.

Этап 4. Лайвкодинг

Раньше это была самая страшная для меня секция. Что может быть хуже - ты отлично рассказал о своем супер-опыте, теория отскакивала от зубов, но вот тебе дали задачу, ты один на один с кодом и… Не можешь написать ни строчки. Дальше мрак и паника, “они решат, что я дилетант, дно, чсв-теоретик который на самом деле ничего не умеет…”

Но это чушь. Коллеги, вы собеседуетесь на сеньора. Вы уже работали программистом. А это значит, что вы совершенно точно, 100% умеете писать код. И единственная причина, почему вы не можете написать ВООБЩЕ ничего - стресс и ступор.

Мои рецепты преодоления стресса на лайв-кодинг секции:

  1. Не можете написать ни строчки? Напишите пару символов. Объявите переменную. Голова боится, а руки делают. Это поможет преодолеть первую панику, погрузит вас в привычную вам сферу - написание кода.

  2. В задаче присутствует массив? Напишите цикл, который для начала просто по нему пробежится. Постепенно шаг за шагом добавляйте условия из требования.

  3. Скажите интервьюеру прямо: “Буду решать маленькими шажками поэтапно. Возможно, в процессе реализация поменяется полностью.” Интервьюер, скорее всего, и так не против, но вам это поможет побороть очень опасную и совершенно необоснованную мысль: “а вдруг я начну писать дичь, вот позорище, меня посчитают идиотом…” Но вы предупредили, что можете начать писать дичь, и вообще Кент Бек и другие гиганты завещали не пытаться решать все сразу правильно, а решать маленькими шажками. Это прекрасная методология. Все в порядке.

  4. Озвучивайте. Каждое действие проговаривайте вслух.
    Свежий пример из жизни:
    Так, мне надо заполнить двумерный массив рандомными числами от 1 до 100 без повторений… Слету решение в голову не пришло (прим. помните, у нас же был ступор), потому буду писать поэтапно. Для начала, напишу цикл “for”, заполню хотя бы одномерный массив не-рандомными числами. Ага, теперь нам понадобится функция “rand”. А нам двумерный нужен был? Так, делаем вложенный цикл. Вот, супер, заполнили… А как бы теперь избавиться от коллизий… А, так надо отдельно хранить все значения, которые мы уже использовали!.." 

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

  5. Не пытайтесь сразу оптимизировать решение. Скорее всего, об этом вас все равно потом спросят - потом и подумаете. Но у вас будет хотя бы неоптимальное решение, с которым можно работать дальше.

  6. Бонусный пункт: кстати, с кодом вы вовсе не один на один. Интервьюер тоже в деле, и запросто может направить/подкинуть идею. Иногда это только сбивает - тут не стоит сразу бросаться решать его методом - так можно снова впасть в ступор, лучше просто вслух проанализировать идею. А иногда стоит и прямо попросить подсказку, так и сказать: “Что-то у меня ступор, подскажите, пожалуйста, с чего начать вот тут”. Лучше спросить и хотя бы попытаться сделать, чем даже не спросить и проиграть всего-то собственной панике.

Примечание: иногда в очень серьезных статьях я видела советы вида “сначала хорошенько продумай решение, а потом начинай писать!”. Но лично мне, к сожалению, такой подход никак не помогает преодолеть ступор, а наоборот, только его усугубляет. Если чувствуете что-то похожее - попробуйте начать писать код по “пошаговому” рецепту.

Примечание 2: рецепты работают и при написании SQL-запросов. Точно также, начинайте с обычного SELECT, постепенно добавляйте условия. 

Этап 5. Архитектурное собеседование

Казалось бы, вот оно, море, в котором мы почувствуем себя “рыбой в воде”, а то и “акулой этого бизнеса”. Сейчас то я покажу свой скилл в построении распределенной архитектуры, выборе хранилищ и знании паттернов систем пакетных вычислений!

Вам говорят: “Спроектируйте простенькое приложение по загрузке и обработке csv-файлов пользователя, где он хранит данные о своих покупках за месяц.”

Не вопрос! Очереди, распределенные хранилища, шарды, реактивная архитектура… 

Интервьюер: “Так а как пользователь файл загрузит то?..”
Все в мире: через форму на сайте методом POST!
Вы: … (тут начался ступор)

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

Рецепты преодоления ступора следующие:

  1. Выкиньте из головы мысль, что вам нужно предусмотреть сразу все. Это только застопорит вас. Представьте, что вам просто надо сделать самую простую базовую фичу на одной физической машине, и начинайте говорить, можно попутно рисовать модель на бумажке. А уже после вопросов интервьюера вида: “А где хранить, а как снизить задержку, а обеспечьте доступность, масштабируемость, отказоустойчивость и т.д.”, - добавляйте элементы.

  2. А если не знаете - не страшно. Предполагайте и предлагайте. Помните: архитектура, не смотря на то, что казалось бы каждый чих покрыт паттерном, методологией и готовым решением - это все равно более стратегический вопрос. Единственно правильного решения архитектурной задачи НЕТУ. Все зависит от конкретного сервиса, требований, возможностей бизнеса и т.д.. Знать всё - невозможно. А вот предполагать - это нормально, может именно этого от вас и ждут.

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

Этап 6. Софт-скиллз (или общение “за жизнь, опыт и планы”)

Обычно в этом месте уже идет знакомство с командой, обсуждение планов на будущее. И тут вам больше не нужно “пройти дальше что бы то ни было”. Тут вам следует самому понять, хотите ли вы идти дальше именно с этой командой. 

Этот этап я для себя называю “Обоюдные смотрины”. Теперь не только вас оценивают, тут уже и вы решаете, подходят ли вам эти люди, сможете ли вы с ними плодотворно работать и развиваться. И именно это отношение помогает преодолеть любой ступор.

Примечание: вы, разумеется, также оцениваете команду на всех этапах, но на мой взгляд именно этот этап - ключевой.

Да, тут все равно может попасться вопрос, который собьет с толку, на который не будет ответа. 

Примеры:

  1. “А вспомните последнюю конфликтную ситуацию на работе”. Что думает паникующий мозг? “Как правильно ответить, что они хотят услышать, а если я расскажу про тот случай, когда мы на повышенных тонах спорили в переговорке за лучший паттерн…” 

    Рецепт: посмотрите на вопрос как на возможность узнать команду. Если у вас был конфликт в действительно важной для вас ситуации, расскажите, обсудите. Если вы с командой не сработаетесь - вы сами же это почувствуете при обсуждении именно таких вопросов.

  2. Еще одна ситуация, которая может вызвать ступор. Интервьюер: “Теперь наша очередь отвечать на ваши вопросы. Задавайте!” Мозг: “Но как так то… Надо что-то спросить?..”

    Рецепт: у вас точно это спросят, так что просто подумайте заранее, что для вас действительно важно, и составьте список вопросов на листочке.

Бонусная кулстори о моих вопросах работодателю

Кому интересно - делюсь опытом. У меня недавно была эта ситуация. Я давно не собеседовалась, и настолько готовилась отвечать сама, что на вопрос “А какие у вас к нам вопросы” растерялась и еле выдала робкое “а как у вас с удаленкой, когда в офис планируете?”.

К следующему собеседованию я уже подготовилась и накидала на листочке важные для меня вопросы (карьерный рост, участие в конференциях, обучение, примеры реальных задач на последнем спринте). И к вопросу “о моих вопросах” была полностью готова. Знаете, есть у меня смутное чувство, что это сильно сыграло мне на руку как в плане того, что я и правда узнала всё, что для меня важно, так и интервьюеры узнали, чего я ожидаю. В одном из мест мой эйчар организовала дополнительную встречу с еще парой команд. И знаете что? Мои интервьюеры подготовились к моим вопросам заранее! Это было так приятно. Я даже не ожидала такого эффекта.

Заключение

Вот и все мои нехитрые рецепты. В данной статье я обобщила свой опыт прохождения серии интервью на позицию “Senior Developer”.

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

P.S. Это моя проба пера на Хабре, надеюсь на понимание и по возможности фидбек.




Комментарии (24):

  1. Tzimie
    /#22911582 / +2

    Один из рецептов преодоления ступора показан в фильме "ещё по одной"

    • rozalba
      /#22911630

      Рискованный способ: есть опасность, что «Пик Балмера» превратится в «крутое пике», если собеседование затянется…

  2. StjarnornasFred
    /#22911780

    Кто-нибудь может объяснить, зачем вообще детальное техническое собеседование на должность сеньора, если трудовая книжка (в широком смысле) говорит сама за себя? "-Где ваше тестовое задание? -Вот оно, пять лет его делал..."

    Не, ну обычное собеседование (на предмет общей адекватности и рассказов о себе) — в принципе дело полезное. Но вот то, что сейчас много где практикуется — форменное издевательство вопреки логике и здравому смыслу. Особенно с учётом того, что для опытного специалиста характерна способность быстро разобраться с пока незнакомыми, но схожими с его основным навыком инструментами, и поэтому ошибки в тестовых заданиях или неспособность выполнить его вотпрямщас без подготовки не говорят ничего против соискателя.

    Блин, создайте уже кто-нибудь систему сертификатов и квалификационных разрядов, чтобы «тестовое задание» сиречь экзамен можно было пройти заранее для всех работодателей, получить аттестат и предъявлять его по месту требования, а в вакансиях чётко прописывать, что требуется специалист, допустим, с навыками «Программирование на Python» 5 уровня, «Неспециализированное программирование» 3 уровня и «Информационная безопасность» 1 уровня.

    • Gorthauer87
      /#22911816

      Любую сертификацию можно накрутить. Да и в резюме сильно приврать. В итоге кажется, что можно без технического собеса только если есть опыт работы в какой нибудь FAANG конторе.
      Но можно ещё одним путем пойти, наоборот самому задавать сложные технические вопросы интервьюверу по поводу того, с чем они работают. Заодно это способ узнать с кем придётся работать.

    • Nikolino
      /#22912018 / +1

      Трудовая книжка ни о чем не скажет. Во-первых в трудовую, как правило, не пишут был ли ты senior или middle, пишут просто «бекенд разработчик» или даже более формально «разработчик ПО» или «инженер-программист». Опыт в годах так же мало о чем говорит, можно работать в компаниях с низким уровнем компетенций и не развиваться, и даже если ты там senior, то в компаниях с высоким средним уровнем компетенций, может случиться, что не потянешь и на слабого мидла.

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

    • rozalba
      /#22912066

      Вестимо, детальное техническое собеседование на должность сеньора в общем случае нужно как раз для экономии времени, чтобы к «той самой беседе» не приходили случайные люди. Скорее всего это имеет смысл только в крупных компаниях, где поток собеседований большой и кандидаты разных квалификаций валят пачками. Также вижу тут смысл в исключении предвзятости: всё же теория и код — довольно объективные показатели. Или были бы такими, если б не стресс…

      Как бы не раздражало/пугало/дизморалило — стоит быть к этому готовыми, потому что в каком-то виде все равно и опрос по основам и задачки будут. Лично мне полегчало, когда я достигла стадии «принятие» и просто начала поусерднее готовиться.

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

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

      А по поводу сертификатов: мне кажется, вряд ли кто-то из интервьюеров рискнет слишком уж гонять по базовым понятиям того же PHP свеженького Zend Certified PHP Engineer (если б мне пришлось такого собеседовать, я б сама основы повторяла неделю, чтоб перед кандидатом не опозориться). Чем не то, о чем вы говорите?

      • Racheengel
        /#22912130 / +1

        Если человек идёт на сеньора — то это как минимум дядя 35-40 лет, с полжизни опыта в разработке. Предлагать ему тестовое задание, ну как минимум обоюдная трата времени. Как максимум — неуважение.

        • Isma
          /#22912132 / -1

          Это просто отсечка. Ничего страшного в этом нет. Но задание должно быть не более чем на пару часов.

          • Racheengel
            /#22912158 / +1

            Как правило, это как спецу по ядерной физике дать задание доказать теорему Пифагора. Даже если (скорее всего) согласится и докажет — смысла в этом ноль. А если не докажет — так что, имелось в виду, что на реальной позиции он только и должен будет теоремы Пифагора доказывать? Так то он физик ядерщик...

        • rozalba
          /#22912974

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

          • Racheengel
            /#22913786

            С такими вопросами им сеньор на самом деле не нужен...

  3. alliumnsk
    /#22911900

    Слегка оффтоп: у меня одни слова джуниор, миддл, сениор могут вызвать ступор.

  4. Nikolino
    /#22911912 / +1

    Перед собесом в ту компанию, в которую хотите попасть, можно пройти два-три собеса в те компании, которые менее интересны и в которых работать не хотите. Тогда на собесе в «компанию мечты» ступора будет меньше.
    Проделывать это нужно каждый раз когда собираетесь менять работу. Полезно даже если не хотите менять работу. Те вопросы, которые вызвали «ступор» на «тренировочных» собесах нужно подучить (например, наделав карточки в Anki). Как вариант, записывать экран при собесе и позже разбирать, чтобы не забыть те вопросы в которых поплыл.

    • rozalba
      /#22911972

      Я бы еще добавила: но постараться пройти их так, будто вы действительно туда хотите, т.е. выложиться по полной, чтобы а) поставить себя в максимально схожую обстановку и б) проявить уважение к интервьюерам (в конце концов, вы тратите их время). Интересно было бы услышать мнение интервьюеров на эту тему.

      А сам подход однозначно срабатывает, вот тут, кстати, отличный перевод статьи на эту тему: habr.com/ru/post/535216

      • Racheengel
        /#22912180

        Помнится, несколько лет назад проходил собеседование и предложили тестовое. Пройти прошёл, но в процессе потерял интерес и отказался от позиции сам.

        • Isma
          /#22912188

          Да, тестовое о многом говорит :)

          • Racheengel
            /#22912212

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

    • Isma
      /#22912056

      Пять лет не собеседовался. А тут пришлось. Первый собес — полный ступор. Тупо сказал, что я наверное им не подхожу. Потом второй, третий. На седьмом уже я собеседовал собеседующих. И, кстати, сходу получил оффер. Да, надо практиковаться. Прохождение собеседования — отдельный скилл. Три года назад это было — собес на и.о тимлида.
      Сейчас опять бы надо. Просто сильно не горит. Раз в две недели собеседуюсь.
      Последний кейс. Захожу по знакомству. Продакт в полном экстазе, обо очень хорошо знаю предметную область. Далее тестовое. Дают готовую тестовую систему. Без изысков легкими движениями дополняю ее затребованным функционалом. Красиво (на мой взгляд), заинжектил нужные зависимости, не ломая текущую архитектуру. Пишу в readme, что специально не ломал ничего, не выдумывал и не оптимизировал. Специально сделал одну описку, чтобы понять — запускали ли задание.
      В ответ — невнимателен, допускаю ошибки синтаксиса, не понимаю сути используемой парадигмы, вольно обращаюсь с фреймворком, не знаком с best practices.
      Прошу обсудить тестовое (сам не один десяток людей отсобеседовал — на мой взгляд, тестовое, это повод для разговора, а не финал) — в ответ тишина. Ну, как говорится, синьора синьор всегда сможет завалить — у всех опыт разный. Видимо где-то не подошел будущему руководителю.
      Выход один, просто больше собесов.

      • Nialpe
        /#22912872

        Вполне возможно, что уровень нанимающей стороны ниже уровня кандидата, так бывает и это лишнее подтверждение того факта, что решение о будущем сотрудничестве принимают ОБЕ стороны.


        Впрочем, это не отменяет обратной ситуации, когда кандидат считает всех некомптетентными, а себя мессией в IT.

  5. Hivemaster
    /#22912928

    Есть ещё более действенный способ преодолеть ступор при виде таймера, лайвкодинга, просьбы сбалансировать красно-чёрное дерево на маркерной доске и другой ереси — вежливо попрощаться и уйти на другое собеседование в компанию, которым действительно нужны программисты.

    • rozalba
      /#22912982

      А еще лучше просто спросить у hr заранее, будут ли на интервью подобные задания, и если нет желания с этим связываться — сразу отказаться и вообще не приходить.

      • Racheengel
        /#22913782

        Я не уверен, что много сеньоров захотят с таким связываться… Тем более ХР может быть просто не в курсе..

        • rozalba
          /#22913808

          Так можно попросить hr уточнить у разработчиков, раз этот момент важен. Если так и не ответят вразумительно — тоже показатель. Зачем вообще тратить время друг друга, если вы не сходитесь уже на уровне самых начальных процессов.