В проекте появляется файл CODEOWNERS, и все думают: «Ура, наконец-то порядок! Теперь никто не сломает критичную логику!»
Прописываем владельцев для каждой папки. Настраиваем обязательные проверки. Теперь любое изменение в платежах должен одобрить Вася, а в авторизации – Петя. Безопасность! Контроль! Качество!
А потом начинается реальность.
Ты фиксишь опечатку в комментарии – нужен аппрув от владельца. Добавляешь логирование – аппрув. Меняешь название переменной – аппрув. Вася в отпуске на две недели, а тебе нужно срочно задеплоить фикс бага в продакшн. Сидишь и ждешь.
И самое смешное – когда владелец наконец-то смотрит твой код, он часто просто ставит галочку. Потому что у него своих задач выше крыши, он не погружался в контекст, и честно говоря, он просто верит, что ты не накосячил.
Вот тут я понял: CODEOWNERS – это не про код. Это про людей.
Файл не защищает от багов. Он не сделает код лучше магическим образом. Он не заменит нормальное ревью. Он просто создает точку синхронизации между людьми.
И есть два способа его использовать.
Первый способ – бюрократия. Прописать владельцев на всё подряд. Сделать так, чтобы без аппрува не пролезла даже правка опечатки. Создать иллюзию контроля. В итоге получаешь замедление разработки, выгорание владельцев и пул-реквесты, которые висят неделями.
Второй способ – доверие. Прописать владельцев только на реально критичные куски. На те места, где ошибка дорого стоит. На интеграции с банками, на алгоритмы расчетов, на ядро авторизации. И не потому что не доверяешь команде, а потому что хочешь, чтобы у этих мест был явный ответственный. Человек, который в курсе всех изменений и может быстро помочь, если что-то пошло не так.
Я видел проекты, где CODEOWNERS превратился в проблему. Каждый владелец стал узким местом. Люди начали обходить систему – делать коммиты в обход, просить "просто апрувни, я сам проверил".
Видел проекты, где он работал прекрасно. Потому что владельцев было немного, они действительно разбирались в своих областях, и их аппрув значил не "я формально посмотрел", а "я вник и готов помочь, если что".
А еще видел проекты, где CODEOWNERS вообще нет. И знаете что? Они прекрасно работают. Команда просто сама договаривается, кого позвать на ревью критичных изменений. Без формальных правил, без обязательных блокировок. Просто на доверии и здравом смысле.
Так что если собираетесь добавлять CODEOWNERS в проект – сначала подумайте не про файл, а про команду. Есть ли у вас люди, которые реально готовы быть владельцами? Хватит ли у них времени? Доверяете ли вы остальным разработчикам настолько, чтобы не требовать аппрувы на каждый чих?
Потому что в конце концов, лучший CODEOWNERS – это когда вся команда чувствует себя владельцами кода. А файл – просто инструмент для нескольких критичных мест. Или вообще не нужен.
Post #557
487
- ❤ 7
- 👍 1