Как заставить разработчиков делать обзоры кода своевременно

12

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

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

titaniumdecoy
источник

Ответы:

12

Посмотрите, как это делает Facebook со своим собственным приложением под названием phabricator: http://phabricator.org/

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

Я думаю, это делает его веселее.

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

Хотя, возможно, ваши товарищи по команде не верят в этот обзор.

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

Я обычно удалял некоторые второстепенные части, такие как скобки области блока / функции, нотации видимости, иногда даже типы, и показывал это менеджерам, экспертам по доменам, партнерам, кто бы ни запрашивал код: «это то, что вы хотите?»

Кроме того, посещение лично и не выходя, пока обзор не сделан, помогает.

Или, если вам не нравится команда или вам не нравится, вы знаете, «если вы можете« изменить компанию, сменить компанию »...

Aadaam
источник
9

Я собираюсь основывать это на нескольких предположениях:

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

Только те, кто завершил свои обзоры, могут проверить свой код.

Может быть, определенное время может быть посвящено проверке кода в надежде избежать проблемы прерывания.

Цель должна заключаться в проверке качества кода. Вы не хотите наказывать / форсировать рецензии до такой степени, чтобы все просто давали им «резиновый штамп».

Если у вас разные уровни (младший, старший и т. Д.), Продвижение и сохранение звания должны зависеть от выполнения вашей работы.

JeffO
источник
1

У нескольких предыдущих работодателей мы проверяли, кто был на Code Review ежедневно. Обычно 3 человека делят день CR, и каждый CR должен был быть подписан двумя из рецензентов. Это обеспечило то, что когда был ваш день, вы знали, что от вас ожидают CR, независимо от других ваших проектов. Итак, каждые пять дней или около того, была ваша очередь, и вы могли соответствующим образом корректировать свои задачи по разработке.

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

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

Наконец, мы соглашаемся с SLA о том, как быстро проверяются отзывы. Вряд ли что-либо находится в очереди более 48 часов, и большинство проверок выполняется менее чем за 24 часа.

Адриан Дж. Морено
источник
1

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

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

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

Вначале я хотел бы указать руководству, что проверки кода после фиксации считаются такими же респектабельными, как и проверки перед фиксацией . Эти термины доступны для поиска в Интернете - при необходимости найдите там ссылки для резервного копирования. Для получения 100% проверенного кода необязательно требовать предварительной проверки.

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

комар
источник
1
«Если компания знает лучше, чем программисты, почему они сами не пишут код?» - очень хороший комментарий! Но я надеюсь, что менеджеры по развитию сами являются бывшими разработчиками.
Джорджио
3
Пост-коммит ужасно ухудшает качество вашего кода. Программисты ленивы, и они будут чувствовать, что они закончили, если это можно сделать: «Да, ну, это не идеально, но кого волнует f.ck, что прекрасно в жизни? Она выполняет свою работу, не так ли? " единственный хороший ответ - НЕТ, и, возможно, у менеджеров более реалистичное представление о программистах, чем о них самих, поэтому им требуется предварительная (или, по крайней мере, предварительная) проверка кода.
Аадам
@Aadaam ваш опыт определенно отличается от моего - не только в отношении посткоммитов, но также (и особенно) в части «Программисты ленивы ...» Что касается менеджеров, имеющих более реалистичный имидж, я согласен, что это обычно имело место в мои команды; это только не привело менеджеров, с которыми я имел обыкновение работать, к бессмысленным представлениям о том, какого рода обзор
вызывать
Ну, я работал в аутсорсинге. В аутсорсинге большинство программистов работают не потому, что программирование - это весело, а потому, что программирование имеет наилучшее соотношение работа / оплата, причем ставки намного выше, чем все остальное ... они ненавидят его, как любую другую работу ... и они постарайтесь сделать все, чтобы еще больше «оптимизировать» это соотношение, если вы понимаете, о чем я…
Аадам
1

У вас есть ряд вопросов для решения - вы должны завоевать сердца и умы, и вы должны убедиться, что есть время для проверки кода.

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

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

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

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

Murph
источник
Вы не можете действительно согласиться с тем, что правило «первым делом каждый день» во-первых. Если кто-то находит ошибку, которая стоит компании X долларов в час (или увеличивает риск пропустить важный срок на X процентных пунктов в час), и он делает это за пять минут до того, как вы войдете, то проверка кода не ваша высший приоритет. По сути, проблема заключается в столкновении желания установить простые правила с тем фактом, что приоритеты не всегда просты. Риск состоит в том, что все искренне согласятся с правилом и в течение 24 часов найдут причину, по которой сегодня исключение из правила.
Стив Джессоп
И решение сложно, но в IME вы должны найти достаточно «места», чтобы ввести новую рабочую практику, которая отнимает много времени, но стоит. Это требует предусмотрительности, чтобы определить слабое время, готовность к сокращению сроков, как цену внесения стоящих изменений, или и того, и другого. TANSTAAFL. Как вы говорите, как только все установят схему, они могут делать исключения. Надеемся, что они делают это, основываясь на правильном понимании ценности общего паттерна.
Стив Джессоп
Я говорю «пусть сдвигаются сроки», я должен был сказать «сдвигать сроки». «скольжение» подразумевает перемещение их после того, как они совершены, то есть потерпели неудачу, но это не обязательно должно быть так. Вместо этого вы могли бы планировать период немного сниженной производительности из-за негибкого нового правила (и неизбежной неэффективности, вызванной людьми, которые пытаются следовать любому новому процессу - если вы делаете обзор кода первым делом, то вы пропустите утреннюю схватку встреча в дни, когда проверка кода занимает слишком много времени, или какие-то уникальные проблемы, которые ваша организация может внести в эту смесь). Если это хорошее правило, вы скоро добьетесь того, с чего начали.
Стив Джессоп
@ SteveJessop, конечно, вы действительно можете согласиться с этим. И, конечно, будут исключения (я думаю, что наблюдение за скрамом глупо - тем более, что ответ очевиден (-:). Я думаю, что ключ в том, что не существует «одного размера, подходящего для всех решений», я просто предложил что-то простое и легкое для понимания и относительно трудное для изменения графика (опять же в зависимости от среды)
Murph
1

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

Замочить
источник
0

Подумайте об использовании такого инструмента, как Review Board . Это очень полезно, особенно для длинных обзоров.

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

Джорджио
источник
0

Несколько моментов, которые нужно добавить, которых нет в других ответах.

Код для проверки должен быть проверен в

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

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

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

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

Брюс Адамс
источник