Эквивалент Джоэля Теста для измерения программиста [закрыто]

70

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

Я планирую сделать этот тест быстрым фильтром, прежде чем перейти к более подробному тесту.

Rudy
источник
2
Если есть такие тесты, которые используются, я думаю, что программисты должны знать об этом. Они могут быть, а могут и не быть действительными, например: Наймите тот, у кого больше модификаций кузова.
Джефф
2
Интересно, что когда я задал этот вопрос, он был понижен до ада (теперь снова положительный, да, и быстро закрылся). Это действительно так отличается от этого? programmers.stackexchange.com/questions/133691/…
ripper234
8
@ ripper234, причины закрытия вопроса на SE немного похожи на те необъяснимые, периодически возникающие ошибки в программном обеспечении - на самом деле загадка. Немного похоже на человеческую природу.
Технит
8
Сам Джоэл предлагает простой, но строгий тест: умный и готовый . : P
Дан Джей
FizzBuzz! Конечно!
CraigTP

Ответы:

67

Существует матрица компетенций программиста .

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

Том Сквайрс
источник
27
Таким образом, единственная оставшаяся проблема состоит в том, чтобы оценить, хороши ли прошлые / нынешние товарищи по команде этого парня ... Упс.
Петер Тёрёк
21
Да, это рекурсивно :)
Том Сквайр
13
Это не похоже на тест Джоэла. Ваш ответ указывает на огромную подробную матрицу, тест Джоэла представляет собой серию из 12 очень простых вопросов.
Брайан Оукли
2
@BryanOakley - это правда, но PCM - это тоже самое первое, о чем я подумал, читая вопрос. Итог: нет простых вопросов, на которые вы можете ответить, чтобы измерить программиста!
Йорис Тиммерманс
2
@BryanOakley точка матрицы более сложная, чем ряды хорошо взяты; Для меня более близкой аналогией с тестом Джоэла была бы серия, состоящая из элементов столбца уровня 1 в PCM - «объяснять и использовать массивы ..., базовая сортировка ... и т. д.»
gnat,
25

Я бы развернул тест Джоэла:

Они использовали контроль источника?

Они знают, как автоматизировать пошаговую сборку?

...

Единственный вопрос, который не кажется особенно применимым - это вопрос тестеров. Остальные, которые кажутся не совсем подходящими, - это то, как мы справляемся с этим, как вы справлялись с этим в прошлых вопросах (Вот как мы справляемся, поддерживая наш график в актуальном состоянии, как вы обрабатывали планирование в прошлом?) ,

редактировать:

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

stonemetal
источник
1
Все вопросы Джоэла больше касаются окружающей среды, чем программиста. Если моя команда не использует контроль исходного кода, то моя неинтеграция с ними с помощью собственного контроля исходного кода вряд ли является улучшением. Получение команды для использования контроля исходного кода является улучшением.
Эдвин Бак
15

Тест Джоэла - это просто неофициальная базовая проверка, позволяющая быстро определить, есть ли в месте хорошие условия работы для программистов. Даже если он наберет идеальную 10, он все равно может стать адской дырой, которая обанкротится через шесть месяцев. Низкий балл указывает на что-то не совсем правильное и дает отличные вопросы для интервью («Вы в настоящее время не используете контроль источников; есть ли планы сделать это в будущем?»), И ответы могут быть такими, что ты бы согласился на работу, несмотря на низкий балл Джоэла.

Тест Джоэля также не является «стандартным» тестом; это просто контрольный список Джоэла Спольски, размещенный в его блоге.

Что касается «измерения» качества программиста; к сожалению, действительно важные навыки и качества хорошего программиста трудно или невозможно измерить количественно, поэтому ничто не заменит тщательной человеческой оценки. Вы можете довольно легко отсеять совершенно невежественных кандидатов, используя очень простую задачу программирования - в идеале, то, что включает в себя рекурсию, древовидные структуры или указатели (программист, который не «получает» их, вряд ли будет полезен). Для тех, кто пройдет этот тест, вам придется оценивать навыки вручную: читать код, который они написали, тестировать приложения, которые они написали, давать им больше задач по программированию (как проектирование, так и реализацию), смотреть, как они работают, разговаривать с ними, посмотреть, если вы может вызвать профессиональную дискуссию. Если вы ищете специалиста / языкового гуру,

tdammers
источник
1
+1 Судить о навыках хороших программистов - это одно задание, которое трудно определить количественно.
Картик Сринивасан
20
("You're not currently using source control; are there any plans to do so in the future?"), and the answers might be such that you'd accept the job despite a low Joel score. Кстати, вы бы ошиблись, приняв работу. В конце концов, каждый разработчик узнает, что Plans to do so in the futureэто то, что интервьюеры говорят, чтобы обмануть вас, но они никогда не действуют из-за ужасного управления. Сколько раз мы слышали что-то об эффекте, Oh, we are moving towards Agile...и оказывается, что это еще один магазин микроуправляемых водопадов?
maple_shaft
@maple_shaft: да, наверное, не очень хороший пример ...
tdammers
5
Идеальная 10 в тесте Джоэла на самом деле будет 12 ... просто сказать :)
MattDavey
3
@MattDavey: Это в значительной степени зависит от вашей компетенции, чтобы вести изменения. У меня был один из тех случаев, когда я был в бизнесе в течение двух лет (да, мы перейдем на C ++) и получил ожидаемый результат. В наше время это было бы другое дело. Я могу понять, является ли это искренним желанием, но неспособностью измениться, и затем сделать это возможным.
MSalters
12

Да уж:

Вы программируете в свободное время?

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

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

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

Telastyn
источник
2
Почему это имеет только один голос? ИМО, это реальное различие между посредственными командами и действительно инновационными.
Репо Мэн
1

Он не такой подробный, как тест Джоэла, но просьба написать им программу Fizz Buzz будет хорошим показателем того, смогут ли они вообще писать код.

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html и http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers- кто-Grok-кодирование /

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

Винсент Хьюберт
источник
0

Эх, у меня проблемы с формулировкой в ​​начале. Это не «использовали ли вы X» или «знаете ли вы о Y», это вопрос реального использования и действия. Любой программист, который не трогал и не слышал об элементах теста Джоэла, просто отключается и должен получить подсказку. Но вы правы, кодовые магазины не проходят тест Джоэла, потому что люди в магазинах допускают его. Единственная защита, которую я вижу, проходит по принципу «Я пытался, но не имел полномочий. И теперь я подаю заявку здесь».

Филипп
источник
0

Вы используете контроль версий?

Да, но

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

Вы можете сделать сборку за один шаг?

  • Да, наш руководитель по CI пишет сценарии, и я просто запускаю их в powershell.

Вы делаете ежедневные сборки?

  • Наш CI сервер делает

У вас есть база данных ошибок?

Да, но я не настроил это, и я не администрирую это, я просто использую это.

Вы исправляете ошибки перед написанием нового кода?

  • В идеальном мире, где у меня неограниченные ресурсы - да, я делаю. В реальном мире меня иногда заставляют регистрировать их и работать над чем-то другим.

У вас есть актуальное расписание?

Нет, это не моя работа.

У вас есть спецификация?

Мне дают спецификацию, затем я анализирую ее и выдаю соответствующие документы.

У программистов тихие условия работы?

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

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

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

У вас есть тестеры?

Да. На самом деле, да, и они не очень хороши, но это не было в вопросе.

Пишут ли новые кандидаты код во время собеседования?

Да, и они терпят неудачу. Да, и они проходят. Что это говорит вам?

Вы проводите тестирование юзабилити?

Нет, но что если мы сделаем что-то лучше?

Заключить:

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

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

CodeART
источник
8
Я действительно не понимаю суть этого. Эти вопросы касаются команды / компании, а не отдельного программиста. И ОП не предложил использовать одни и те же вопросы для оценки программиста, он просто хочет задать ряд простых вопросов.
CodesInChaos
1
Я думаю, что я так же хорош, как моя команда или компания, в которой мы работаем. По моему мнению, подобные тесты вызывают много шума, но на самом деле они не говорят вам ничего полезного о компании или разработчике.
CodeART
3
How do you know whether I pull changes before pushing? Ну, я не знаю, какой источник контроля вы используете, но, по крайней мере, в SVN, если вы попытаетесь зафиксировать папку с изменениями, которых у вас еще нет, фиксация завершится неудачей, пока вы не запустите Update.
Мейсон Уилер
Мы используем TFS :) Мне действительно нужно заполучить другие системы контроля версий.
CodeART
Тааак люди на самом деле используют TFS. Я кое-что узнал.
Fabinout