У меня было дюжина интервью в моей жизни (я собираюсь закончить), и я удивляюсь, почему меня только один раз попросили прочитать и объяснить какой-то код. Грубо говоря, 90% рабочих мест в основном связаны с обслуживанием существующих систем. ИМО умение читать чужой код является важным навыком.
Почему интервьюеры не проверяют это? *
* Среди моих друзей я единственный, кого попросили просмотреть какой-то код.
interview
code-reviews
Лукаш Мадон
источник
источник
Ответы:
Когда я задавал вопросы на собеседовании, я сначала делал это, но постепенно отказывался от него. Кандидаты, которые могли хорошо писать код во время собеседования, могли хорошо читать код во время собеседования. Заявители, которые не могли прочитать код, также не могли его написать. Вопросы, связанные с чтением кода, на самом деле не отличали кандидатов.
источник
Укороченная версия
Если работа заключается в поддержке приложения, навыки, которые необходимо проверить во время собеседования:
Способность понимать большую кодовую базу с ее документацией, юнит-тестами и т. Д.
Возможность рефакторинга кода и внесения изменений, не нарушая все.
Попросить людей прочитать код не поможет вам оценить эти способности.
Длинная версия
Вас попросили написать код? Если да, как отметил в своем ответе Знак , этого достаточно. Если мы немного обобщим, человек, который пишет ясный, понятный исходный код, сможет прочитать исходный код, написанный другими людьми.
Если вас не просили написать код, тогда, вероятно, вы были допрошены сотрудником отдела кадров. Такие собеседования не могут быть слишком техническими и в основном бесполезными, поскольку они не оценивают ваши навыки и вашу способность хорошо работать, а скорее количество лет, которые вы провели в колледже, и другие вещи, которые не имеют ничего общего с работой.
Есть еще несколько причин не просить прочитать код для технического обслуживания:
1. Сложно сделать надежно
Конкретно, что бы вы сделали, если бы вы были интервьюером? Пусть ваши кандидаты прочтут какой-нибудь код. Какой код? На каком языке? Насколько хорошо или плохо написано? С комментариями или без? С или без документации?
Что еще более важно, что это говорит о кандидате? Насколько хорошо это соотносится с самой кодовой базой?
Допустим, у вас есть устаревшее приложение для поддержки VB.NET. Вы знаете, что исходный код в основном уродлив и непроверен, а некоторые комментарии устарели или вводят в заблуждение. Последние три месяца у вас был очень опытный разработчик, работавший над решением; он провел рефакторинг и протестировал наиболее важные части приложения, добавил комментарии там, где требовались комментарии, и, самое главное, написал подробную документацию об общей архитектуре, критических частях и подводных камнях.
Теперь вы нанимаете разработчика для поддержки этой кодовой базы. Во время собеседования, не могли бы вы дать часть устаревшего (некрасивого) кода или часть кода, которая была реорганизована предыдущим разработчиком?
Вы бы дали документацию? Для того, чтобы прочитать документацию, кандидату нужно потратить как минимум несколько часов. Это делает это невозможным во время собеседования.
2. Чтение короткого фрагмента кода - это не то же самое, что чтение кода знакомого проекта.
Помните, что работа заключается в поддержании проекта. Трудно поддерживать большую кодовую базу в первые дни или недели, когда вы не знакомы с проектом. Гораздо проще сделать это через несколько месяцев, когда вы написали всю документацию и имеете четкое представление об общей базе кода.
Самое главное, чтобы проверить, будет ли человек эффективен в эти месяцы . Вам все равно, если человек не сможет ничего понять в течение первых двух дней.
Попросив человека прочитать короткий кусок кода с нуля, вы не проверяете, как этот человек сможет справиться со знакомым, документированным кодом, примерно из тысячи LOC .
3. Поддерживать исходный код - это не просто читать
Когда вы поддерживаете кодовую базу, вы модифицируете ее. Разработчик, который просто читает код, не приносит ничего полезного для его компании.
Полезными навыками являются способность реорганизовывать код , добавлять модульные тесты , прогнозировать влияние изменений и т. Д. Вы не проверяете эти навыки, когда просите человека прочитать код во время интервью.
источник
Чтение - это предположение, основанное на том факте, что умение присутствует для письма. Рассмотрим концепцию на любом языке. Программирование - это просто язык общения между человеком и машиной. Рассмотрим общение между людьми. Если бы вы нанимали кого-то, кто будет переводчиком для японского языка, разве это не могло бы привести к выводу, что если бы они могли написать эссе из 1000 слов по определенной теме, они могли бы его прочитать?
Как программисты, наша основная деятельность - это создание кода и перевод абстрактных идей в конкретные реализации. Это обычно означает письмо. Я согласен, что чтение столь же важно, но в подавляющем большинстве случаев, когда присутствует способность писать, способность чтения также присутствует. Единственный реальный случай, где я мог бы видеть различимое различие, был бы в среде, где есть много очень сложных случаев, которые развивались с течением времени. Даже учитывая это, вы не ожидаете, что кто-то сможет прочитать их и понять их, по крайней мере, без некоторого изучения.
Кроме того, чтение кода и объяснение того, что, по вашему мнению, оно делает, на самом деле не говорит интервьюеру о том, как вы используете свои навыки критического мышления. Это показывает небольшой анализ, но большинство работодателей хотят видеть, можно ли думать, не помещая их в коробку. Они хотят знать, можете ли вы понять концепции без выгоды (или даже без косточки) существующего кода, чтобы сказать вам, что или как сделать что-то.
источник
Раньше я считал, что чтение кода должно быть чем-то, что демонстрируется в интервью, но со временем я понял, что это пустая трата времени как для интервьюера, так и для интервьюируемого. Почему? Потому что даже плохие кодеры могут прочитать фрагмент кода.
Возможность судить о чьей-либо способности читать код становится уместной только тогда, когда вы смотрите на что-то сложное или код, охватывающий множество классов и файлов. Возможность отслеживать код, чтобы выяснить, что он делает, является желательной чертой, но у кого-то просто не хватает времени, чтобы придумать хороший пример (не рабочий код), и нет времени на интервью, чтобы задать такой вопрос. ,
Итак, плохие кодеры могут читать код, но они не могут хорошо писать код. Просьба увидеть примеры работы кандидатов или попросить кандидата написать код на собеседовании - лучший показатель их квалификации. Если они могут написать чистый лаконичный код, скорее всего, они смогут хорошо читать код.
Я спрашиваю каждого кандидата, у которого я беру интервью у варианта проблемы FizzBuzz . Это быстро, просто и обычно может выявлять плохих кодеров намного быстрее, чем все остальное, что я нашел. Хороший программист получит это очень быстро и легко, и он даст вам быстрый взгляд на их стиль кодирования и процесс мышления.
источник