Собеседования

Написание кода на собеседовании: нормальная практика или слишком жёсткое испытание?

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

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

Денис Стебунов, Ivelum: предлагать кандидату писать код — это полезно, а вот предлагать делать это именно во время интервью — нет

Денис Стебунов

Денис Стебунов, компания Ivelum


Как вы относитесь к ситуации, когда кандидата на должность разработчика просят написать код во время собеседования? Это в целом нормальная практика?

Это, безусловно, распространенная практика, которая для некоторых компаний уже стала мемом (например, Яндекс и его «гномики»). По поводу её полезности моё мнение такое: предлагать кандидату писать код — это полезно. А вот предлагать делать это именно во время интервью — нет. В нашем процессе рекрутинга мы предлагаем кандидатам писать код, но это всегда происходит в режиме домашнего задания, а на самом собеседовании мы уже потом можем поговорить о том, что получилось.

Насколько эффективен этот прием? Что он может показать потенциальному работодателю?

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

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

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

Как вести себя кандидату, которого просят написать код? Например, если что-то забыл, можно попросить помочь? Можно ли подглядывать, например, смотреть в справочнике?

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

Сравните пожалуйста написание кода на собеседовании с выполнением тестового или изучением портфолио. Какой способ оценки кандидата предпочтителен?

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

Максим Лапшин, ErlyVideo: это рыночная ситуация

Максим Лапшин

Максим Лапшин, основатель ErlyVideo


Как вы относитесь к ситуации, когда кандидата на должность разработчика просят написать код во время собеседования? Это в целом нормальная практика?

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

Доводы в пользу кодинга во время интервью:

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

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

Насколько эффективен этот прием? Что он может показать потенциальному работодателю?

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

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

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

Как вести себя кандидату, которого просят написать код? Например, если что-то забыл, можно попросить помочь? Можно ли подглядывать, например, смотреть в справочнике?

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

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

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

Сравните пожалуйста написание кода на собеседовании с выполнением тестового или изучением портфолио. Какой способ оценки кандидата предпочтителен?

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

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

Андрей Ребров, Scentbird: отношусь хорошо, практикуем сами

Андрей Ребров

Андрей Ребров, технический директор и соучредитель американского стартапа Scentbird


Как вы относитесь к ситуации, когда кандидата на должность разработчика просят написать код во время собеседования? Это в целом нормальная практика?

Отношусь к этому хорошо, практикуем сами, просим написать простые штуки, без алгоритмики.

Насколько эффективен этот прием? Что он может показать потенциальному работодателю?

Метод позволяет оценить с одной стороны фундаментальные знания языка, с другой - как кандидат думаем и принимает решения при написании кода.

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

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

Как вести себя кандидату, которого просят написать код? Например, если что-то забыл, можно попросить помочь? Можно ли подглядывать, например, смотреть в справочнике?

Лучше всего описать, что он собирается сделать или объяснить своими словами, что он хочет сделать. Также нормально попросить помочь.

Сравните пожалуйста написание кода на собеседовании с выполнением тестового или изучением портфолио. Какой способ оценки кандидата предпочтителен?

Как по мне, надо совмещать все три аспекта, так как они все-таки показывают разные стороны человека.

Александр Бындю, Byndyu.ru: отношусь нормально, но против написания кода маркером на доске

Александр Бындю

Александр Бындю, IT-архитектор, эксперт в Agile и Lean


Как вы относитесь к ситуации, когда кандидата на должность разработчика просят написать код во время собеседования? Это в целом нормальная практика?

Отношусь к практике написания кода на собеседовании нормально. Но я против написания кода маркером на доске. Плохо, когда предлагают писать в блокноте на Windows. Не приветствую, если нельзя пользоваться интернетом и что-то уточнять.

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

Также я против написания коммерческого кода на собеседованиях. Задания должны быть абстрактными.

Насколько эффективен этот прием? Что он может показать потенциальному работодателю?

Предлагая кандидату написать код на собеседовании, мы снижаем риски:

  • риск низкой компетентности;
  • риск принять на работу человека с хорошим резюме и плохими профессиональными качествами;
  • риск взять в компанию человека, который не умеет пользоваться банальными инструментами.

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

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

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

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

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

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

Волнение — часть рабочего процесса, и волноваться на собеседовании или на работе нормально. Но специалист должен давать результат даже в условиях стресса.

Как вести себя кандидату, которого просят написать код? Например, если что-то забыл, можно попросить помочь? Можно ли подглядывать, например, смотреть в справочнике?

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

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

Просить помощь или смотреть что-то в интернете тоже нормально. Если потенциальный работодатель запрещает это, объясняйте, что обычно вы пользуетесь справочником MDN, документацией той или иной библиотеки, Stackoverflow.

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

Сравните пожалуйста написание кода на собеседовании с выполнением тестового или изучением портфолио. Какой способ оценки кандидата предпочтителен?

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

Александр Павлють, «Мьёлнир»: если просят писать код на собеседовании, в компании нет порядка

Александр Павлють

Александр Павлють, CEO «Мьёлнир», системный инженер


Как вы относитесь к ситуации, когда кандидата на должность разработчика просят написать код во время собеседования? Это в целом нормальная практика?

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

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

Насколько эффективен этот прием? Что он может показать потенциальному работодателю?

Нужно работать с человеком, общаться с ним. Открою секрет Полишинеля — многие работодатели просто не готовятся к собеседованию. То есть они не читают резюме, не смотрят портфолио кандидата. Отсюда появляется написание кода во время интервью.

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

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

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

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

Как вести себя кандидату, которого просят написать код? Например, если что-то забыл, можно попросить помочь? Можно ли подглядывать, например, смотреть в справочнике?

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

Соглашаться писать код можно. Ввязываться надо во всё. В конце концов, это весёлая игра, и надо в неё играть.

Сравните пожалуйста написание кода на собеседовании с выполнением тестового или изучением портфолио. Какой способ оценки кандидата предпочтителен?

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

Интеграция в команду — это тест. Создание рабочего кода — тоже тест. Пусть человек проходит его в реальных рабочих условиях.

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

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


В комментариях напишите пожалуйста, сталкивались ли с просьбой написать код во время интервью с работодателем? Как вы относитесь к этой практике?

Дмитрий Дементий 16 августа 2019
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →