Как распознать хорошего программиста? [закрыто]

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

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

Изменить: согласно ответам Маноя, здесь - вопрос, связанный с задачей кодирования в собеседование.

128 голосов | спросил 5 revs, 4 users 57%
gius
1 Jam1000000amThu, 01 Jan 1970 03:00:00 +030070 1970, 03:00:00

12 ответов


154

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

Спросите их, что им не нравится в их любимом языке или платформе. Как они могут это исправить? Что бы они хотели видеть в следующей версии? У них есть проекты для хобби? Если у них есть блог, прочитайте его. Проверьте их общее присутствие в Интернете.

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
79

Наем хороших людей жесткий .

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

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

Есть еще 57 вопросов (по состоянию на 20/11/2008) по Software Engineering Stackexchange с тегом с интервью и некоторые они выглядят очень актуальными, поэтому проверьте их.

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
46

Некоторые идеи:

  • Задайте несколько открытых вопросов с разных точек зрения:

    • Просмотрите некоторый код. Что идентифицировано? Технические ошибки, несоответствия стиля, комментарии, алгоритмы, ремонтопригодность и т. Д.
    • Введите код. Посмотрите на процесс, пуленепробиваемость, читаемость и т. д.
    • Создайте проект высокого уровня для небольшой системы. Посмотрите на понимание проблемы, подхода, связи, полноты, детализации.
    • Опишите процесс разработки программного обеспечения. Ищите дизайн, сотрудничество, обзор, тестирование, хорошие /плохие привычки и общий опыт.
  • Выберите что-нибудь - что угодно - кандидат утверждает, что хорошо знает. Задайте простой вопрос, а затем, основываясь на ответе, попросите другой, немного более подробный, и продолжайте «копать», пока не достигнете предела знаний кандидата. Это дает вам представление о:

    • Честность: знает ли он столько, сколько требовалось?
    • Глубина знания: насколько хорошо он /она учится?
    • Общение: насколько хорошо он /она объясняет вам что-то незнакомое? Является ли логический процесс мысли?
    • Реакция на стрессовые ситуации: насколько тяжело он /она работает, чтобы ответить? Он /она подделывает его? Является ли неизбежное «я не знаю» легким или трудным?
  • Спросите, как кандидат рассматривал различные ситуации на предыдущих работах: работа в команде, просроченные проекты, отладка, и т. д. . Являются ли ответы положительными или отрицательными? Страстный? Умный? Высокомерный?

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

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
38

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

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

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

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

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

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
23

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

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

Люди обычно могут научиться быть лучшими программистами, люди обычно не могут научиться быть лучшими людьми.

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
16

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

Хорошие программы программиста на стороне, кроме работы (по крайней мере, время от времени). Он /она любит решать проблемы программирования. И когда он /она не может найти программу, которая решает определенную потребность дома, он, как правило, попытается решить ее самостоятельно.

Но есть несколько типов программистов.

  • У вас есть те, кто любит документировать. Лично я ненавижу документированию. Но документирование того, что сделано, может быть важным.
  • У вас есть «хакеры». Те, которые чертовски разбираются в сложной головоломке, где, если вы, где искать Google, вероятно, не найдете решения. Они могут решить «любую» проблему, пока они получают необходимые им инструменты.
  • У вас есть те, кто обучает себя программистам только потому, что рынок хорош для наем на программирование. Они обычно посредственны, потому что им не хватает страсти.
  • У вас есть люди, которые превосходны в общении, и они «могут что-то разрешить», но как только они получают работу, они нависают над всеми, чтобы получить помощь в решении проблемы, которую они решают.

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

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

Вопрос, который я задал бы, когда найм программиста будет: «Почему вы воспитывали себя в качестве программиста?». Это было бы бесполезно, если они колебались там.

Это мое мнение.

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
15

Сделайте код. Дайте проблему, которая может быть решена в течение 4 или 5 часов, и проверьте код для документации, стиль кодирования, как он планировал решение, прежде чем начинать код и т. Д. Ему не нужно реально решать проблему. И, как сказал Джон Скит, заставьте их говорить о программировании, их языке выбора и тому подобном. Вы можете перефразировать страсть в хорошем программисте. Спросите, сколько программ связанных сайтов они следуют, как stackoverflow. Блоги, которым они следуют, могут быть хорошим показателем.

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
7

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

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
6

Очень сложно распознать программиста на основе собеседования.

Некоторые вещи, которые решают, что кто-то хороший программист,:

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

Итак, у вас есть несколько подсказок, которые вы можете узнать в интервью:

  • Знает ли кандидат один язык технологии /программирования или знает ли он несколько? Если он знает разные языки, он, кажется, способен изучать новые вещи, и он, возможно, знает о недостатках его нынешней предпочтительной технологии /языка. Поэтому просите знания, кроме технологии, которую вы используете в своей компании.
  • Спросите проекты, над которыми он уже работал, особенно хобби-проекты и open-source. Проекты хобби показывают вам, что он любит программировать и делать это даже в свободное время (и таким образом улучшает свои навыки). В проекте с открытым исходным кодом вы можете найти код, который он написал. Если в проекте участвуют более одного человека, вы можете получить подсказки о своих командных навыках. В OS-проекте вы можете найти в списке рассылки-архивы, чтобы узнать больше.
ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
3

Вы могли бы выполнить несколько тестов в интервью.

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

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

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

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
3

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

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

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

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

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02
2

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

ответил jwenting 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 14:16:02 +0300 2016, 14:16:02

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132