Top.Mail.Ru

Техническая документация: как создать и вести документацию для IT-команды

Какая техническая документация нужна IT-команде: README, API, ADR, ТЗ, Runbook, Postmortem, Changelog. Как создать документ, оформить и поддерживать актуальным.

5

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

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

Как создать техническую документацию?

Создание технической документации сводится к четырём шагам. Команды чаще ошибаются не в оформлении, а на первом шаге: документируют всё подряд или не то, поэтому порядок здесь важнее объёма.

  1. Определите, что именно нужно задокументировать, и отсеките остальное.
  2. Соберите информацию у того, кто принимал решение, пока он ещё в команде.
  3. Оформите документ так, чтобы его прочитали, а не пролистали.
  4. Опубликуйте его там, где работают те, кому он понадобится.
Как создать техническую документацию: четыре шага — определить, собрать, оформить, опубликовать

Но прежде чем идти по шагам, стоит понять, какой документ вы вообще пишете: от вида зависит и объём, и автор, и срок жизни.

Какие виды технической документации нужно учитывать?

IT-команде хватает семи видов документации, и каждый закрывает свой вопрос:

  • README — как запустить проект;
  • API-документация — как к нему обратиться извне;
  • ADR — почему архитектура именно такая;
  • Техническое задание — что нужно сделать до старта разработки;
  • Runbook — что делать дежурному, когда всё упало;
  • Postmortem — почему упало и что менять;
  • Changelog — что изменилось между версиями.
Семь видов технической документации: README, API-документация, ADR, техническое задание, Runbook, Postmortem, Changelog

Русскоязычные материалы о технической документации обычно описывают её через стандарты ЕСПД: техническое задание, пояснительная записка, описание программы. Это документы, которые команда сдаёт наружу — заказчику или по договору.

Но большую часть рабочего времени разработчик читает другие документы, которые команда пишет сама себе. В стандартах их нет, и именно они чаще всего не написаны.

README и документация репозитория

README — первый файл, который открывает разработчик после клонирования репозитория. Он отвечает на один вопрос: как запустить это у себя и не потратить на это день.

Рабочий README держится на минимуме: одна строка о назначении проекта, установка и первый запуск, пример вызова, описание переменных окружения и конфигурации. Всё остальное выносится в отдельные документы и линкуется.

Проверка простая: дайте README новому разработчику и посмотрите, дойдёт ли он до работающего проекта, ни разу вас не спросив. Каждый вопрос — это пропущенный пункт.

API-документация

API-документация нужна тем, кто вызывает ваш сервис снаружи: соседней команде, интегратору, клиенту. Она описывает эндпоинты, форматы запроса и ответа, коды ошибок и способ авторизации.

Главное отличие от README — читатель не видит ваш код и не может в него заглянуть. Поэтому каждый эндпоинт нужен с живым примером запроса и ответа, а не только со схемой полей.

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

Architecture Decision Records (ADR)

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

Формат предложил Майкл Найгард в заметке «Documenting Architecture Decisions» в ноябре 2011 года. Он описал ADR как короткий текстовый файл на одну-две страницы, где каждая запись описывает набор действующих сил и одно решение в ответ на них.

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

Техническое задание (ТЗ)

Техническое задание описывает, что нужно сделать, до того как разработка началась. Оно фиксирует требования к фиче, границы работы и критерий, по которому её примут.

В российской практике ТЗ живёт в рамках ЕСПД: содержание и оформление задаёт ГОСТ 19.201-78. Стандарт разрешает уточнять состав разделов, вводить новые и объединять существующие в зависимости от особенностей программы, поэтому формальность здесь ниже, чем кажется по названию.

Во внутренней разработке ТЗ обычно короче стандарта и пишется на одну фичу: задача, ограничения, что считается готовым. Ценность даёт не объём, а строка про критерий приёмки — именно её потом цитируют в споре.

Runbook

Runbook — инструкция для дежурного инженера на случай инцидента. Её читают ночью, в спешке и без времени разбираться, поэтому она пишется шагами, а не рассуждениями.

Хороший runbook отвечает на три вопроса: как понять, что случилось именно это, что нажать, чтобы вернуть сервис, и кого разбудить, если не помогло. Теорию из него выносят в ADR, ссылкой.

По жанру runbook ближе всего к рабочему регламенту: тот же жёсткий порядок действий и тот же ответственный на каждом шаге. Как такие документы составляют и внедряют в команде, разобрали в статье о регламентах в работе.

Postmortem-отчёты

Postmortem разбирает инцидент постфактум. В книге Site Reliability Engineering, которую команда Google выпустила в O'Reilly в 2016 году, он определён как письменная фиксация инцидента, его последствий, предпринятых действий, коренных причин и последующих шагов, чтобы инцидент не повторился.

Ключевое слово там — blameless. Разбор исходит из того, что все участники действовали добросовестно, исходя из той информации, которая у них была, и ищет причины в системе, а не виноватых. Иначе люди перестают сообщать о сбоях.

В той же главе перечислены поводы для разбора: видимый пользователю простой или деградация выше порога, любая потеря данных, вмешательство дежурного вроде отката или перенаправления трафика, слишком долгое решение и отказ мониторинга, когда о сбое узнали вручную.

Changelog и release notes

Changelog — список заметных изменений между версиями. Проект "Keep a Changelog" Оливье Лакана описывает его как выверенный, хронологически упорядоченный список для каждой версии и предлагает шесть типов записей: добавлено, изменено, устарело, удалено, исправлено, безопасность.

Главный принцип оттуда: changelog пишется для людей, а не для машин. Поэтому автосборка из git log его не заменяет — коммит фиксирует шаг в эволюции кода, а раздел changelog описывает заметную разницу для того, кто этим продуктом пользуется.

Release notes решают ту же задачу для внешнего читателя и говорят его языком: не «отрефакторили очередь», а «письма перестали дублироваться». Внутренний changelog при этом остаётся техническим.

Как определить, что нужно задокументировать?

Документировать всё — верный способ не документировать ничего: объём растёт, актуальность падает, доверие к документации исчезает. Поэтому нужен критерий отбора, а не полнота.

Рабочих критериев два. Первый: вопрос, который в чате команды задают повторно. Если на него ответили дважды, ответ пора выносить в документ. Второй: решение или процедура, которые знает один человек.

Второй критерий важнее. Знание, которое живёт в одной голове, — это не документация, а риск: он реализуется в отпуске, на больничном или при увольнении, и всегда в неудобный момент.

Как собрать информацию для документа?

Информация для технического документа почти никогда не лежит готовой. Её собирают из трёх источников, и порядок здесь тоже имеет значение.

Начните с автора решения: у него в голове есть то, чего нет ни в коде, ни в тикетах, — отвергнутые варианты. Дальше идут код и коммиты: они показывают, что было сделано на самом деле, а не что планировали. Восстанавливать историю проще, когда задачи и коммиты уже связаны, — для этого платформа для совместной работы Strive интегрируется с GitHub и с GitLab.

Третий источник — реальный инцидент. Документ, написанный по следам настоящего сбоя, точнее любого умозрительного описания: в нём остаются те детали, которые в теории выглядят необязательными.

Как оформить документ для восприятия?

Технический документ читают не подряд, а по диагонали, в поиске нужного куска. Значит, оформление решает не эстетику, а скорость поиска ответа.

Что работает:

  • короткие абзацы и нумерованные шаги вместо сплошного текста;
  • код в отдельном блоке, а не внутри строки;
  • таблица там, где сравниваются параметры;
  • схема там, где текст описывает связи между элементами;
  • единые термины: один объект называется одним словом по всему документу.

Полезен и подход информационного стиля Максима Ильяхова: убрать стоп-слова, то есть балласт, который ничего не добавляет к сообщению. В технической документации это особенно заметно — вводные обороты удлиняют текст, но ни одного вопроса не закрывают.

В трекере задач Strive документ собирается сразу в нужном виде: заголовки, списки, цитаты, таблицы, чекпункты и вставка кода доступны прямо в редакторе, а к разделам можно оставлять комментарии, не уходя в мессенджер.

Меню блоков в редакторе документа Strive: заголовки, списки, чекпункты, цитата, код, таблица

Как опубликовать документ для команды?

Документ, о котором никто не знает, не существует. Публикация — это не «сохранить файл», а положить документ туда, где работают люди, которым он понадобится.

Ссылка в чате для этого не годится: сообщение утонет в ленте к вечеру, а через месяц его не найдёт даже автор. Документация должна лежать в общем пространстве команды, рядом с её проектами и задачами.

Часть документов нужна и за пределами команды: API-документацию читают интеграторы, релизные заметки — клиенты. В таск трекере Strive документ можно сделать публичным по ссылке, и тогда его откроют те, кто в сервисе не зарегистрирован.

Публикация документа в Strive: опубликовать страницу или всю документацию

Как вести техническую документацию?

Написать документ проще, чем удержать его живым. Ведение документации — отдельная работа из трёх частей:

  1. Связать документ с той задачей или проектом, к которым он относится.
  2. Поддерживать его в актуальном состоянии, когда меняется код.
  3. Вести в инструменте, который для этого приспособлен.

Как связать документацию с задачами и проектами?

Документ, который лежит отдельным файлом, теряется первым. Он не привязан ни к чему, и найти его можно, только если помнишь название.

Поэтому документацию организуют структурой, повторяющей структуру работы. В сервисе для управления задачами Strive есть три уровня: обычный документ, документ внутри группы и поддокумент, вложенный в основной. Из них собирается древовидная структура — например, группа на сервис, документ на подсистему, поддокументы на её части.

Второй способ связи — перекрёстные ссылки. В редакторе есть отдельный блок «Ссылка на документ», поэтому README ссылается на ADR, а runbook на то же архитектурное решение, и читатель не ищет соседний документ поиском.

Живёт эта структура в пространстве команды, рядом с её проектами, и открывается прямо из проекта. Отдельного «диска с документами» не появляется: разработчик остаётся там же, где ведёт задачи.

Как поддерживать документацию актуальной?

Документация устаревает вместе с кодом, и это происходит тихо: текст выглядит рабочим, но описывает поведение прошлого релиза. Такой документ хуже отсутствующего, потому что ему верят.

Помогают две вещи. У каждого документа должен быть владелец — человек, а не отдел. И у документа должен быть повод для пересмотра, привязанный к коду: рефакторинг затронутого модуля, смена контракта API, изменение процедуры деплоя.

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

История изменений документа в Strive: список версий с автором и кнопка «Восстановить»

Какие инструменты упрощают ведение документации?

Инструменты для технической документации делятся на четыре группы, и выбор между ними — это выбор компромисса.

  • Markdown в репозитории — документ живёт рядом с кодом и ревьюится вместе с ним, но виден только разработчикам и теряется при росте объёма.
  • Генераторы из кода (Doxygen, Sphinx, Javadoc) — документация не расходится с сигнатурами, но описывает только код и не отвечает на вопрос «почему».
  • Вики и базы знаний — удобно искать и писать всем, но документация живёт в стороне от задач и быстро устаревает.
  • Таск-менеджер с документацией — документы лежат там же, где работа команды, и обновляются в том же контуре.

Последний вариант закрывает главную проблему остальных: разработчику не нужно переключаться между инструментами, чтобы свериться с документом. Как выстроить документацию всей компании, а не только техническую, разобрали в статье о ведении документации компании.

Как выбрать инструмент для технической документации?

Инструмент оценивают по одному признаку: будут ли документацией пользоваться каждый день. Из него раскладываются пять критериев:

  • редактор понимает технический текст — блоки кода, таблицы, чекпункты;
  • документы связаны с задачами и проектами, а не лежат отдельно;
  • есть история версий, чтобы видеть изменения и откатывать правки;
  • доступ настраивается по ролям, а нужные документы можно открыть наружу;
  • есть связь с репозиторием, чтобы задачи и коммиты не жили порознь.

Под эти критерии подходит раздел «Документация» в системе управления задачами Strive: документы ведутся рядом с задачами в древовидной структуре, редактор поддерживает таблицы, чекпункты и вставку кода, история версий позволяет вернуться к прежней редакции, доступ настраивается по ролям, а отдельные документы открываются по публичной ссылке. Интеграция с GitHub и GitLab связывает задачи с коммитами, а данные хранятся в России.

Начните работу в Пространствах прямо сейчас
Начните работу в Strive прямо сейчас
Начать бесплатно
Начните работу в Strive прямо сейчас
Документация
Разработка
IT

Как вам статья?

Расскажете, чего не хватило в статье?

Максимум 500 символов0/500
🔒Этот комментарий увидит только редакция и никто больше. Не отправляйте персональные данные.
Вам может быть интересно