Код-ревью: даём и принимаем фидбек

Код-ревью на английском — это дипломатия. Одно и то же замечание может прозвучать как помощь или как нападение. Слова решают.

Critique the code, not the coder. — золотое правило ревью

Хорошее ревью — это сотрудничество, а не суд. Англоязычная культура ревью выработала набор смягчающих формул, по которым видно опытного инженера. И принимать критику тоже нужно уметь: благодарно и без оправданий. Разберём обе стороны.

Как оставлять замечания

РезкоКонструктивно
This is wrong.I think this might cause an issue when …
Don't do it like this.Have you considered using X here?
Bad naming.nit: maybe a clearer name like userCount?
This won't work.This could break if the list is empty.
Rewrite this.Suggestion: we could simplify this with map().

Маркеры важности замечания

МаркерЗначениеОбязательно чинить?
nit:мелочь, на твоё усмотрениенет
suggestion:предложение, можно обсудитьопционально
question:вопрос для пониманияответить
issue: / blocker:проблема, блокирует mergeда
praise: / nice:похвала, отметить хорошее

Префиксы экономят нервы: ревьюер сразу даёт понять, что критично, а что — вкусовщина. Если видишь nit: — можешь спокойно проигнорировать.

Как отвечать на ревью

Good answers (благодарно, по делу):
  "Good catch, fixed!"            — Хорошее замечание, поправил!
  "Makes sense, updated."         — Логично, обновил.
  "Fair point. I kept it because …" — Справедливо. Оставил, потому что…
  "Thanks, didn't think of that."  — Спасибо, не подумал об этом.

Avoid (оборонительно):
  "It works on my machine."        — звучит как отмазка
  "Why does it matter?"            — звучит агрессивно
  Молчаливый push без ответа       — выглядит как игнор

Полезные фразы

Good catch, thanks!                    — Хорошее замечание, спасибо!
I'll address this in the next commit.  — Поправлю в следующем коммите.
Could you clarify what you mean here?  — Можешь пояснить, что имеешь в виду?
I'd push back on this one because …    — Тут я бы не согласился, потому что…

Частые ошибки рус-говорящих

  • Воспринимать ревью как личную атаку. Замечания — к коду, не к тебе. «Good catch, fixed» — здоровая реакция, а не капитуляция.
  • Оправдываться вместо ответа. «It works on my machine» звучит как отмазка. Лучше: «Fixed» или «Fair point, I kept it because…».
  • Резкие замечания без префиксов. Без nit:/suggestion: мелкое пожелание читается как требование. Помечай важность.

Чек-лист ревьюера и автора

  • Замечание помечено префиксом важности (nit/suggestion/blocker)?
  • Критикуешь код, а не человека?
  • На каждый комментарий ревьюера есть твой ответ или реакция?
  • Отметил ли что-то хорошее (praise:), а не только проблемы?

Несогласие без конфликта

Иногда ты не согласен с замечанием — и это нормально. Англоязычная культура ревью позволяет «push back» (возразить), но требует делать это аргументированно и уважительно. Цель — договориться о лучшем решении, а не выиграть спор.

СитуацияФраза
Возразить мягкоI'd push back gently here — …
Предложить компромиссWhat if we did X instead?
Согласиться частичноYou're right about A, but for B I'd keep it.
Признать правотуYeah, you've convinced me. Let's do it your way.
Отложить спорLet's discuss this on a quick call.

Важная тонкость: разделяй «blocking» и «non-blocking» замечания и проси ревьюера делать так же. Фраза «non-blocking, but…» означает «можешь не чинить, просто мысль вслух». Это снимает напряжение: автор понимает, что апрув не висит на каждой запятой, и спокойно решает, что взять в работу.

Реакции-минимум на ревью

КлючСмыслГде встречается
Good catch, fixed!хорошее замечание, поправилздоровая реакция
Fair point, I kept it because…справедливо, но оставил…аргументированно
nit / non-blockingмелочь / не блокерснимает напряжение
Have you considered…?ты не думал о…?мягкое замечание

Критикуй код, а не человека; принимай критику благодарно. Помечай важность замечаний — и ревью станет сотрудничеством, а не спором.

Итоги

Код-ревью на английском — про дипломатию. Оставляй замечания конструктивно («I think this might…», «Have you considered…») и помечай важность префиксами (nit:, suggestion:, blocker:). Принимай критику благодарно: «Good catch, fixed» вместо оправданий. Критикуй код, а не человека, и отвечай на каждый комментарий.

Проверьте себя
1. Как конструктивно указать на потенциальную проблему в чужом коде?
AThis is wrong, rewrite it.
BI think this might cause an issue when the list is empty.
CBad code.
DWhy did you do this?
2. Какая реакция на замечание ревьюера считается здоровой?
AIt works on my machine.
BGood catch, fixed!
CWhy does it matter?
DМолча запушить изменение без ответа