Психология code review

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

Суть

Code review — не про код, а про людей. Психологическая динамика определяет, чему научится автор и сохранится ли команда. Закон Постела применим к ревью: критичен к своему коду, доброжелателен к чужому.

Главный принцип

«Поругайтесь с человеком, и вы обретёте врага, а подружитесь — и вас станет на одного человека больше.»

Что происходит при агрессивном ревью

  • Атака на код → защита автора
  • Защита плохого кода
  • Закрепляется ложное «я пишу хорошо»
  • Враждебность вместо обучения
  • В команде растёт напряжение

Метод подбадривания

  • Хвалить код по фактам (что хорошо)
  • Подводить вопросами к слабым местам
  • Дать автору сказать «а здесь можно лучше»
  • Самокритика автора > критика ревьюера

Закон Постела (для ревью)

  • Критично к своему коду
  • Доброжелательно к коду коллег
  • Преподаватель показывает критику личным примером
  • «Я бы здесь сделал по-другому» лучше «у тебя тут плохо»

Парадокс критичности

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

  • Дописал → «теперь знаю как лучше» → переписать с нуля
  • Переписал → опять «теперь знаю как лучше» → снова с нуля
  • Бесконечный цикл

Нужна сходящаяся динамика — шатает из крайности в крайность, но всё меньше и меньше.

Что писать в комментариях к PR

  • Вопрос, а не утверждение: «А что будет, если null?» вместо «Это упадёт на null»
  • Предложение, а не приказ: «Может, вынести в функцию?» вместо «Вынеси в функцию»
  • Похвала за хорошие части — да, прямо в PR
  • Объяснение «почему» к каждой претензии
  • Ссылки на доку, статьи, аргументы

Антипаттерны

  • Гневный тон ради тона
  • Длинные комментарии с самоутверждением
  • «Я бы так не написал» без альтернативы
  • Игнорировать контекст автора (junior/middle/senior)
  • Стиль ради стиля
  • Bike-shedding: спор о пробелах вместо архитектуры
  • Молчание там, где нужно похвалить

Цель ревью

  • Не «найти ошибки», а передать знание
  • Не «защитить код от плохих коммитов», а расти вместе
  • Не «показать кто здесь главный», а выровнять понимание

Когда блокировать PR

  • Конкретная регрессия или баг
  • Угроза безопасности
  • Нарушение архитектурных договорённостей команды
  • Не «не нравится стиль»
  • Не «я бы сделал иначе»

🎓 Источники

  • ⚡ [💡 Про педагогику и образование] · 2025-02-21 · YouTube
    • Тезисы: не давить, подбадривать; атака → оборона; помогать самому критиковать; закон Постела; парадокс критического мышления; сходящийся процесс
  • ⚡ [🧐 Ревью говнокода и другие мудрости] · 2025-12-19 · YouTube
    • Тезисы: подбодрить лучше, чем кричать; преподаватель критичен к себе; цикл переписывания с нуля