{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

Собеседование для разработчиков: советы экспертов

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

Осторожно! Лонгрид! :-)

1. Как в компаниях проводится собеседование для разработчиков?

Степан Самсонов, фуллстэк-разработчик Orange Business Services в России и СНГ:

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

К примеру, в декабре 2020 года Orange Business Services вел цикл собеседований с соискателями на позицию фронтенд-разработчика на JavaScript с использованием библиотек React и Redux. Мы задаем как вопросы общего характера, так и тестируем уровень профессиональных компетенций, в том числе на глубину знаний языка JavaScript. В процессе общения соискателю, например, предлагается найти ошибку в предоставленном коде.

Роман Ромадин, руководитель бэкенд-разработки в "Мегафон ТВ":

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

Если компания крупная, то собеседование почти всегда растягивается на несколько этапов:

  • Собеседование с HR-сотрудником. HR-сотрудник согласовывает резюме с начальником отдела или руководителем. Если получено одобрение звонит соискателю и согласует время созвона или встречи. На этом же созвоне могут провести первичный опрос каких-то базовых технических знаний кандидата. Могут быть вопросы о мотивации к поиску новой позиции и опыте работы. В 30% случаях у вас запросят выполнение тестового задания перед следующим этапом.
  • Техническое собеседование со специалистом организации. Обычно это созвон с включенной камерой, где кандидату задаются вопросы о предыдущем опыте, как пришел в индустрию, может быть так же предложено решить онлайн-задачу. Как пример заданий – текстовое описание, по которому нужно написать программу или код ревью по существующему коду.
  • Следующий этап – интервью с руководителем отдела или департамента. Все эти три интервью могут растянуться на 1-2 недели. После чего отдел подбора персонала может сразу дать ответ кандидату, о том готовы ли они взять его на данную позицию или запросить дополнительную неделю на "подумать", чтобы в это время пройти цикл таких собеседований с другими кандидатами.

Дмитрий Криков, технический директор NGENIX: Поиск кандидата начинается с правильного составления описания вакансии. Как только шорт-лист составлен на основе оценки навыков и опыта, описанных в резюме, мы просим кандидатов продемонстрировать показательный пример кода, или, если он не имеет возможности предоставить такой пример, просим выполнить небольшое тестовое задание. Мы даем типовое ТЗ, которое не призвано выявить знание специфики нашей отрасли или скорость написания кода.

Основные вопросы, на которые мы ищем ответы – это не "что?" и "когда?", а "как?" и "почему?". Наша задача здесь – оценить, как человек подходит к написанию и оформлению кода, к проработке и реализации задачи, как строит алгоритм решения. Так мы можем увидеть, что в его понимании означает production-ready в формате простой задачи, и насколько он задумывается о последующей поддержке разрабатываемого решения.

Максим Меженков, директор по развитию в "Мой Автопрокат": Самое важное, что нужно сделать заказчику – это составить хорошее тестовое задание. В 9-ти случаях из 10-ти в постановке нечеткого ТЗ виноват заказчик, который часто, даже для самого себя, не может сформулировать то, что ему нужно.

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

Бывает, что соискатели вообще не раскрывают своих заказчиков – это тревожный знак. Как правило, если исполнитель говорит, что у него все проекты под NDA – это либо очень серьезный уровень для фриланса (у таких людей ставки не 1 тыс. руб./час, а больше), либо это новички, которые шифруются под что-то значимое.

2. Какие вопросы задаются, моделируются ситуации? На каком этапе понимаете, что человек не подходит?

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

Типовых вопросов по JavaScript мы практически не задаем. Так, у нас нет задач на приведение типов. Часто в обсуждениях соискателей натыкаюсь на вопросы типа "Посчитайте, чему равно выражение: '5' + 3 - 5*4 - '2'*true + 5!!undefined - (null || true)". Но подобные задания лишены прикладного значения. Ведь если такой фрагмент кода присутствует в проекте, компетентность разработчиков необходимо ставить под вопрос, так как код должен быть читабельным и понятным всем.

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

На втором этапе выдаются типовые задания "на дом". Обычно используем API хостингового сервиса для ИТ-разработчиков GitHub. По сути, мы предлагаем создать упрощенную версию фронтэнда для этого сервиса. Например, разработать интерфейс для просмотра 10 рандомных карточек пользователей и их репозиториев.

На "домашнее задание" дается неделя. Здесь для нас уже важен конечный результат, а именно чтобы приложение запустилось, даже если реализованы не все пункты задания. При этом мы обращаем внимание и на читаемость кода, и эстетическую привлекательность интерфейса. Кроме того, оценивается использование интересных фич, вроде кастомных хуков (hook) или компонент высшего порядка.

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

Роман Ромадин: При поиске сотрудника на должность тимлида могут спросить: "Как вы будете реагировать, если Ваш сотрудник

... заплакал на рабочем месте?

... смотрит Youtube на рабочем месте?

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

... обладает большей технической компетенцией, чем вы?".

Частое задание на технических собеседованиях – спроектировать базу данных для библиотеки. Это поле деятельности для начинающего и продвинутого специалиста. Задача позволит раскрыться джуниору, синьору или даже архитектору по вопросам системного дизайна. Обычно решение о готовности принять в свои ряды соискателя принимается на первых двух вопросах. Остальные задаются в целях соответствия регламенту. Собеседующий никогда не дает ответ, ссылаясь на необходимость "подумать", а ответ кандидат получит от HR-сотрудника.

Дмитрий Криков: Мы не проводим HR- и техническое собеседование отдельно – основные, базовые вещи рекрутер выясняет при первом контакте, а непосредственный руководитель проводит интервью, оценивая и хард-, и софт-скиллы. В отличие от заказной разработки, где основной монетизируемый ресурс – время кодера, мы развиваем свой продукт.

На интервью мы оцениваем в первую очередь не то, как хорошо человек кодит на Питоне, а то, как человек объясняет решение, общается, обосновывает свое видение, структурирует мысли.

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

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

3. Советы соискателям?

Степан Самсонов:

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

Роман Ромадин:

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

Дмитрий Криков:

  • Понимать, что конкретно хочешь от работы – различные мотивации приведут в различные компании.
  • Соотносить то, что хочешь, с тем, что нужно работодателю. Пиши классный код, уважай процессы, с пониманием относись к особенностям.
  • Развивать софт-скиллы. Продуктовый подход и командная работа предполагают, что тебе нужно уметь аргументировать, коммуницировать, искать компромисс, проявлять креативность.
  • Никогда не останавливаться в развитии. Конкретные технические детали могут устаревать или забываться, но само умение учиться, понимать суть происходящего, находить оптимальные решения и системный подход – бесценны.

Максим Меженков:

  • Хороший frontend-разработчик, которому будут платить 150-200 тыс. руб., должен быть инициативным; обладать отличной коммуникацией и хорошо уравновешивать программиста на backend; быть эстетом и экстравертом; хорошо владеть фреймворком, а лучше двумя; знать технический английский.
  • Если ты именно такой специалист, тебе просто необходимо найти компанию на постоянную работу, в которой ты будешь трудиться с почасовой ставкой в 1-1,2 тыс. руб.
  • Если работать на западных заказчиков, то frontend-разработчик с 2-х летним опытом работы, если повезет, может найти ставку по 20-25 долларов/час и зарабатывать 150 тыс. руб., трудясь половину рабочего дня.

Примеры тестов

Orange Business Services в России и СНГ:

"Требуется реализовать приложение с использованием библиотеки React по отображению информации о пользователях GitHub.

Главная страница должна отображать карточки 10-ти случайных пользователей с минимальной информацией (имя/фото/что-нибудь еще). При нажатии на пользователя открывается страница с более подробной информацией: профиль, список репозиториев с описанием. При нажатии на репозиторий должна отображаться детальная информация + файл readme. Чем больше будет отображено информации и чем больше будет активных кнопок/ссылок, тем лучше.

Необходимые условия:

1. Поддержка роутинга

2. Использование Bootstrap при верстке

3. Проект должен запускаться и работать после установок зависимостей

Плюсами будут:

- использование библиотек (redux/saga/что-нибудь еще);

- построение графика "N contributionsinthelastyear".

Авторизация".

"Мой Автопрокат": https://docs.google.com/document/d/1eo69uOHsiPh4hbXkQHJigGIHNyYjn0vtmMtvkUXJswQ/edit

0
Комментарии
-3 комментариев
Раскрывать всегда