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

ВОЗ?

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

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

Когда?

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

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

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

Хороший инструмент, который мы используем в Babylon Health, - это Pull Reminders, который дает нам Slack-напоминания и уведомления о наших комментариях PR или любых PR, ожидающих нашего обзора. Мой коллега Сакис Калиакудас написал о нашей настройке с помощью Pull Reminders и других инструментов Pull Panda здесь.

Какие?

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

В то время как люди в одном отряде будут иметь больше контекста по функциям и будут иметь более полный обзор при просмотре кода, кто-то, не входящий в состав отряда, будет смотреть на код по-другому и всегда может предложить другую точку зрения, по этой причине мы не только Поощряйте людей проверять любой PR, мы фактически используем Pull Assigners (наша установка объясняется в той же статье, опубликованной выше), чтобы также случайным образом назначать рецензентов PR. Нам также требуется 2 отзыва, чтобы объединить любой PR, поэтому легко получить кого-то из команды с большим контекстом в функции и кого-то извне.

Как?

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

Предложение vs запрос

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

Объем обзора

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

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

Nitpicks

Хорошо иметь немного ОКР, как и все мы, разработчики :), но важно не блокировать PR из-за придирок. Будем надеяться, что большинство придирок были бы обнаружены раньше всеми автоматическими проверками CI (например, статическим анализом). Когда это не так, у людей часто есть дополнительная работа, где они могут принять предложения, и нет необходимости блокировать их.

Хвалить

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

Общаться

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

Вывод

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

Звучит интересно?

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