Запросить образец кода компании на собеседовании [закрыто]

69

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

Саймон Бергот
источник
14
Я бы лучше спросил о стандартах кодирования, обзорах кода и т. Д.
user16764
5
Проходит
Мартин Йорк,
2
@LokiAstari тест joel не имеет прямого отношения к культуре кодирования (только рабочая среда).
Саймон Бергот
8
@ user16764, это все равно что задавать кандидату теоретические вопросы: это хороший первый шаг, но он не показывает, как он применяет эти знания.
Саймон Бергот
2
programmers.stackexchange.com/questions/160922/… Аналогично этому вопросу.
Аноним

Ответы:

69

Я всегда прошу посмотреть код по нескольким причинам:

  • Я хочу знать, во что я ввязываюсь. Конечно, ни одна софтверная фирма не идеальна, и я не ожидаю, что все будут постоянно изощрять чудеса элегантности (потому что я тоже), но если я попрошу у компании самый лучший код, и все, что они могут мне показать, это на уровне спагетти, я знаю, что я нахожусь в бедственном положении, разворачивая шарики волос и борясь с техническим долгом, чтобы что-нибудь сделать. Глядя на лучший код, который может показать компания, устанавливает верхний предел того, какое качество там возможно; даже если маловероятно, что весь их код выглядит так, вы все равно знаете, что к ним они стремятся.
  • Просмотр примеров кода многое говорит мне о культуре кодирования компании. Они используют комментарии к документации? Они склоняются к объектно-ориентированному стилю, имеют ли они тенденции функционального программирования? Они консервативны или прогрессивны? Они ценят последовательное именование, правильное форматирование и отступы, а также аккуратный код в целом? Легко ли следовать коду? Как они структурируют свои проекты? Как они подходят к важным вещам - автоматизированное тестирование, обработка ошибок и т. Д.? Насколько защищен их стиль кодирования?
  • Видя их существующий код, вы сможете судить, можете ли вы соответствовать их стандартам .
  • Тот факт, что компания готова поделиться примерами кода в одиночку, является в принципе хорошим знаком. Это означает, что они предлагают мне, заявителю, некоторое доверие , поскольку их кодовая база является одним из их самых ценных активов. Это также означает, что им не стыдно за свой код, что они уверены, что показ мне кода поможет мне поработать с ними.
  • Если они не будут показывать вам примеры кода, тогда это не обязательно должен быть красный флаг, но разумно спросить, почему они не будут делиться (вполне вероятно, что они просто не могут по юридическим причинам), а также объяснить, почему вы хотите увидеть некоторые из них. Я не думаю, что проявление интереса к их коду будет восприниматься как отрицательный знак, если вы спрашиваете вежливо и положительно.

И тогда есть еще несколько побочных эффектов:

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

tdammers
источник
1
Если потенциальный работодатель покажет вам код, который явно плохой, помните, что это может быть возможностью привести его к улучшению их кода и процессов. Как гласит старая поговорка: «Я могу только напортачить, но я могу починить сломанное!». Кроме того, помните, что код, показанный кандидату или кандидату, вероятно, подвергся гораздо более строгой проверке, чем другой код.
Актон
@akton Это мое отношение к плохому коду. Однако это бесполезно, когда вы одиноки в своем квесте «исправление грязного кода». Если вы захотите посмотреть какой-нибудь хороший код, это поможет понять, что ваша будущая команда ценит такие вещи, как SOLID
Simon Bergot
1
«Я всегда прошу посмотреть какой-нибудь код». Как после того, как вы на самом деле показали код? Вы просите их подготовить что-то заранее или отправить вам что-нибудь потом? Независимо от того, как вы смотрите на это, это кажется непрактичным.
Бурхан Али
1
@BurhanAli: я просто спрашиваю. Многие отказываются показывать мне что-либо, и обычно они дают мне веские причины, и это хорошо. Те, кто согласен, дают мне экскурсию под наблюдением; Я сомневаюсь, что кто-нибудь отправит мне по почте полный набор источников, чтобы просмотреть их, но кликать по проекту в IDE, пока я смотрю, часто приемлемо.
tdammers
Во многих случаях я думаю, что код, который я действительно хочу увидеть, будет рассматриваться как закрытое конкурентное преимущество. Это будет тот код, который важнее всего для меня ... однако, если они согласятся показать вам код, и это отстой, что, вероятно, является признаком того, что они не понимают хороший код. Если бы я был лидером, я бы, наверное, не показывал вам нетривиальный внутренний код. Только я, хотя.
Рог
14

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

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

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

Telastyn
источник
10
Еще полезно посмотреть, смогут ли они выбрать хороший код, чтобы показать вам. Наиболее неприятной частью работы с плохим кодом часто является то, что никто не признает, что он плохой и должен быть исправлен.
JGWeissman
5
Кроме того, идея интервьюера о хорошем коде может не совпадать с идеей хорошего кода. Я думаю, что было бы полезно выяснить это раньше, чем позже.
Эрик Кинг,
1
К сожалению, когда я пытался использовать подход «интервью - двунаправленный», большинство работодателей действовали раздраженно. Мне еще никогда не показывали код. Другая вещь, которую я просил увидеть, - это модель данных, но и там тоже не повезло.
Antonio2011a
12

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

Вы можете спросить, что вы хотите, но:

  • Вы, вероятно, не получите это.

  • Если вы это получите, это не скажет вам ничего полезного. Если 10% их кода красивы, а остальное спагетти, вы все равно будете иметь дело в основном со спагетти.

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

  • Это пустая трата драгоценного времени на собеседование.

  • Есть лучшие способы узнать то, что вы хотите знать. Задайте такие вопросы, как:

    • Каковы наиболее важные показатели качества кода?
    • Буду ли я в основном поддерживать существующий код или писать новый код?
    • Не могли бы вы вкратце объяснить, как работает ваша система?
    • Есть ли у вас документ по стандартам кодирования, и все ли следуют ему?
Калеб
источник
Хорошая точка зрения ! К сожалению, вопрос типа «Каковы наиболее важные показатели качества кода?» Также может восприниматься как умные штаны. (С моей точки зрения это разумный вопрос, но многим работодателям не нравится чувствовать, что их опрашивает потенциальный подчиненный).
Antonio2011a
2
@ Antonio2011a Должно быть хорошо, если вы спросите правильно - возможно, «какие показатели качества кода вы ищете здесь?» просто дайте понять, что вы хотите узнать больше о том, как они делают вещи. Вы узнаете о них, а не проводите тест. Может работать даже при запросе кода: «Могу ли я увидеть, как выглядит ваш код?» а не «Я хотел бы получить образец того, что вы считаете хорошим кодом».
Калеб
3

Смотря как. Мне всегда нравилось знать, где я собираюсь работать.

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

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

Паткос Чаба
источник
Согласовано. Я пытаюсь вникнуть в инструменты, которые они используют? Оплачивают ли менеджеры дополнительные инструменты (компоненты, утилиты), которых нет во многих местах? Отношение к инструментам с открытым исходным кодом тоже всегда хорошее.
Оз
2

Ха-ха, это забавный вопрос. Я бы не обиделась, если бы кто-нибудь попросил у меня пример кода во время собеседования, но, вероятно, я бы тоже не показал им какой-либо код, если бы они не спросили заранее, и у меня не было времени тщательно спланировать.

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

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

Я не вижу ничего, что можно было бы потерять, вежливо спросив и объяснив, почему вы хотите это увидеть.

Марк Э. Хаас
источник
«Красота жизни в том, что если это повышает ваши шансы, то именно в таком месте вы бы хотели работать». +1
Spidey
2

Я задавал этот вопрос в двух моих интервью, где они утверждали, что у них есть старшие разработчики, мигрирующие на asp.net mvc3 или 4, или когда они сказали, что хотят комментировать код. Я отказался в обоих случаях из-за отсутствия их знаний о действующем стандарте кода. Единственный стандарт, который я нашел, был, если это работает, скопируйте и вставьте это, и это будет работать. Я не буду задавать этот вопрос, если я делаю новый проект или мне приходится писать фрагмент кода, независимый от других членов команды. Я обязательно увижу код, если меня нанимают для исправления существующего программного обеспечения или функции, и я не скажу да, если не знаю ответа. Предположим, вы не спрашиваете, и они говорят, можете ли вы исправить дату выбора, чтобы начать с сегодняшней даты. Когда вы смотрите на унаследованный код, вы не видите jquery или jquery ui, а пользовательский инструмент выбора даты, в котором все даты хранятся в файле xml, и каждую ночь запускается задание cron для обновления в нем будущих месяцев. Это вызвало бы головную боль, так как код для достижения этого меньше, чем слова в этом примере. Если вы собираетесь работать над их кодом, попросите его посмотреть. Не спрашивать - это все равно, что указывать на работу, полагая, что клиент сказал, что она маленькая. Он мог бы иметь 20 акров земли, и садоводство на его 1 акре для него невелико, но Гарднер не может брать 50 фунтов только потому, что все его небольшие работы начинаются с 50.

Фаррух Субхани
источник
1

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

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

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

kcunning
источник
0

Это здорово, если ты сможешь получить это. Иногда это невозможно без соглашений типа NDA, но всегда полезно попробовать. Чтобы увеличить ваши шансы, дайте интервьюерам знать, что вы хотите этого заранее (пару дней), чтобы они могли что-то вспомнить.

скоро
источник