DevPace
БлогСправкаНовостиСкачатьДемоТарифыПривязка устройстваВойтиНачать

Журнал технических решений: зачем записывать «почему»

Коротко. Код фиксирует, что сделано, но не сохраняет, почему выбрано именно это. Через полгода причина забывается, и команда либо повторяет обсуждение с нуля, либо меняет решение, не зная о причине, по которой оно было принято. Журнал технических решений — короткие записи по одной странице: контекст, варианты, выбор и его последствия. В инженерной практике такой формат известен как ADR (architecture decision record). Ключевая часть записи — не решение, а отвергнутые варианты и причина отказа: именно они не восстанавливаются потом никакими усилиями и именно из-за их отсутствия начинаются повторные споры.

Журнал технических решений: зачем записывать «почему»

Код помнит, что выбрано. Причину выбора не помнит ничто, кроме записи

Содержание

Какую проблему это решает

Четыре знакомые ситуации:

«Почему здесь так сделано?» Через полгода никто не помнит, включая автора. Дальше два плохих исхода: либо решение считают ошибкой и переделывают, наступая на те же грабли, либо не трогают из страха, хотя причина давно исчезла.

Повторные обсуждения. Один и тот же спор возвращается каждые несколько месяцев, потому что аргументы нигде не зафиксированы.

Онбординг. Новому человеку приходится реконструировать логику системы по коду. Журнал решений сокращает это радикально: онбординг нового сотрудника.

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

Что записывать

Минимальный состав записи — четыре блока:

  1. Контекст. Какая задача стояла и какие ограничения действовали на тот момент: сроки, объём, доступные технологии, размер команды.
  2. Рассмотренные варианты. Два-три реальных, а не формальные «варианты для галочки».
  3. Решение. Что выбрано.
  4. Причина и последствия. Почему выбрано и что мы теперь принимаем как плату за это: чего не сможем, что усложнится, что придётся делать вручную.

Самый ценный блок — второй вместе с четвёртым. Записанное «мы отказались от X, потому что Y» экономит месяцы: когда через год кто-то предложит X, разговор начнётся с проверки, изменилось ли Y, а не с нуля.

Шаблон записи

Дата, автор
Статус: предложено / принято / заменено на #N

Контекст
Что решаем и какие ограничения действуют.

Варианты
1. Вариант A — плюсы, минусы.
2. Вариант B — плюсы, минусы.
3. Вариант C — плюсы, минусы.

Решение
Выбран вариант B.

Причина
Почему именно он — 2-3 предложения по существу.

Последствия
Что усложняется, чем платим, что придётся пересмотреть при изменении условий.

Одна страница — верхний предел. Запись на десять страниц не будет ни написана, ни прочитана.

Какие решения стоит записывать

Стоит:

Не стоит:

Практичный критерий: если через год кто-то спросит «почему так?», запись нужна.

Где хранить

Три рабочих варианта, по убыванию надёжности:

Главное правило — одно место и понятная навигация. Журнал, разбросанный по чатам и почте, не существует.

Как не превратить в бюрократию

Самая частая причина смерти такой практики — она становится обязанностью без пользы. Что помогает:

Что делать с устаревшими записями

Записи не удаляются — они получают статус.

Так сохраняется история изменений мышления команды, а это отдельно полезная вещь: по ней видно, какие предположения регулярно оказываются неверными.

Отдельная хорошая практика — при пересмотре решения открывать старую запись и проверять, изменились ли перечисленные в ней ограничения. Часто выясняется, что нет — и тогда пересмотр не нужен.

Чек-лист

FAQ

Что такое журнал технических решений? Набор коротких записей о принятых решениях: контекст, рассмотренные варианты, выбор, причина и последствия. В инженерной практике такой формат известен как ADR — architecture decision record.

Зачем записывать, если решение видно в коде? Код показывает, что сделано, но не сохраняет, почему выбрано именно это и от чего отказались. Именно причина не восстанавливается потом и вызывает повторные споры.

Какой длины должна быть запись? Одна страница максимум, около 10 минут на написание. Более объёмные документы не пишут и не читают.

Какие решения записывать? Те, которые трудно отменить (схема данных, границы сервисов, публичные интерфейсы), выбор технологий, отказ от очевидного варианта, компромиссы под сроки и всё, что вызвало спор.

Где лучше хранить журнал? В репозитории рядом с кодом: он версионируется, попадает в ревью и не теряется при смене инструментов. Вики и трекер тоже подходят, но менее надёжны.

Что делать, если решение устарело? Не удалять запись, а поставить статус «заменено на #N» со ссылкой на новую. История пересмотров сама по себе полезна.

Как заставить команду вести журнал? Не заставлять, а встроить: писать только по важным решениям, тратить на запись десять минут и включать её в ревью вместе с кодом. Обязательность без пользы убивает практику.