Составляем документацию разработчика пошагово без диет и тренировок
Время на прочтение
8 мин
Количество просмотров 12K
Недостаточно просто написать инструкции — важно, как, в каком порядке и где вы их разместите.
Привет! Это Теодора — технический писатель Платформы, жизненно важного департамента Ozon. Документация для нас имеет большое значение, потому что вся компания пользуется нашими разработками:
-
инфраструктурой as a service;
-
фреймворками и библиотеками на Go, C#, TypeScript;
-
трейсингом, мониторингом, логированием, нагрузочным тестированием;
-
инструментами для работы с базами данных и аналитикой;
-
виртуализацией и контейнеризацией.
Опираясь на свой опыт, я пошагово расскажу, как привести в порядок документацию технической команды, чтобы избавить коллег от однотипных вопросов и наладить межкомандную коммуникацию.
Дисклеймер: в этой статье упор сделан на содержание, структуру и формат. Сугубо гуманитарные вещи вроде орфографии и пунктуации обсуждать не будем — они на вашей совести.
Зачем вам документация
Документация — один из вариантов коммуникации. Обычно к ней прибегают, когда личное общение не решает проблему. Например, когда вы физически не успеваете до всех донести информацию, а кроме вас, это сделать никто не может.
Плюсы хорошей документации:
-
увеличивается bus-фактор: знание распространяется между большим числом людей, и его сложнее потерять;
-
команда не отвлекается на ответы на одни и те же вопросы и занимается своей работой;
-
коллеги быстро находят ответы (в том числе через
Ctrl+F
), решают проблемы и разбираются в технологии: как следствие, увеличиваются их продуктивность и доход компании; -
для внешней документации: разгружает сотрудников техподдержки.
Да и, согласитесь, вам просто приятно читать документацию, в которой всё понятно описано и легко искать информацию. Если у вас есть примеры, делитесь в комментариях.
Хорошая ли у вас документация?
Пройдите маленький тест и посчитайте набранные баллы:
-
5 баллов: у вас хорошая документация, автор вами гордится!
-
0–4 балла: есть что доработать — переходите к практическим шагам.
У всех разные ситуации с документацией, поэтому алгоритм действий может различаться для каждого конкретного случая. В статье описаны десять шагов, но не все из них подойдут именно вам. Например, если у вас вообще нет документации, вам не нужно выполнять шаг про удаление неактуального.
Не торопитесь переходить к действиям — сначала налейте чай и просто прочитайте статью.
Шаг 1. Соберите всю информацию
Давайте посмотрим, какой материал у вас уже есть. Для этого соберите все описания вашей технологии из разных источников:
-
старая документация;
-
личные страницы — ваши и коллег (например, в Confluence);
-
ответы в чатах;
-
репозитории (например, в GitLab);
-
Word и другие текстовые редакторы;
-
ссылки в закладках браузера.
На будущее: никогда не дублируйте инструкции в разных ресурсах, так их будет сложнее поддерживать:
-
легче обновить одну, чем две;
-
одну из версий точно забудут обновить — и она будет вводить в заблуждение; как назло всегда будут находить именно её.
Шаг 2. Выбросите мусор
Одна актуальная статья лучше десяти устаревших.
Проверено: если у вас в документации найдут устаревшие сведения, никто не будет читать дальше — спросят у вас лично.
Самый важный шаг перед написанием документации — это избавление от устаревшей информации. Перечитайте всё, что собрали, и удалите неактуальные статьи, разделы и предложения.
Под «избавлением» имеется в виду одно из двух:
-
добавление в архив — предпочтительно;
-
безвозвратное удаление.
Если после этого вообще ничего не осталось, это нормально.
Если вы детально не знаете начинку описываемой технологии
Обычно это актуально для техписов, аналитиков и менеджеров, которые разработкой не занимались.
✅ Удачно: позвать на встречу или созвон эксперта из команды (обычно это тимлид или старший разработчик) и вычитать с ним весь материал полностью, не поверхностно.
❌ Неудачно: скинуть материал эксперту и попросить его самого удалить лишнее.
Если плохо выполнить этот шаг, вы потратите много времени зря в будущем. Проверено мной.
После такой «чистки» обычно очень легко дышится — будто камень с шеи снял.
Шаг 3. Найдите частые вопросы и сценарии
Наша новая задача — определить, что нужно задокументировать или актуализировать в первую очередь. Обычно это выясняется так:
-
Вы перечитываете все вопросы в чате за последний месяц, выписываете их на отдельную страницу (не удаляйте её) и считаете их количество.
-
Читаете комментарии с вопросами под инструкциями, если есть.
-
Опрашиваете аудиторию. Обычно это либо пост в публичном чате, либо вопросы знакомому коллеге лично. Формы с опросами, как правило, неэффективны, поскольку собирают мало ответов.
-
Продумываете популярные сценарии с командой, ведь лучше вас продукт никто не знает.
Вначале выпишите вопросы и сценарии, а потом начинайте писать для них тексты.
Если вашей разработкой пока никто не пользовался, будьте готовы собрать обратную связь после релиза и дописать то, что было неясно.
Шаг 4. Поделите на разделы
Цель — наметить примерный план будущей базы знаний. Он может дополняться, когда появятся новые данные, но пока нужно сделать «скелет» для всего остального.
Структура нужна, чтобы пользователю было понятно, в каком разделе искать нужную информацию. Это особенно актуально, если в вашей документации много страниц.
Добавить их все сплошным списком вразнобой — провальный вариант. Ctrl+F тут тоже не всегда поможет, потому что, например, вы пишете в названии страницы «кубер», а ваш читатель ищет «Kubernetes» или «k8s», ничего не находит — и идёт к вам в личку.
Целевая аудитория
Читатель должен видеть только то, что ему полезно. Разделяйте документацию в зависимости от потребностей аудитории.
Подумайте, какие люди будут её читать. Например:
-
только ваша команда;
-
другие команды, им нужна одна функциональность;
-
другие команды, им нужна разная функциональность;
-
и ваша команда, и другие команды.
Внешние команды не должны видеть странички «Черновик to do», «[убрать в архив] 2 декабря». Держите их в отдельной папке для черновиков.
Например, если ваша аудитория — продуктовые разработчики и команда мониторинга критичных сервисов, которые ищут в документации абсолютно разные вещи, разделите её соответствующим образом.
Шаг 5. Составьте словарь терминов
Одна сущность — один термин.
Договоритесь с командой, как вы что будете называть. Иногда один и тот же термин в разных компаниях используют по-разному, и это путает людей.
Термины должны легко находиться через Ctrl+F
.
Неудачные варианты |
Удачные варианты |
«Пушка», «долбилка» и «стрелялка»; |
«Пушка» Почему: все коллеги в Ozon знают этот термин. |
«СronJob’ы», «кроны» и «джобы»; |
«CronJob» Почему: все коллеги знают этот термин, он цельный. |
«Фэктори» и «фабрика», «эккаунт» и «аккаунт», «экшен» и «действие» |
«Фабрика», «аккаунт» и «действие» Почему: популярные, понятные всем термины на русском языке. |
Если у вас в команде есть авторские разработки, названия которых придумали вы сами, заведите словарь терминов с пояснениями. Это особенно актуально, если статей много и неудобно в каждую добавлять расшифровки. Людям будет в разы проще вникнуть в вашу разработку: оставляете везде ссылку на словарь и радуетесь жизни.
Шаг 6. Утвердите правила для команды
Заранее обговорите с командой правила и план ведения документации.
Представим, что вы уже составили структуру базы по шагам выше и теперь её нужно поддерживать.
Обычно инструкции в команде пишут разные люди. Часто процессам ведения документации не уделяют должного внимания.
Если не договориться «на берегу», документация всегда превращается в хаос:
-
нет структуры — статьи добавляют куда попало;
-
никто не убирает устаревшую информацию;
-
команда не всегда знает, что у неё есть в документации;
-
много заброшенных статей;
-
много пустых статей из 2016 с пометкой «to do»;
-
перемешаны внутренние черновики и внешняя документация;
-
нет архива;
-
ведётся на русском, английском, латинском и древнегреческом.
Донесите до команды, что документация — это ваш общий продукт и от её качества зависит эффективность: ваша и других команд.
Пример правил по созданию новых страниц:
-
Черновик статьи создавайте в папке для черновиков.
-
Не добавляйте статью в список публичных, пока не допишете.
-
Чтобы перенести статью в список публичных:
-
отправьте её в чат команды;
-
её должны прочитать минимум два человека, дать обратную связь и утвердить;
-
решите с командой, в какой раздел её перенести.
-
Статью можно переносить.
Советую почитать о методике совместного ведения документации.
Шаг 7. Напишите тексты
Лучший способ научиться писать хорошие инструкции — это отдавать их на вычитку. Желательно — редактору. Если его нет — любому коллеге. Я не о проверке пунктуации, а о том, понятно ли написана статья, полная ли в ней информация.
Некоторые советы могут показаться сложными, но в них описаны базовые вещи.
-
Освойте инструменты форматирования там, где вы ведёте документацию. Примеры: макросы Confluence, синтаксис Markdown и HTML.
-
Укажите, для кого страница и что в ней описано, — тогда человек сразу поймёт, нужно ли ему это читать.
-
Не пишите сплошные тексты — делите их на логические абзацы и разделы. При грамотной вёрстке легче сходу найти ответ.
-
Добавляйте оглавление. Его цель — дать читателю возможность быстро понять, в какую часть текста ему нужно переместиться. Если оно получилось на сто пунктов, сократите его или разбейте статью на несколько.
-
Оформите разводящую страницу. Это главная страница с основной информацией и разделами по темам. Она нужна, чтобы читатель быстро понял, где искать необходимую инструкцию.
Пример Ozon Docs
Пример Yandex Cloud
Пример Amazon EC2 -
Соблюдайте форматирование — не пишите весь текст в заголовке или жирным шрифтом, не создавайте таблицу в таблице, не убирайте весь текст под каты.
-
Добавляйте ссылки на другие инструкции и сервисы, если они упоминаются в тексте. Это сильно экономит время читателей. Может, они найдут устаревший дубль из шага 1.
-
Избегайте канцеляризмов — они утяжеляют тексты: «
для тогочтобы вданномпроцессеосуществить определённуюфункциональность». -
Выделяйте в тексте важное, но не превращайте его в одни сплошные плашки.
-
Укажите контакты команды, чтобы читатели знали, к кому обращаться.
Шаг 8. Добавьте FAQ
FAQ — страница с часто задаваемыми вопросами и ответами на них.
Многие технические писатели считают наличие FAQ признаком плохой структуры документации. Я же советую добавить эту страницу, потому что она может спасти ситуацию, если у вас не очень удачная разводящая страница.
Используйте список из шага 3, если он есть.
FAQ — это не полноценная инструкция. Не дублируйте тексты и не делайте ответы очень подробными.
Оптимальный вариант — краткий ответ со ссылкой на полную инструкцию. Например, «Да, это возможно. Подробнее в статье “Как создать N”».
Для продвинутых идеалистов:
Вопросы можно сгруппировать по темам — так их будет проще найти. Такие страницы FAQ обычно очень нравятся разработчикам, но это не принципиально, потому что обычно вопросы ищут с помощью Ctrl+F
.
Шаг 9. Продумайте, как вашу документацию будут находить
Чтобы ваши труды не пропали даром, вашу документацию должно быть легко найти.
Подумайте, куда ваши коллеги чаще обращаются за помощью:
-
к вам в личку: закрепите ссылку на документацию у себя в профиле на корпоративном портале;
-
в ваш чат: закрепите ссылку в шапке, закреплённом сообщении, сделайте так, чтобы каждому вступившему ссылку отправлял бот;
-
в поиск Confluence: удалите устаревшую информацию, если ещё этого не сделали, чтобы она не всплывала, понятно называйте статьи.
Уведомите аудиторию, что у вас появилась документация, вы за ней следите и обращаться нужно именно туда.
Шаг 10. Проанализируйте результат
Лучший источник для анализа — ваша аудитория.
Есть несколько способов понять, решает ли проблемы ваша документация.
Что обычно делаю я:
-
Считаю количество запросов в чатах.
-
Провожу мини-исследование среди читателей: готовлю открытые вопросы, спрашиваю, долго ли они искали информацию, что именно они искали, нашли ли ответы на свои вопросы.
-
Изучаю статистику просмотров в Confluence и Grafana: если за месяц никто не обратился к документации, нужна ли она?
Сама не практикую, но отличная идея:
-
Добавить фичу «Оцените статью». Такие макросы точно есть в Confluence.
Если на этом этапе не всё гладко — это нормально, просто будьте готовы что-то дописать, поменять местонахождение статьи.
Итог
Наверное, достаточно информации за раз. Посоветуйтесь с командой, решите, нужна ли вам документация, есть ли ресурсы для её разработки и поддержки.
И помните, что документация — ваш общий продукт.
Буду рада ответить на ваши вопросы. Делитесь мнением и историями в комментариях.
#Руководства
- 30 сен 2019
-
14
Рано или поздно в жизни каждого разработчика наступает момент, когда он не понимает, как работает его код. Выясняем, что с этим делать.
vlada_maestro / shutterstock
Пишет о программировании, в свободное время создаёт игры. Мечтает открыть свою студию и выпускать ламповые RPG.
Программисты часто сталкиваются с тем, что не могут прочитать код. Такое случается постоянно: когда только приходят в новый проект, когда проверяют код коллеги или — так бывает чаще всего — когда смотрят результат своей же работы. Чтобы этого избежать, нужно писать и читать документацию.
Содержание
- Два вида документации
- Правила хорошего тона в составлении документации
- Где писать документацию в C#
- Как создать файл документации
- Заключение
Разработчики имеют дело с двумя основными видами документации:
- Пользовательская документация. Это руководство по эксплуатации программ. Обычно оно нужно для сложных профессиональных инструментов. Если же пользователи не могут сами разобраться в приложении пиццерии, то лучше доработать интерфейс — добровольно никто инструкцию читать не станет.
- Техническая документация. Это пояснения для программистов, которые будут использовать или дорабатывать существующий код. Они помогут быстро вникнуть в проект и начать работать. Или же продолжить писать программу после долгого перерыва.
К сожалению, не все разработчики (практически никто) любят читать документацию. Любителей писать её и того меньше. Однако делать это очень важно, потому что сложно поддерживать проект без документации.
Составляя документацию, стоит следовать определенным правилам — они помогают сделать ее более понятной.
1. Документация нужна не всегда
Если программа одноразовая, не стоит тратить время на написание пояснений. Например, если нужен небольшой скрипт, который будет написан за пять минут и использован 1-2 раза.
2. Документация нужна не везде
Также не нужно писать пояснения ко всему. Если код написан хорошо, то по названиям уже будет понятно, что это такое и зачем оно используется. Например, легко догадаться, что метод int Sum (int a, int b) возвращает результат сложения двух чисел.
Исключение можно сделать, если речь идет об API или фреймворке, которыми пользуются многие разработчики: они не всегда видят исходный код, но могут использовать классы и методы. Поэтому им важно иметь список доступных методов. В этом случае задокументировать всё нужно просто для галочки.
3. Документация должна быть точной
Очень важно уметь ясно выражать свои мысли. Нужно предельно точно описывать, что делает тот или иной фрагмент кода. Для этого стоит давать как можно более короткие определения. Например:
/// <summary>
/// Сообщение в чате.
/// </summary>
class Message
{
…
/// <summary>
/// Текст сообщения.
/// </summary>
public string Text
{
get { return this.text; }
}
}
В этом фрагменте кода объем документации к классу и его свойству не превышает одного предложения. Этого достаточно, чтобы было понятно, что это такое и для чего его нужно использовать.
4. Документация должна быть сухой
Хотя канцеляризмов нужно избегать, писать надо максимально сухо и по делу. Никаких стихов, метафор, аналогий или шуток — всё это может быть забавным, но не добавляет ясности.
5. В документации не должно быть старого кода
Этот правило больше касается обычных комментариев, чем самой документации. Однако оно очень важное, поэтому приведено здесь.
Никогда не храните в коде старые методы и операторы, даже если они задокументированы. Если что-то не используется в текущий момент — это мусор, от которого нужно избавиться.
Если есть сомнения пригодится ли еще этот код, его лучше сохранить в системе контроля версий — именно для этого ее и придумали.
Дальше речь пойдет о том, как писать техническую документацию для программ на C#. Вся работа будет вестись в Visual Studio.
Вариантов много. Например, можно сделать это в Word или Google Docs, тогда разработчики смогут скачивать файл из интернета. Некоторые хранят инструкции в печатном виде, но это плохой вариант, потому что документация быстро устаревает.
Лучший способ — писать всё прямо в коде программы. Тогда у каждого разработчика будет доступ к документации в любое время. Самый примитивный вариант — использовать комментарии.
В C# есть два вида комментариев. Однострочные:
int a = 11 + 12; //Это однострочный комментарий
И многострочные:
/* Начало комментария
Это
Многострочный
Комментарий
Конец комментария */
Компилятор во время сборки игнорирует комментарии и просто вырезает их, поэтому на работу программы они не влияют.
Более продвинутый вариант — использовать XML. Чтобы вставить XML-комментарий, нужно перед названием класса, поля, свойства или метода поставить тройной слеш.
После этого автоматически будет создано два элемента:
- Summary — общий комментарий. В нем пишут, что делает метод или для чего нужен класс.
- Param — комментарий об аргументе. В нем указывается, какое значение надо передать.
Практически все инструменты, в том числе и Visual Studio, поддерживают вывод подсказок, которые подгружаются из документации. И теперь, если навести на метод Main () или его аргумент, то можно увидеть, что было написано в комментарии.
Такой способ намного лучше, потому что человеку вообще не нужно ничего открывать, чтобы определить, что делает какой-нибудь фрагмент кода. Конечно, наличие XML создает визуальный шум, но его можно просто скрыть.
Еще можно использовать такие XML-элементы, как:
- Returns — возвращаемое значение;
- Value — значение свойства;
- Exception — исключение;
- Remarks — ремарка к основному комментарию.
Таких элементов очень много, подробнее почитать о них можно в документации Microsoft. Цель же этой статьи — показать, как документировать код, чтобы разбираться в проекте стало легче, а не сложнее.
Иногда все-таки нужно сохранить документацию вне кода. Чаще всего ее сохраняют в HTML-формате, а потом загружают на сайт, чтобы разработчики имели к ней доступ.
Для этого сначала нужно зайти в настройки проекта:
А потом перейти во вкладку Build и поставить галочку XML documentation file:
Теперь вместе с компиляцией программы будет создаваться файл с документацией в формате XML. Его можно преобразовать в HTML с помощью специальных утилит. Microsoft для этого рекомендует использовать DocFX или Sandcastle.
Рассмотрим на примере DocFX. Его можно скачать с помощью NuGet Package Manager в Visual Studio. Для этого нажмите на проект правой кнопкой мыши и выберите пункт Manage NuGet Packages:
Затем перейдите во вкладку Browse и введите в поле поиска название docfx.console, а потом нажмите Install:
После нужно подтвердить установку и согласиться с условиями лицензионного соглашения.
Теперь при сборке проекта будет создаваться папка _site, в которой находится сайт с документацией. Однако это касается класса Program, поэтому чтобы проверить работу DocFX, нужно добавить какой-нибудь класс:
namespace ConsoleApp1
{
/// <summary>
/// Класс, который представляет пользователя.
/// </summary>
public class User
{
private string name;
/// <summary>
/// Конструктор класса.
/// </summary>
/// <param name="name">Имя пользователя.</param>
public User(string name)
{
this.name = name;
}
/// <summary>
/// Меняет имя пользователя.
/// </summary>
/// <param name="name">Имя пользователя.</param>
public void ChangeName(string name)
{
this.name = name;
}
/// <summary>
/// Метод для вывода имени пользователя.
/// </summary>
/// <returns>Возвращает имя пользователя.</returns>
public string GetName()
{
return this.name;
}
}
}
После компиляции проекта с таким классом можно проверить сайт. Его главная страница будет пуста — она нужна для того, чтобы вкратце описать свою программу. Сама же документация находится по адресу api/index.html.
Вот как она выглядит:
Многим, и мне в том их числе, гораздо интереснее писать код, а не описывать его. Однако хорошая документация очень важна, если над проектом работает несколько человек или если это API, которым будут пользоваться сторонние программисты.
Кроме того, хорошая практика разработки — когда сначала пишется документация, а потом создаются классы и методы, которые должны ей соответствовать.
Если кроме использования и настройки, программное обеспечение предоставляет возможность написания, редактирования или использования программного кода. Какой документ необходим в этом случае?
Назначение руководства программиста
Руководство программиста относится к эксплуатационно-технической документации и требуется в тех случаях, когда система тем или иным образом предоставляет возможность написания, редактирования или использования программного кода.
Примерами могут служить:
– библиотека функций;
– платформа или среда для разработки ПО;
– ПО с открытым кодом.
Документ должен предоставлять всю необходимую информацию для того, чтобы разработчик мог воспользоваться возможностями системы. Для решения этой задачи содержание документа может включать в себя:
– назначение, структуру входных и выходных данных программных функций;
– возможности по созданию программного кода, особенности его интерпретации и компиляции;
– синтаксические особенности используемого языка программирования;
– возможные правила и ограничения при работе с программным кодом;
– различные инструкции по работе с программой.
Список возможных тем этим не ограничивается, все зависит от особенностей конкретной системы. Надо сказать, что руководство программиста бывает очень полезно и для разработчиков системы, являясь справочником по текущей реализации логики работы ПО.
Состав типового руководства программиста
В соответствии с требованиями ГОСТ руководство программиста должно содержать следующие разделы:
– Назначение и условия применения программы, где указывают область применения ПО и технические требования, необходимые для его работы.
– Характеристика программы, где описывают режим работы программы, показатели скорости ее работы и другие важные для использования характеристики.
– Обращение к программе, где указывают способы и параметры запуска программы;
– Входные и выходные данные, где описывают формат, способ организации и другие требования к входным и выходным данным;
– Сообщения, где приводят тексты сообщений, выдаваемых программой в различных ситуациях и действия, которые необходимо при этом предпринять.
Различные примеры, иллюстрации и таблицы целесообразно приводить в приложениях к документу.
Стандарты для руководства программиста
ГОСТы регламентируют и этот документ, в данном случае это ГОСТ 19.504. В соответствии с ним определяется структура и содержание Руководства программиста.
Стоимость разработки руководства программиста
Наименование документа |
Наименование стандарта |
Стоимость разработки |
---|---|---|
Руководство программиста на ПО |
ГОСТ 19.504 |
от 100 тыс. р. |
Работа по созданию руководства программиста требует высокой квалификации специалиста и знаний в области программирования, однако, для профессиональных разработчиков такая работа обычно представляется скучной и нудной, к тому же, требует умения грамотно формулировать и доступно доносить материал. Специалисты ТехРайтКонсалт обладают большим опытом в обеих областях, что позволяет нам создавать документы по доступной цене и точно в срок!
Возможно, вас также заинтересует:
– разработка руководства администратора;
– создание руководства пользователя;
– разработка руководства оператора.
Руководство разработчика
Содержимое раздела не русифицировано, для переходя к оригинальному описанию нажмите здесь.
Желающие внести свой вклад в создании русскоязычной документации могут ознакомиться с деталями в этом разделе.
Обсудить документацию можно в русскоязычном разделе форума.