Психология code review
Если ты нападаешь на код — автор уходит в оборону и закрепляет привычку защищать говнокод. Если подбадриваешь — он сам себя критикует. Самокритика важнее внешней.
Суть
Code review — не про код, а про людей. Психологическая динамика определяет, чему научится автор и сохранится ли команда. Закон Постела применим к ревью: критичен к своему коду, доброжелателен к чужому.
Главный принцип
«Поругайтесь с человеком, и вы обретёте врага, а подружитесь — и вас станет на одного человека больше.»
Что происходит при агрессивном ревью
- Атака на код → защита автора
- Защита плохого кода
- Закрепляется ложное «я пишу хорошо»
- Враждебность вместо обучения
- В команде растёт напряжение
Метод подбадривания
- Хвалить код по фактам (что хорошо)
- Подводить вопросами к слабым местам
- Дать автору сказать «а здесь можно лучше»
- Самокритика автора > критика ревьюера
Закон Постела (для ревью)
- Критично к своему коду
- Доброжелательно к коду коллег
- Преподаватель показывает критику личным примером
- «Я бы здесь сделал по-другому» лучше «у тебя тут плохо»
Парадокс критичности
Если воспитать критическое мышление слишком сильно — программа никогда не будет дописана:
- Дописал → «теперь знаю как лучше» → переписать с нуля
- Переписал → опять «теперь знаю как лучше» → снова с нуля
- Бесконечный цикл
Нужна сходящаяся динамика — шатает из крайности в крайность, но всё меньше и меньше.
Что писать в комментариях к PR
- Вопрос, а не утверждение: «А что будет, если null?» вместо «Это упадёт на null»
- Предложение, а не приказ: «Может, вынести в функцию?» вместо «Вынеси в функцию»
- Похвала за хорошие части — да, прямо в PR
- Объяснение «почему» к каждой претензии
- Ссылки на доку, статьи, аргументы
Антипаттерны
- Гневный тон ради тона
- Длинные комментарии с самоутверждением
- «Я бы так не написал» без альтернативы
- Игнорировать контекст автора (junior/middle/senior)
- Стиль ради стиля
- Bike-shedding: спор о пробелах вместо архитектуры
- Молчание там, где нужно похвалить
Цель ревью
- Не «найти ошибки», а передать знание
- Не «защитить код от плохих коммитов», а расти вместе
- Не «показать кто здесь главный», а выровнять понимание
Когда блокировать PR
- Конкретная регрессия или баг
- Угроза безопасности
- Нарушение архитектурных договорённостей команды
- Не «не нравится стиль»
- Не «я бы сделал иначе»
🎓 Источники
- ⚡ [💡 Про педагогику и образование] · 2025-02-21 · YouTube
- Тезисы: не давить, подбадривать; атака → оборона; помогать самому критиковать; закон Постела; парадокс критического мышления; сходящийся процесс
- ⚡ [🧐 Ревью говнокода и другие мудрости] · 2025-12-19 · YouTube
- Тезисы: подбодрить лучше, чем кричать; преподаватель критичен к себе; цикл переписывания с нуля