Как сделать так, чтобы документация не болела?
Проблемы с документацией
- Её нет.
- Устаревает, не актуальная.
- Сложно и дорого обновлять.
- Непонятна нужная детальность.
- Непонятен процесс документирования и как он встроен в разработку.
- Её никто не читает, она непонятная, она сложная, получать информацию из неё дорого и долго, проще спросить устно.
- Её никто не пишет (в том числе потому что её никто не читает).
- Бизнес не очень понимает зачем нужна документация и не видят её ценность.
Как можно решить
Выделить роль и, при небходимости, отдельного человека.
Documentation Champion.
Выделенный технический писатель в команде. Отлично работает для небольших компаний.
Сервисный отдел технических писателей. Для больших компаний, когда уже выстроены процессы написания документации, есть шаблоны и практики внутри компании.
Не описывать детали, которые часто меняются (см. п. 3).
Хранить рядом с кодом. Сделать обновление документации частью критериев приёмки ревью кода.
Поддерживать трассируемость между артефактами документации кода и тикетов.
Не нужно документировать часто меняющиеся детали.
Документировать не код, а что над ним. Документировать мотивацию — зачем нужен это код, а не что он делает. Документировать только то, что не очевидно из кода.
Есть стандарты и их много. В них можно подглядывать:
- IEEE 26511 Requirements for managers of information for users of systems, software, and services
- IEEE 1016 Software Design Description
- IEEE 42010 Architecture description
- C4 Model
- Arc42
- Architecture Decision Records
- http://agilemodeling.com
Определить целевую аудиторию и задачу документации — писать документацию ради документацию бессмысленно.
Выбрать паттерн из двух: одна база знаний и множество вариантов доступа к ней или одна точка входа через агрегатор ко множеству источников. По опыту documentat.io, одна структурированная база знаний получается более жизнеспособной.
Подумать над точками входа в базу знаний и методах поиска информации. Чем больше вариантов найти документ - тем лучше. Используйте теги, структуру, списки документов и так далее.
Продумать структуру документации, чтобы в ней было удобно найти нужное.
Писать несколько документов (или разделов документов) для разной целевой аудитории.
Принять стайлгайд на тексты, писать просто и понятно. Собрать шаблоны, чтобы документация была единообразная. Примеры: redpolitika.ru.
Линтинг качества текстов, например vale
См. 0.
Считать потери на отсутствие документации (например на долгий онбординг пользователей или новых сотрудников).
Зафиксировать онбординг в терминах времени/денег.
Опосредованно посчитать нагрузку на саппорт для пользовательской документации.
Популяризировать профессию и роль технического писателя.
Инструменты
- Rst + Sphinx
- Markdown + куча статик-сайт генераторов + pandoc
- foliant.org
- Asciidoc + Asciidoctor + Antora
- Confluence + плагины
- Специализированные вещи:
- OpenAPI (+ AsyncAPI)
- RAML
- PlantUML / Mermaid / Graphviz
- C4-PlantUML
- OpenAPI (+ AsyncAPI)
- DITA
- JavaDoc / Docbook / Sphinx