Лента/TalkLedger/№ 01

Зачем вообще фиксировать решения?

Есть простой маркер слабой инженерной культуры. Если в проекте нет зафиксированных решений проекта не существует. Есть только шум, люди и код, который пока работает.

Есть простой маркер слабой инженерной культуры. Если в проекте нет зафиксированных решений - проекта не существует. Есть только шум, люди и код, который пока работает.

Я не буду начинать с мягких заходов, “best practices” и историй успеха. Будем честны сразу.


Факт №1. Код - не является решением

Это нужно проговорить вслух, потому что до сих пор многие этого не понимают.

Код - это следствие. Решение - это причина.

Когда ты смотришь на код и пытаешься понять:

  • почему здесь именно так?
  • почему не иначе?
  • почему этот вариант вообще был выбран?
  • и не находишь ответа, значит решение никогда не было оформлено. Оно существовало максимум в чьей-то голове. Иногда - даже не до конца.

Если решение нельзя восстановить без автора - его не существует.


Факт №2. Память команды - миф

Любимая иллюзия:

“Мы помним, почему так сделали”

Нет. Не помните.

Через:

  • 3 месяца,
  • смену контекста,
  • одного уволившегося разработчика,
  • одну аварийную задачу,
  • память испаряется.

Остаётся только код, который:

  • нельзя менять,
  • страшно трогать,
  • никто не хочет брать на себя ответственность за пересмотр.

Так рождаются:

  • legacy,
  • “не трогай, оно работает”,
  • архитектурные кладбища.

Факт №3. Обсуждение ≠ решение

Slack, Teams, митинги, созвоны - всё это не фиксация.

Даже если:

  • все согласились,
  • покивали,
  • “да, вроде норм”,
  • “поехали так”.

Если после этого не появился артефакт, значит:

  • решения нет,
  • ответственности нет,
  • обратного пути нет.

Обсуждение без фиксации - это утечка энергии. Вы поговорили. И всё.


Факт №4. Нефиксированное решение невозможно оспорить

А теперь ключевой момент.

Если решение не зафиксировано:

  • его нельзя проверить,
  • нельзя оспорить,
  • нельзя улучшить,
  • нельзя отменить.

Любая попытка выглядит как:

“Ну мы тогда так решили”

Кто - мы? Когда - тогда? На основании чего?

Ответов нет. Есть только апелляция к прошлому, которое нельзя воспроизвести.


Факт №5. Решения - это граф, а не список

Проекты ломаются не потому, что приняли “неправильное” решение. Они ломаются потому, что:

  • решения противоречат друг другу,
  • меняют контекст,
  • отменяют предпосылки,
  • тянут старые допущения в новый мир.

Без фиксации связей между решениями ты никогда не увидишь:

  • где именно возник конфликт,
  • какое решение стало источником проблемы,
  • что именно нужно пересмотреть, а не переписать всё.

Вывод

Если ты не фиксируешь решения:

  • ты не управляешь системой,
  • ты не управляешь эволюцией,
  • ты не управляешь ответственностью.

Ты просто реагируешь.

Фиксация решений - это не бюрократия. Это минимальное условие мышления в сложных системах.


Почему этот блог вообще существует

Этот блог - не про разработку. Он про мышление, зафиксированное в форме решений.

Про:

  • что считается решением,
  • когда возникает конфликт,
  • как фиксировать изменение контекста,
  • и почему отмена решения - это тоже решение.

Если решение нельзя зафиксировать - значит, его нельзя принимать.