Чаты, почта и code review
Либо ты планируешь свою жизнь, либо она с тобой случается.
Асинхронная коммуникация защищает фокус и позволяет людям работать в разном ритме. Но плохо спроектированный async превращается в бесконечную очередь уведомлений, где решение размазано по десяткам сообщений.
Чат подходит для короткого уточнения, оперативного сигнала и координации. Он плохо подходит для долгоживущего решения.
Хорошее сообщение содержит:
- тему в первой строке;
- необходимый контекст;
- конкретный вопрос или просьбу;
- срок и причину срока;
- ссылку на подробный артефакт.
Если ветка стала длиннее экрана, спор повторяется или появляются несколько альтернатив, соберите состояние в документ. Встреча нужна не автоматически: иногда достаточно одного резюме.
Почта полезна для формальной внешней коммуникации, широкого объявления и сообщения, которое должно пережить чат. Тема письма является интерфейсом:
[Решение до 18 июля] Контракт интеграции[Для информации] Итоги миграции[Действие] Подтвердить владельцев до пятницы
Один тред — одна развивающаяся тема. Если цель изменилась, создайте новое письмо.
Code review
Заголовок раздела «Code review»Ревью — проверка изменения и передача инженерного контекста. Оно не должно быть соревнованием в стиле.
Полезно маркировать комментарии:
- blocker: риск корректности, безопасности, данных;
- question: нужен контекст;
- suggestion: улучшение, не блокирующее merge;
- nit: мелочь;
- praise: решение, которое стоит повторять.
Комментарий объясняет причину:
blocker: при повторной доставке этот вызов создаст вторую оплату. Нужен idempotency key или проверка существующей операции. Тестовый сценарий: два одинаковых события.
Фраза «переделай» не передаёт модель.
Ответственность автора
Заголовок раздела «Ответственность автора»Автор изменения:
- описывает цель и риск;
- ограничивает размер PR;
- указывает способ проверки;
- сам делает первый проход;
- отвечает на комментарии решением или аргументом;
- не закрывает замечание без ясности.
Ревьюер:
- отвечает в согласованный срок;
- читает контекст до деталей;
- отделяет стандарт от вкуса;
- предлагает пример там, где формулировка неоднозначна;
- не требует несвязанный рефакторинг внутри задачи.
«Почему здесь вообще так? Выглядит ужасно».
Стало«`question`: я ожидал единый источник статуса в `Payment`. Сейчас поле дублируется в `Order`, поэтому состояния могут разойтись. Это временная совместимость или выбранная модель? Если второе, давай зафиксируем инвариант тестом».
ЭффектАвтор может ответить на технический риск, не защищая собственное достоинство.
Правило эскалации канала
Заголовок раздела «Правило эскалации канала»Переходите из async в синхронный разговор, если:
- за два цикла не удалось согласовать значение термина;
- эмоции растут быстрее информации;
- вопрос блокирует инцидент;
- нужна совместная генерация вариантов;
- письменная стоимость превысила стоимость короткой встречи.
После разговора верните решение в письменный артефакт.
Перед отправкой следующей просьбы проверь: сможет ли получатель понять ставку, открыть нужные ссылки и дать полный ответ, не задавая вопрос «а что именно нужно?».