Добавить в корзинуПозвонить
Найти в Дзене

Очень грустная история к чему приводит отсутствие документации в команде

Год назад в нашей команде работал Сергей. Senior разработчик, который знал всю платежную систему (bus-factor)
Я ему говорил: "Сергей, надо задокументировать как работает система."
Он: "Некогда. Задач много."
"Хотя бы базово..."
"Потом. Сейчас срочные фичи."
Каждый месяц одно и то же.
Я успокаивал себя: "Ничего, Сергей же никуда не денется."
В июле Сергей пришел с заявлением:
"Я ухожу. Через две недели."
Я в панике: "Как?! Куда?!"
"Релокация. Семья уезжает."
"Две недели?! Нам нужно передать знания!"
Сергей: "Постараюсь все рассказать."
Передача дел:
Неделя первая. Сергей показывает код.
"Вот тут логика платежей. Это связано с вот этим. А это триггерится отсюда..."
Мидл Антон записывает. Голова кругом.
"Сергей, а где документация?"
"В коде. Я код хорошо писал, там все понятно."
Неделя вторая. Сергей ушел.
Через день после ухода - первая проблема:
23:00. Звонок. Дежурный разработчик:
"Платежи встали! Что делать?!"
Я: "Антон, ты же с Сергеем разбирался!"
Антон смотрит код: "Я... не по



Год назад в нашей команде работал Сергей. Senior разработчик, который знал всю платежную систему (bus-factor)
Я ему говорил: "Сергей, надо задокументировать как работает система."
Он: "Некогда. Задач много."
"Хотя бы базово..."
"Потом. Сейчас срочные фичи."

Каждый месяц одно и то же.
Я успокаивал себя: "Ничего, Сергей же никуда не денется."
В июле Сергей пришел с заявлением:
"Я ухожу. Через две недели."
Я в панике: "Как?! Куда?!"
"Релокация. Семья уезжает."
"Две недели?! Нам нужно передать знания!"
Сергей: "Постараюсь все рассказать."

Передача дел:
Неделя первая. Сергей показывает код.
"Вот тут логика платежей. Это связано с вот этим. А это триггерится отсюда..."
Мидл Антон записывает. Голова кругом.
"Сергей, а где документация?"
"В коде. Я код хорошо писал, там все понятно."

Неделя вторая. Сергей ушел.
Через день после ухода - первая проблема:
23:00. Звонок. Дежурный разработчик:
"Платежи встали! Что делать?!"
Я: "Антон, ты же с Сергеем разбирался!"
Антон смотрит код: "Я... не понимаю. Он показывал, но я не запомнил детали. Тут какая-то логика с флагами..."
"Позвони Сергею!"
Звоним. Сергей в самолете. Недоступен.
Платежи стоят 4 часа. Клиенты злые. Теряем деньги.

На следующий день Сергей ответил:
"Ребята, я в другой стране. Нового работодателя. Не могу помогать."
Я: "Ну хоть скажи где искать проблему!"
"Попробуйте в логах посмотреть... но я не помню точно, давно писал."
Команда неделю разбиралась. По крупицам. По комментариям в коде. По логам.

Через месяц - вторая проблема:
Нужно добавить новый платежный метод.
"Сергей делал это за день," - говорит продакт.
Команда разбирается неделю. Потому что:
- Нет схемы как система работает
- Нет описания зависимостей
- Нет списка шагов для добавления метода
Есть только код. Запутанный. Без комментариев.

Через три месяца - катастрофа:
Баг в продакшене. Платежи иногда дублируются.
Антон две недели ищет причину.
"Я не понимаю логику. Тут десять условий, куча флагов, связи между тремя сервисами. Где-то там баг, но я не могу найти."
Наняли эксперта. За 500к. Он месяц разбирался.
"У вас архитектура сложная. Кто проектировал?"
"Сергей. Но он ушел."
"Документация есть?"
"Нет."
Эксперт: "Проще переписать с нуля."

Итог:
Переписываем платежную систему. Полгода работы. Два миллиона рублей.
CEO мне: "Почему не было документации?"
"Сергей был занят..."
"А почему ты не настоял?"
Молчу.
"Из-за отсутствия документации мы:
- Потеряли клиентов когда платежи стояли
- Потратили 2 млн на переписывание
- Потеряли полгода на разработку"

Что понял:
"Некогда документировать" = "Некогда спасать будущее компании от катастрофы".
Сергей был занят фичами. А должен был быть занят тем, чтобы компания могла работать без него.

Теперь правило: Ни одна система не идет в прод без базовой документации. Даже если "некогда".

Документация - это не про удобство. Это про выживание.
А у вас есть критическая система без документации?