Я долго и упорно думал о вопросах интервью, которые я мог бы задать, если бы я был на противоположной стороне стола; конкретные вопросы проблематичны: «Что делает X-вещь», поскольку он предполагает, что каждый программист должен знать любую особенность любого языка или технологии, для которых вы, возможно, нанимаете, что просто не является реальностью мира программирования прямо сейчас.

Вопросы для интервью

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

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

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

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

Вызов кодирования

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

Дайте нам что-то, что вы уже сделали, или создайте что-то новое, используя любой язык/технологию (это не обязательно должна быть технология, для которой мы вас нанимаем) и на любую тему, которую вы хотите. Тем не менее, основная часть кода, который вы пишете, должна составлять от 150 до 500 строк (если требуются дополнительные конфигурации или файлы сборки/настройки, это нормально).

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

Обратите особое внимание на:

  • Почему они выбрали эту программу? Была ли она умной, глубокой, математической и т. д.? Или это было приложение Console.Write для подключения по телефону, которое почти ничего не делало. Очевидно, что ожидания от образца работы не могут быть высокими, но определенно не помешает, если кандидат покажет что-то умное. Также, возможно, стоит спросить кандидата напрямую, почему он решил написать программу, которую сделал.
  • Какой стек технологий они использовали? Соответствовало ли это требованиям должности? (явно не плохо). Было ли это чем-то немного другим, может быть, чем-то новым? (это может быть хорошим признаком того, что они хотят учиться). Худшим признаком может быть что-то более старое, для чего вы не нанимаете, но, конечно, трудно исходить только из этих фактов.
  • Понравился ли вам код? Очевидно, что качество кода очень субъективно, но можно с уверенностью сказать, что если ваша команда его ненавидит, она может не подойти. Для меня это самое очевидное, что нужно искать.

Заключение

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