Почему интервьюеры не просят заявителя прочитать какой-нибудь код? [закрыто]

13

У меня было дюжина интервью в моей жизни (я собираюсь закончить), и я удивляюсь, почему меня только один раз попросили прочитать и объяснить какой-то код. Грубо говоря, 90% рабочих мест в основном связаны с обслуживанием существующих систем. ИМО умение читать чужой код является важным навыком.

Почему интервьюеры не проверяют это? *

* Среди моих друзей я единственный, кого попросили просмотреть какой-то код.

Лукаш Мадон
источник
4
Однажды меня попросили прочитать некоторый код C на собеседовании, и я указал на многочисленные плохие практики в коде: выделение памяти и освобождение там и т. Д. Это был их производственный код. Я не получил предложение.
Кевин Клайн
1
Голосование за закрытие просто потому, что мы не можем ответить, почему другие люди что-то сделали или не сделали. Насколько мы знаем, он был исключен из процесса найма, прежде чем они добрались до стадии чтения исходного кода. Если это было изменено на «если интервьюеры требуют ...», это может быть подходящий вопрос.
GrandmasterB
1
@GrandmasterB Интервьюеры также появляются на этом сайте. Если они намеренно не ищут навыков чтения кода, вполне может быть веская причина для этого.
Изката
Пожалуйста, избегайте расширенного обсуждения в комментариях. Если вы хотите обсудить существо этого вопроса более подробно, тогда, пожалуйста, откройте вопрос на Meta, к которому относится такое обсуждение. Спасибо.
maple_shaft
Я хотел бы добавить, что меня попросили прочитать код раньше и указать на плохую практику и любые ошибки.
Энди

Ответы:

10

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

Подписать
источник
4

Укороченная версия

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

  • Способность понимать большую кодовую базу с ее документацией, юнит-тестами и т. Д.

  • Возможность рефакторинга кода и внесения изменений, не нарушая все.

Попросить людей прочитать код не поможет вам оценить эти способности.

Длинная версия

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

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

Есть еще несколько причин не просить прочитать код для технического обслуживания:

1. Сложно сделать надежно

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

Что еще более важно, что это говорит о кандидате? Насколько хорошо это соотносится с самой кодовой базой?

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

Теперь вы нанимаете разработчика для поддержки этой кодовой базы. Во время собеседования, не могли бы вы дать часть устаревшего (некрасивого) кода или часть кода, которая была реорганизована предыдущим разработчиком?

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

2. Чтение короткого фрагмента кода - это не то же самое, что чтение кода знакомого проекта.

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

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

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

3. Поддерживать исходный код - это не просто читать

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

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

Арсений Мурзенко
источник
2

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

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

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

Джоэл Этертон
источник
Читать это, да, понимать это? ... не обязательно.
Jmoreno
1
@jmoreno: Возможно, нет, но учитывая, сколько драгоценного времени у вас есть, если вы попросите кандидата написать что-то подобное, вы сможете получить гораздо больше знаний, чем наблюдать, как они читают что-то сложное.
Джоэл Этертон
Я не согласен. Как только вы выходите за рамки тривиальных реализаций, чтение кода становится намного сложнее, чем написание кода, и появляется большое количество разработчиков, которые могут писать код, но не могут читать существующий код, главным образом потому, что весь код находится в императивном времени. Чтобы использовать метафору иностранного языка, разработчики - это в основном богатые туристы, которых нужно понимать достаточно, чтобы получить то, что они хотят, но не чувствуют необходимости понимать, что говорят вокруг них.
Дэн Монего,
1
@DanMonego: Я понимаю вашу точку зрения, и я вовсе не в этом не согласен, но вопрос в том, почему большинство интервью не включают чтение, а не ценность чтения. Большинство интервью не включает в себя больше, чем тривиальные реализации, будь то чтение или корректировка из-за природы времени.
Джоэл Этертон
1

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

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

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

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

Tyanna
источник