Почему документация устаревает быстрее кода — и как мы поймали это числом
Сверка нашла 14 задач, закрытых в коде и числящихся открытыми. Две из них два дня блокировали продажу юрлицам, хотя работа была сделана. Теперь форму отметок держит машина.
Код проверяют тесты. Документацию не проверяет никто — и она расходится с реальностью молча, в одну сторону: не там, где написано лишнее, а там, где написанное перестало быть правдой.
Мы решили измерить, насколько.
Что показала сверка
Одна сверка планов с кодом нашла 14 задач, закрытых в коде и числящихся открытыми.
Расхождение шло в неожиданную сторону. Обычно боятся обратного — «в плане закрыто, а в коде нет». На практике чаще встречается «сделано и не отмечено», и стоит оно дороже: по такому плану человек либо не делает работу, которая уже сделана, либо делает её второй раз.
Дороже всего обошлись две строки. Они числились блокирующими продажу юридическим лицам — через два дня после того, как нужное было проставлено в коде. По планам продажа стояла. По коду шла.
Почему отметка не ставится сама
Отметку ставит человек в конце работы, когда внимание уже ушло на следующее. Это не небрежность, это устройство внимания: задача закрыта в голове раньше, чем закрыта в документе.
Значит, полагаться на дисциплину бесполезно. Нужно либо делать отметку частью того же изменения, что и код, либо не иметь плана вовсе.
Три правила, два из которых держит машина
1. У каждого плана в шапке — строка статуса с датой сверки. Не «в работе» вообще, а «в работе, сверено такого-то числа». План без даты не отличим от плана, который никто не открывал полгода.
2. Рядом с каждой отметкой «сделано» стоит, чем она проверяется — файл, миграция, номер решения, номер версии. Отметка без адреса не проверяется никем и через месяц становится враньём.
3. Отметка ставится тем же изменением, что и код. Не «потом одним заходом».
Первые два проверяет гейт в общем прогоне. И он честно говорит о своей границе: он проверяет форму, а не факт. Строка, где путь назван в описании задачи, пройдёт, даже если работа не сделана. Отличить упоминание от сделанного машина не может — это работа периодической сверки, и её результат ложится в отдельный документ.
Отдельно про «наполовину»
Сделано наполовину — это не «сделано». У нас для этого своя отметка и обязательная фраза, чего именно не хватает.
Половина, названная целым, дороже честного пробела: по пробелу принимают решение «надо сделать», а по ложному «готово» — «можно продавать».
Как проверить у себя
Возьмите свой план и три случайные строки со статусом «сделано». По каждой ответьте: чем это проверяется прямо сейчас?
Если ответ «я помню» — у вас та же история, просто вы её ещё не считали.
Что из этого следует
Документация проекта не устаревает от времени. Она устаревает от каждого изменения кода, которое её не тронуло, — то есть от почти каждого.
Единственный способ, который у нас работает: документ правится тем же движением, что и код, а форма правки проверяется машиной. Всё остальное — надежда на внимание в тот момент, когда его уже нет.
У нас документы проекта живут рядом с задачами и связаны с ними ссылками — чтобы вопрос «где мы это решили» имел ответ через полгода. Как это устроено — Документы.
Читайте также
- Мы убрали с экрана два абзаца объяснений — и это улучшениеВсё написанное было правдой. Кроме одной фразы, которая разошлась с интерфейсом и врала месяцами, — и никто не заметил, потому что её не читали.
- Зелёный гейт, который ничего не проверил, опаснее красногоЗа один день нашлись три: проверка секретов зеленела на обрезанной истории, проверка зависимостей принимала пустой ответ за «уязвимостей нет», третья не запускала сравнение ни разу.
Автор
Александр ЦапковОснователь Скоупворк
Веду платформу и её боевой контур сам: разработка, выкат, дежурство. Пишу о том, на чём мы обожглись, — с датами, замерами и ссылками на решения в репозитории.