Составляем документацию разработчика пошагово без диет и тренировок

Недостаточно просто написать инструкции — важно, как, в каком порядке и где вы их разместите. 

Привет! Это Теодора — технический писатель Платформы, жизненно важного департамента Ozon. Документация для нас имеет большое значение, потому что вся компания пользуется нашими разработками:  

  • инфраструктурой as a service;

  • фреймворками и библиотеками на Go, C#, TypeScript;

  • трейсингом, мониторингом, логированием, нагрузочным тестированием;

  • инструментами для работы с базами данных и аналитикой;

  • виртуализацией и контейнеризацией.

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

Это гусь Гоша и его постоянно отвлекают техническими вопросамиЭто гусь Гоша и его постоянно отвлекают техническими вопросами

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

Зачем вам документация

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

Плюсы хорошей документации:

688452dd20dfb5e56b53513f226d423b.png

  • увеличивается bus-фактор: знание распространяется между большим числом людей, и его сложнее потерять;

  • команда не отвлекается на ответы на одни и те же вопросы и занимается своей работой;

  • коллеги быстро находят ответы (в том числе через Ctrl+F), решают проблемы и разбираются в технологии: как следствие, увеличиваются их продуктивность и доход компании;

  • для внешней документации: разгружает сотрудников техподдержки.

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

Хорошая ли у вас документация?

Пройдите маленький тест и посчитайте набранные баллы:

6a94b6696bfd09d71f8e7947007ffce9.pngРезультаты:

  • 5 баллов: у вас хорошая документация, автор вами гордится!

  • 0–4 балла: есть что доработать — переходите к практическим шагам.

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

4992d24375d163a701498d7e1ee5811a.png

Не торопитесь переходить к действиям — сначала налейте чай и просто прочитайте статью.

Шаг 1. Соберите всю информацию

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

e78f57c0de13227f2e34cc9fd36eed8d.png

  • старая документация;

  • личные страницы — ваши и коллег (например, в Confluence);

  • ответы в чатах;

  • репозитории (например, в GitLab);

  • Word и другие текстовые редакторы;

  • ссылки в закладках браузера.

На будущее: никогда не дублируйте инструкции в разных ресурсах, так их будет сложнее поддерживать:  

  • легче обновить одну, чем две;

  • одну из версий точно забудут обновить — и она будет вводить в заблуждение; как назло всегда будут находить именно её.

Шаг 2. Выбросите мусор

Одна актуальная статья лучше десяти устаревших.

Проверено: если у вас в документации найдут устаревшие сведения, никто не будет читать дальше — спросят у вас лично.

8312084dd7e60c3a50cde27e3d4b415e.png

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

Под «избавлением» имеется в виду одно из двух:

Если после этого вообще ничего не осталось, это нормально.

Если вы детально не знаете начинку описываемой технологии

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

Удачно: позвать на встречу или созвон эксперта из команды (обычно это тимлид или старший разработчик) и вычитать с ним весь материал полностью, не поверхностно.

Неудачно: скинуть материал эксперту и попросить его самого удалить лишнее.

Если плохо выполнить этот шаг, вы потратите много времени зря в будущем. Проверено мной.

После такой «чистки» обычно очень легко дышится — будто камень с шеи снял.

Шаг 3. Найдите частые вопросы и сценарии

Наша новая задача — определить, что нужно задокументировать или актуализировать в первую очередь. Обычно это выясняется так:

  1. Вы перечитываете все вопросы в чате за последний месяц, выписываете их на отдельную страницу (не удаляйте её) и считаете их количество. 

  2. Читаете комментарии с вопросами под инструкциями, если есть.

  3. Опрашиваете аудиторию. Обычно это либо пост в публичном чате, либо вопросы знакомому коллеге лично. Формы с опросами, как правило, неэффективны, поскольку собирают мало ответов.

  4. Продумываете популярные сценарии с командой, ведь лучше вас продукт никто не знает.

Вначале выпишите вопросы и сценарии, а потом начинайте писать для них тексты.

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

Шаг 4. Поделите на разделы

Цель — наметить примерный план будущей базы знаний. Он может дополняться, когда появятся новые данные, но пока нужно сделать «скелет» для всего остального. 

a77ced93f8656a8f336711ac575aa42e.png

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

Добавить их все сплошным списком вразнобой — провальный вариант. Ctrl+F тут тоже не всегда поможет, потому что, например, вы пишете в названии страницы «кубер», а ваш читатель ищет «Kubernetes» или «k8s», ничего не находит — и идёт к вам в личку.

Целевая аудитория

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

Подумайте, какие люди будут её читать. Например:

  • только ваша команда;

  • другие команды, им нужна одна функциональность;

  • другие команды, им нужна разная функциональность;

  • и ваша команда, и другие команды.

Внешние команды не должны видеть странички «Черновик to do»,»[убрать в архив] 2 декабря». Держите их в отдельной папке для черновиков.

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

Шаг 5. Составьте словарь терминов

Одна сущность — один термин.

Договоритесь с командой, как вы что будете называть. Иногда один и тот же термин в разных компаниях используют по-разному, и это путает людей.

Термины должны легко находиться через Ctrl+F.

Неудачные варианты

Удачные варианты

«Пушка», «долбилка» и «стрелялка»;
Почему: кажется, что это разные термины, возникает путаница. Не найдётся по Ctrl+F.

«Пушка»

Почему: все коллеги в Ozon знают этот термин.

«СronJob’ы», «кроны» и «джобы»;
Почему: неясно, составляющие это друг друга или одно и то же. Не найдётся по Ctrl+F.

«CronJob»

Почему: все коллеги знают этот термин, он цельный.

«Фэктори» и «фабрика», «эккаунт» и «аккаунт», «экшен» и «действие»
Почему: будьте осторожны с англицизмами. Не используйте их, если есть подходящий термин на русском языке. Не найдётся по Ctrl+F.

«Фабрика», «аккаунт» и «действие»

Почему: популярные, понятные всем термины на русском языке.

3abe5979a4dfe3c808c0d39709e59a7a.png

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

Шаг 6. Утвердите правила для команды

Заранее обговорите с командой правила и план ведения документации.

9d9df9d239192d8a035268cf8a2a13d0.jpeg

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

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

Если не договориться «на берегу», документация всегда превращается в хаос:

  • нет структуры — статьи добавляют куда попало;

  • никто не убирает устаревшую информацию;

  • команда не всегда знает, что у неё есть в документации;

  • много заброшенных статей;

  • много пустых статей из 2016 с пометкой «to do»;

  • перемешаны внутренние черновики и внешняя документация;

  • нет архива;

  • ведётся на русском, английском, латинском и древнегреческом.

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

Пример правил по созданию новых страниц:

  1. Черновик статьи создавайте в папке для черновиков.

  2. Не добавляйте статью в список публичных, пока не допишете.

  3. Чтобы перенести статью в список публичных:

  • отправьте её в чат команды;

  • её должны прочитать минимум два человека, дать обратную связь и утвердить;  

  • решите с командой, в какой раздел её перенести.

  1. Статью можно переносить.

Советую почитать о методике совместного ведения документации.

Шаг 7. Напишите тексты

Лучший способ научиться писать хорошие инструкции — это отдавать их на вычитку. Желательно — редактору. Если его нет — любому коллеге. Я не о проверке пунктуации, а о том, понятно ли написана статья, полная ли в ней информация.

Некоторые советы могут показаться сложными, но в них описаны базовые вещи.

  • Освойте инструменты форматирования там, где вы ведёте документацию. Примеры: макросы Confluence, синтаксис Markdown и HTML.

    43733710b325e5c5c241cec03ad99adc.png
  • Укажите, для кого страница и что в ней описано, — тогда человек сразу поймёт, нужно ли ему это читать.

  • Не пишите сплошные тексты — делите их на логические абзацы и разделы. При грамотной вёрстке легче сходу найти ответ.

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

  • Оформите разводящую страницу. Это главная страница с основной информацией и разделами по темам. Она нужна, чтобы читатель быстро понял, где искать необходимую инструкцию.
    Пример Ozon Docs
    Пример Yandex Cloud
    Пример Amazon EC2

  • Соблюдайте форматирование — не пишите весь текст в заголовке или жирным шрифтом, не создавайте таблицу в таблице, не убирайте весь текст под каты.

  • Добавляйте ссылки на другие инструкции и сервисы, если они упоминаются в тексте. Это сильно экономит время читателей. Может, они найдут устаревший дубль из шага 1.

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

  • Выделяйте в тексте важное, но не превращайте его в одни сплошные плашки.

  • Укажите контакты команды, чтобы читатели знали, к кому обращаться.

Шаг 8. Добавьте FAQ

FAQ — страница с часто задаваемыми вопросами и ответами на них. 

65de048bd63f33115043f3c59ba90069.png

Многие технические писатели считают наличие FAQ признаком плохой структуры документации. Я же советую добавить эту страницу, потому что она может спасти ситуацию, если у вас не очень удачная разводящая страница.

Используйте список из шага 3, если он есть.

FAQ — это не полноценная инструкция. Не дублируйте тексты и не делайте ответы очень подробными. 

Оптимальный вариант — краткий ответ со ссылкой на полную инструкцию. Например, «Да, это возможно. Подробнее в статье «Как создать N».

Для продвинутых идеалистов:

Вопросы можно сгруппировать по темам — так их будет проще найти. Такие страницы FAQ обычно очень нравятся разработчикам, но это не принципиально, потому что обычно вопросы ищут с помощью Ctrl+F.

Шаг 9. Продумайте, как вашу документацию будут находить

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

Подумайте, куда ваши коллеги чаще обращаются за помощью:

  • к вам в личку: закрепите ссылку на документацию у себя в профиле на корпоративном портале;

  • в ваш чат: закрепите ссылку в шапке, закреплённом сообщении, сделайте так, чтобы каждому вступившему ссылку отправлял бот;

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

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

Шаг 10. Проанализируйте результат

Лучший источник для анализа — ваша аудитория. 

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

Что обычно делаю я:

  • Считаю количество запросов в чатах. 

  • Провожу мини-исследование среди читателей: готовлю открытые вопросы, спрашиваю, долго ли они искали информацию, что именно они искали, нашли ли ответы на свои вопросы.

  • Изучаю статистику просмотров в Confluence и Grafana: если за месяц никто не обратился к документации, нужна ли она?

Сама не практикую, но отличная идея:

Если на этом этапе не всё гладко — это нормально, просто будьте готовы что-то дописать, поменять местонахождение статьи.

Итог

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

И помните, что документация — ваш общий продукт. 

Буду рада ответить на ваши вопросы. Делитесь мнением и историями в комментариях.

© Habrahabr.ru