ADR

ADR — Architecture Decision Record.

Часто сталкиваюсь с недооценкой использования ADR в разных командах разработки.

Если ADR навязан “сверху”, каждая такая запись превращается в длинный рассказ, который невозможно прочитать и понять, чем мотивировано то или иное решение. Такие ADR пишутся “чтобы были”, для одобрения коллег и руководства. Ошибочно предполагается, что “труд”, вложенный в длинный (и часто непоследовательный) рассказ приносит команде пользу.

Такие ADR пишутся один раз, никем и никогда не читаются, и хранятся “потому что являются важным документом”.

Основная задача ADR — передать коллегам, в том числе и будущим, контекст принятого решения.

Не превращайте ADR в длинную историю. Чётко зафиксируйте ситуацию, по пунктам укажите причины, повлиявшие на ваше решение, зафиксируйте предполагаемые последствия, на что может повлиять ваш выбор в будущем, чем он может вас ограничить, как можно обойти или снять полученные ограничения.

ADR — не высеченная в камне истина. Со временем или приходом понимания, что принятое решение устарело и не удовлетворяет новым требованиям, его следует пересмотреть, отклонить текущую запись и заменить её новой.

Другой частой проблемой в фиксации ADR является определение значимости решения. Разработчикам кажется, что они описывают очередную мелочь, о которой все и так знают. Как показывает практика — нет. Контекст забывается сразу же после очередного собрания.

В качестве примера приведу ADR, который ошибочно считался несущественным. Команде предлагалось зафиксировать правила именования кластеров. Считалось, что это мелочь, не влияющая на процесс разработки. Зачем составлять на это ADR?

В процессе работы выяснилось, что:

Что в данном случае уместно зафиксировать в ADR?

Инженерная культура моих коллег находится на самом высоком уровне. Мы всегда чётко фиксируем и исполняем принятые нами решения. Составленные ADR не занимают больше одного экрана 13" ноутбука, всегда описывают проблему и контекст принятого решения, отвечают на вопрос “почему” и предупреждают появление возможных негативных последствий. Устаревшие ADR пересматриваются и заменяются новыми, соответствующими современным требованиям.