Мой взгляд на процесс найма

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

  • Блестящие сотрудники
  • Я сожалею о найме
  • Отклоненные кандидаты

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

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

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

Мышление на первом месте

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

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

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

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

Основные концепции и опыт

Еще один важный атрибут - это основные понятия информатики.

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

Далее идет опыт кандидата. Обсуждение прошлых проектов, проблем, с которыми столкнулся кандидат, и способов их решения.

Это дает вам представление о возможностях и помогает принять решение.

Решение проблем

Решение проблемы включает в себя много шагов:

  • определение проблемы
  • Анализ причины проблемы
  • Создание альтернативных подходов
  • Оценка и выбор альтернативы
  • Реализация решения

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

Я часто даю им подсказки и смотрю, как они поступают.

Я смотрю на подход, а не на решение

Концепции дизайна

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

Идея состоит в том, чтобы взглянуть на его / ее способ разработки решения. Ключевой аспект, на который я обращаю внимание, - это простота решения. Я вношу несколько изменений в варианты использования, а затем смотрю, как кандидат адаптируется к ним.

Отношение

Правильный настрой - одно из важнейших качеств хорошего товарища по команде.

Один неверный найм может изменить динамику команды и сделать всех неэффективными.

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

За свою карьеру я видел, как плохие сотрудники наносят ущерб. Вся команда идет на бросок.

Подведение итогов

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