Как разработчику пройти собеседования на удалёнку за рубеж

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

Последний день в офисе перед переходом на удалёнку Олег Громов
Последний день в офисе перед переходом на удалёнку Олег Громов

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

Чтобы попасть в хорошую компанию на подходящую позицию, вероятнее всего, понадобится пройти десятки интервью в разные компании. Подготовке стоит уделить несколько месяцев, и около месяца — прохождению собеседований. Это оптимальная стратегия, которая позволит сделать более-менее осознанный и объективный выбор из нескольких оферов.

Подготовка к поиску

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

Исходя из моего опыта, конверсия из отлика в офер составляет всего 1-5%, а из отклика в собеседование — не более 20%. Итерация поиска, от отклика на конкретную позицию до финального ответа, обычно занимает от недели до месяца. Разумеется, стоит собеседоваться в несколько компаний одновременно — но даже тогда процесс поиска может затянуться.

Из 50 позиций, на которые откликнулся я, мне удалось поговорить только с 7-8 компаниями и получить 3 офера. Процесс занял около месяца почти ежедневных собеседований.

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

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

Что от вас ждут на собеседовании?

Кроме очевидной проверки технических навыков (hard skills) и их соответствия позиции, собеседующие будут наблюдать за вашим поведением и стилем общения (soft skills).

  • Правдивы ли ваш опыт и история — особенно актуально для удалённой работы, где слабее юридические гарантии, а люди могут не видеть друг друга месяцами;
  • Умеете ли вы объяснять, обсуждать и защищать свои решения;
  • Сможете ли вы договариваться и уживаться с другими разработчиками;
  • Готовы ли вы взять больше ответственности в будущем.

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

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

А ещё до отклика полезно почитать отзывы на Glassdoor (ссылка в конце статьи) и поискать другие вакансии, чтобы составить своё представление о компании.

О чём спрашивать вам?

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

В Key Values построили бизнес вокруг ответов на важные вопросы о культуре нанимающих компаний
В Key Values построили бизнес вокруг ответов на важные вопросы о культуре нанимающих компаний

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

  • Команда: с кем вам предстоит работать, как устроены процессы и принятие решений, как часто приходят и уходят люди, кто они — вплоть до интервью с участниками команды, если это возможно;
  • Проект и продукт: вы наверняка попадете на конкретный проект или продукт, которым будете заниматься несколько лет. Будет здорово, если вам интересна предметная область;
  • Технологии: нужен здоровый баланс между новыми технологиями, которые вы давно хотели изучить, и фундаментом, которым вы уже владеете. Иначе может либо слишком сложно, либо слишком скучно;
  • Рост и развитие: вам нужны возможности для роста (например, новые проекты и команды) и желание компании адекватно компенсировать это развитие.
  • Зарплата должна не только совпадать с вашими ожиданиями, но и быть справедливой относительно рынка и других сотрудникой компании.

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

В следующей статье я подробно расскажу, как правильно себя вести и торговаться при обсуждении зарплаты.

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

Достижения и связный рассказ

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

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

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

  • Что держит вас в профессии, как вы начали программировать?
  • Как вы изучаете новое?
  • Как решаете проблемы технического характера? Приведите примеры;
  • А с людьми? И примеры;
  • Почему вы меняете работу?
  • Что вас привлекает в этой позиции и компании?

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

Как описывать достижения

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

Перечисление достижений на примере одного из моих последних резюме Олег Громов
Перечисление достижений на примере одного из моих последних резюме Олег Громов

Например, если вы разработали новую CMS для сайта бывшей компании, можно рассказать, как это повлияло на бизнес: уменьшило время отрисовки сайта с 3 до 2 секунд и позволило компании запускать новые контент-проекты без опасения не выполнить их.

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

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

Резюме

Резюме стоит написать с нуля, сразу на английском языке. Если вы не уверены именно в лексике и грамматике, попросите репетитора — носителя языка помочь с редактурой. Резюме, сохранённые c LinkedIn или других сайтов, могут подойти, если они достаточно лакончиные.

Лучше всего знаете свой путь и достижения именно вы — а значит, резюме тоже стоит составлять самостоятельно.

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

В интернете достаточно шаблонов резюме (ссылки есть в конце статьи), которые можно использовать вдохновения. Либо начните со следующих пунктов.

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

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

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

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

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

Сопроводительные письма и рекомендации

Очень часто в форме отклика на вакансию есть поле для небольшого сопроводительного письма (cover letter). Если прикинуть вес каждой единицы информации в вашем отклике, у сопроводительного письма он достаточно маленький.

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

Типовая форма отклика на вакансию не даст разгуляться в сопроводительном письме
Типовая форма отклика на вакансию не даст разгуляться в сопроводительном письме

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

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

А вот многие «холодные» отклики оказываются так глубоко в списке, что кандидаты не получают вообще никакого ответа в течение месяцев.

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

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

Как устроен найм

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

По моим наблюдениям, 9 из 10 кандидатов не проходят процесс до конца — и это не считая изначального отсева резюме.

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

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

HackerRank — одна из платформ для выполнения тестовых заданий в онлайне
HackerRank — одна из платформ для выполнения тестовых заданий в онлайне

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

Как проходят собеседования

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

  1. Отбор вашего резюме — тут сильно помогают рекомендации, заметные публичные проекты или что-то, выделяющее вас из общей массы;
  2. Первоначальный скрининг, чтобы отбраковать совсем не подходящих кандидатов как можно раньше;
  3. Технические собеседования (одно или несколько), где вы будете обсуждать технологии и решать задачи, рассказывая о ходе своих мыслей;
  4. Разговор с нанимающим менеджером, где оценят, насколько вы подходите в команду;
  5. Согласование зарплаты и выставление офера.

Дольше всего, от 60 до 90 минут, длятся технические собеседования. Они же дают компании самый сильный сигнал при найме разработчиков. Скрининги с рекрутером, поведенческие интервью и разговоры о зарплате и офере обычно короче — около 30 минут.

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

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

Бывают и менее типовые секции: видео-ответы на вопросы, оплачиваемые тестовые задания
Бывают и менее типовые секции: видео-ответы на вопросы, оплачиваемые тестовые задания

Из-за несовпадения часовых поясов собеседования могут выпадать на неудобное для вас время.

Скрининг

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

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

Я подробно расскажу о согласовании зарплаты в следующей статье.

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

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

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

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

Рекрутеры хорошо осведомлены о найме в компании. Обязательно задавайте вопросы про все организационные моменты: как устроен найм — какие секции вам предстоит пройти и сколько они длятся; какие команды нанимают и куда собеседуют вас; каковы условия работы и правила компании.

Тесты и головоломки

Иногда на первых этапах вас могут попросить решить IQ-подобный психологический тест или головоломку. Занимает это, как правило, минут 15.

Типичный онлайн-тест на сообразительность
Типичный онлайн-тест на сообразительность

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

Например JavaScript-программиста могут спросить о реализации наследования в языке или замыканиях, а back-end веб-разработчика — про разницу table и view в БД.

Если такие вопросы задаёт рекрутер, отвечать лучше точно и коротко. А если разработчик, то вас могут попросить углубиться в детали.

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

Для подготовки к этому этапу освежите знания по технологиям, которые вы указываете в резюме и ознакомьтесь с вопросами для разных специализаций (ссылки в конце статьи).

Технические собеседования

Технические секции дают компании самый сильный сигнал и длятся дольше всего. Рассчитывайте пройти от 1 до 3 секций по 60-90 минут в течение нескольких дней. На технических секциях обычно 1-2 собеседника.

Разговорный жанр

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

Не стоит преувеличивать свой опыт, если вы не готовы, как минимум, убедительно рассказать о нём. Подготовьтесь, если следующие вопросы заставляют вас задуматься.

  • Что сложного было в последнем проекте? Как вы справлялись с этим?
  • Нужно реализовать X. Как бы вы это сделали?
  • Как работает Y? Когда лучше не использовать эту технологию?
  • Какую библиотеку лучше выбрать для Z и почему?

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

О чём могут спросить на техническом собеседовании

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

Особое искусство заключается в том, чтобы оставаться уверенным в своей позиции, задавая уточняющие вопросы.

Кроме непосредственно технологий, вас могут спросить и о методологиях разработки, планировании и организации работы команды, особенно, если вы претедуете на позицию уровня senior и выше.

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

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

Как подготовиться к разговорам о технологиях

Вас могут спросить о чём-то высокоуровневом (например, архитектуре приложения) или попросить углубиться в детали (как вы пишете тесты или проектируете классы). Нужно разбираться в технологиях, которые вы указываете в резюме, уметь слушать собеседников и аргументированно отвечать на вопросы.

Будьте в курсе новостей и трендов в своей области знаний, чтобы не теряться в аббревиатурах и общих вопросах. Изучите инструменты, которыми пользуетесь: системы контроля версий, shell, системы continuous integration, тестовые фреймворки и т.п.

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

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

Ошибки на разговорных секциях

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

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

Если вы уверены в своих знаниях, отвечайте не сомневаясь — но если нет, лучше сказать об этом.

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

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

Вопросы организационного характера лучше задавать рекрутеру или нанимающему менеджеру.

Программирование «у доски»

Большинство технических собеседований включает написание кода маркером на доске, а в случае с удалёнкой — в онлайне-редакторе кода (ссылки в конце статьи). Скорее всего, вам на словах объяснят условия задачи и попросят решить её, рассуждая о решении.

CodeSandbox – одна из популярных Online IDE
CodeSandbox – одна из популярных Online IDE

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

Для меня, как и для многих, писать код под чутким наблюдением и на время — это стресс.

В зависимости от компании и позиции, на которую вы устраиваетесь, задачи могут быть разные.

  • Задачи на знание конкретного языка программирования: например, про замыкания в JavaScript или list comprehensions в Python;
  • Специализация — задачи с упором на фронтенд, бэкенд, обработку данных и т.п.
  • Алгоритмические задачи, как на LeetCode и HackerRank.

Алгоритм решения задач

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

  1. Расскажите, как вы поняли задачу — важно, чтобы ваш собеседник подтвердил, что вы поняли её правильно;
  2. Опишите несколько способов решения этой задачи;
  3. Выберите один, скорее всего, самый простой способ;
  4. Начните решать задачу либо «сверху вниз», двигаясь от объявления нужных функций и классов без реализации к деталям, либо «снизу вверх», от деталей алгоритма, в которых вы уверены, к общему решению;
  5. Если для каких-то частей кода вы хотите написать тесты, уточните, стоит ли тратить на это время;
  6. Убедитесь в правильности решения, исправьте ошибки;
  7. Расскажите о минусах и плюсах своего решения, узнайте, устраивает ли оно вашего интервьюера. Предложите улучшения.

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

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

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

Другие ждут, что код будет работать и призывают вас запускать его как можно чаще. Третьим скорее важно увидеть грамотное проектирование и в целом корректное направление мысли, а не законченный работающий код.

Знание языков, специализация, алгоритмы

Задачи на знание конкретных языков обычно вполне ясны. Вас могут попросить написать что-то простое с использованием стандартных библиотек и идиом языка. Например, реализовать метод, разворачивающий строку, на Java, либо написать SQL-запрос для агрегации данных о посетителях гипотетического сайта.

Минусы вопросов про языки программирования тоже очевидны: даже если вы в совершенстве знаете Python, это ещё не гарантирует, что вы будете эффективны как разработчик в конкретной команде и проекте.

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

Подготовка к алгоритмическим задачам почти не отличается от подготовки к собеседованиям в компании типа Facebook, Amazon или Google (FAANG), которые и создали культуру найма олимпиадников и сложившийся из неё карго-культ использования алгоритмичских задач для отбора программистов.

Техногиганты обычно задают задачи уровня medium и hard с LeetCode. Нанимающие удалённо компании редко задирают планку выше уровня easy.

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

Если бы я решил хотя бы эти задачи до собеседований, конверсия в оффер могла бы быть выше 😜
Если бы я решил хотя бы эти задачи до собеседований, конверсия в оффер могла бы быть выше 😜

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

Если вы устраиваетесь веб-разработчиком, алгоритмическим задачам стоит посвятить 30-50% времени и сил, потратив остальное на специализацию, фундаментальные знания и убедительность. Если же вы устраиваетесь программистом, например, в 3D-графику или machine learning, именно умение применять алгоритмы и структуры данных могут быть основным критерием отбора.

Ошибки при решении задач

Наверное самой типичной (и фатальной) ошибкой на этом этапе является программирование в тишине.

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

На одном из собеседований я корректно и оптимально решил всего 2 из 4 задач, но мне всё равно сделали хороший офер. Потому что рассуждал верно.

Другая распространённая ошибка: отсутствие минимального планирования и проектирования решения.

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

Я обычно отвожу 5-10 минут на проектирование и уточнение деталей решения задачи, особенно если она не абсолютно очевидна.

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

Задача кандидата — объяснить, почему решение работает и как сделать его лучше, а не просто предоставить как будто бы работающий «чёрный ящик».

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

Интервью с нанимающим менеджером

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

Этот этап можно сравнить с поведенческим (behavioral) интервью: ваш собеседник постарется оценить, насколько вы готовы стать неотъемлемой частью команды и приносить пользу — скорее всего через следующие вопросы, заданные явно или неявно.

  • Какие роли и почему вы брали на себя в прошлом;
  • Как вы решали конфликты с заказчиками, коллегами, руководителями;
  • Умеете ли вы планировать, оценивать риски, принимать решения для выполнения проектов;
  • Насколько убедительно и внятно вы говорите, умеете ли слушать;
  • Есть ли у вас лидерский потенциал.

В отличие от технических секций, где акцент делается на технические навыки, здесь принципиальны навыки коммуникации и поведение в разных ситуациях (soft skills).

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

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

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

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

Обязательно задайте вопросы — и много. Иногда на это специально выделяют достаточно времени в конце.

  • Есть ли на горизонте новые и интересные проекты, где вы смогли бы взять на себя решающую роль;
  • Как растут разработчики? А что, если новых проектов нет;
  • Кто и как принимает решения про людей — о команде, проектах;
  • Кто принимает технические решения;
  • Как устроены повышения и продвижения, от чего и от кого они зависят;
  • Какого размера команда, что в ней за люди;
  • Как долго они работают в компании.

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

Напутствие

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

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

Не принимайте отказы близко к сердцу. Собеседования — процесс шумный, где многое остаётся субъективным и зависит от удачи.

И приходите читать следующую часть статьи: мы рассмотрим, как правильно огранизовать процесс поиска, чтобы увеличить шансы на получение лучшего офера; как торговаться о зарплате; как преуспеть, работая удалённо.

А пока удачи! Fingers crossed 🤞

Полезные ссылки

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

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

3131
13 комментариев

Титанический труд. 
Как успешно прошедший через многие описанные сценарии, подтверждаю - всё так.

7

Спасибо, ценно слышать слова одобрения!

2

Комментарий удалён модератором

Спасибо, рад, что вам понравилось!
Насчёт книжки и я не зарекаюсь. Главное, чтобы полезно было.

4

И первая и вторая часть - супер. Возьму за основу в подготовке на запад. Спасибо! 

2

Спасибо, рад, что вам пригодилось!
Если будут вопросы - пишите. И удачи!

1

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

2