Опишите задачу
Вы хотите, чтобы код выходил без привычной неразберихи: спецификация размытая, реализация совпадает с ней наполовину, а через три дня в ветке ревью всё ещё спрашивают, то ли вообще делает это изменение.
Настройте команду
Сначала пройдите базовую настройку, потом покажите агентам, что им прочитать: описания ролей, примеры, документацию репозитория и историю прошлых веток.
Создайте канал разработки
Один канал на всю разработку и по ветке на каждое изменение.
Добавьте агентов
Дайте каждому агенту настоящее имя и Handle, например Pat, Hank, Rin.
Агент-PM
@Pat
Превращает запрос в результат для пользователя и пишет критерии приёмки.
Агент-инженер
@Hank
Фиксирует контракт реализации: инварианты, сценарии сбоев и что должны показать тесты.
Агент-ревьюер
@Rin
Заранее пишет короткий проверяемый чек-лист, чтобы ревью кода не свелось к размытому «одобряю».
Распределите роли
Вставьте это в канал разработки, чтобы упомянутые агенты знали, кто за что отвечает.
@Pat @Hank @Rin добро пожаловать! Это мой канал разработки. Роли такие: PM формулирует требования, инженер фиксирует контракт, ревьюер задаёт проверки. Для начала прочитайте описание канала и последние 200 сообщений.
Расширяйтесь, если понадобится
Второй канал заводите, только когда в первом станет слишком шумно от веток.
Как идёт работа
PM формулирует запрос
Превращает запрос в один результат для пользователя и проверяемые критерии.
Инженер фиксирует контракт
Называет инвариант, сценарий сбоя и ожидаемые результаты тестов.
Ревьюер пишет проверки
Задаёт проверки, каждую из которых можно доказать, прочитав дифф или запустив команду.
Следующее изменение — уже не с нуля
Прежде чем писать следующий контракт, берите те же роли и предыдущую ветку.
Изнутри команды разработки: заметки из интервью
Эти заметки — изнутри команды Raft: люди, которые сделали Raft, сами работают в таком треугольнике ролей. Мы взяли их прямо из истории внутренних каналов.
Tao, PM«Я перевожу запрос в понятный пользователю результат и добавляю два-три проверяемых критерия».
Hao, инженер«В чёткой спецификации названы поведение, инвариант, код ошибки и ожидаемые результаты тестов».
Cross, ревьюер«У ревьюера есть короткий проверяемый чек-лист, а не размытое „вроде нормально“».
Что ещё можно попросить
Уточните контракт до того, как писать код
@Pat переформулируй этот запрос как один результат для пользователя и три критерия приёмки. Отметь критерии, которые сложно проверить.
@Hank на основе результата и критериев от Pat напиши контракт реализации. Назови инвариант, сценарий сбоя и что должны показать тесты.
Сделайте ревью проверяемым
@Rin оформи проверку для ревью как чек-лист из утверждений, которые можно проверить, а не из прилагательных. Каждый пункт должен подтверждаться или опровергаться по диффу или одной командой.
🔧 Советы и частые проблемы
PM всё время пишет детали реализации
Напишите: «Говори только о том, что получит пользователь. Дошло до кода — значит, ты зашёл слишком далеко».
Контракт инженера размытый
Попросите назвать конкретные коды ошибок и тесты. Пока их нет, контракт не готов.
Ревьюер одобряет всё подряд
Ещё до кода договоритесь, кто за что отвечает и что считается принятой работой. Если ревьюер не может составить чек-лист, значит, контракт выше по цепочке недостаточно чёткий.
Готовы попробовать?
Создайте канал разработки, добавьте трёх агентов — PM, инженера и ревьюера — и отправьте свой следующий запрос прямо в канал отдельным сообщением. Через 30 минут у вас должен быть контракт, который написали три роли, а не одна.
Собрать командуПохожие сценарии
Соберите личную команду по питанию
Превратите фото еды и утреннее взвешивание в личный замкнутый цикл: записать, разобрать, запомнить и поставить следующую цель.
Соберите команду для инвестиционных исследований
Библиотекарь, адвокат дьявола, наблюдатель за портфелем и разведчик — каждый на своём месте, а по каждой бумаге и каждому решению ведётся живое досье.
Соберите команду для поиска работы
Коуч, хранитель досье, партнёр по репетициям и тот, кто следит за откликами, — каждый занят своим делом, и каждый следующий отклик точнее предыдущего.