Привет, я — Таня Кириллова, технический писатель команды развития безопасности контейнеров в Cloud.ru.

На конференции Techwriters Days 2 Семён Факторович, основатель и руководитель компании documentat.io, в своем докладе Техписатель-2025 предложил ввести специализации для профессии «Технический писатель». В качестве одной из таких он выделил направление Cloud-техписатель. 

Чем Cloud-техписатель отличается от обычного технического писателя? Тем, что извлекает информацию из голов разработчиков и самих сервисов, адаптирует собранную информацию для пользователей, разрабатывает практические сценарии совместно с девопсами, работает с документацией, как с кодом, документирует API, пишет Release Notes… и все это для облачных сервисов.

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

Особенности документирования облачных сервисов

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

  1. Сложность сервисов. Облачная инфраструктура Cloud.ru состоит из более 100 сервисов. Наши технические писатели чаще всего работают с документаций нескольких сервисов одновременно. Каждый сервис — самостоятельный сложный IT-продукт, предназначенный для специалистов с определенной технической экспертизой. Чтобы создавать документацию, соответствующую потребностям и уровню знаний целевой аудитории, нашим техническим писателям приходится хотя бы базово учиться работать со своими сервисами, а это не так просто.

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

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

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

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

Наш путь разработки документации

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

Путь «приручения дракона»
Путь «приручения дракона»

На этом пути есть три основные остановки:

  1. Собираем все возможные данные о том, что нужно задокументировать. 

  2. Разрабатываем план и пишем сам документ.

  3. Смотрим на все свежим взглядом и выпускаем в свет.

Посмотрим на каждый этап более подробно.

Собираем информацию: вызовы и решения

Пожалуй, один из самых сложных этапов в разработке документации — это сбор информации. Есть два основных подхода: 

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

  • Использовать коммуникации, то есть задавать вопросы, получать ответы и на основе полученной информации разрабатывать документацию. 

Однако каждый из вариантов имеет свои трудности.

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

Чтобы справиться с этими двумя проблемами, мы пустили в ход несколько приемов.

Изучаем теорию 

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

Но в каком объеме техническому писателю изучать теорию? И нужно ли знать все досконально?

Например, Сара Меддокс, технический писатель из Google, в разных постах своего блога делится, как техническому писателю изучать в том числе и облачные сервисы. 

Вот примерный алгоритм:

  1. Получить общее представление о сервисе: изучить основные термины и базовые концепции. 

  2. Сформулировать вопросы в процессе изучения.

  3. Изучить существующую документацию или аналогичные решения и их документацию. 

  4. Попробовать выполнить самые простые сценарии на тестовых стендах.

  5. Встретиться с экспертами и задать сформулированные вопросы. 

  6. Поделиться своими знаниями, например, с коллегами, чтобы закрепить понимание.

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

Проводим собственное расследование перед интервью с экспертом

Чтобы понимать немного о фиче, работу с которой нужно задокументировать, перед встречей с экспертом мы:

  1. Изучаем артефакты, которые есть во внутренней базе знаний:

    • Use Cases от аналитиков.

    • Architecture Decision Records (ADR) от архитекторов.

    • Request For Comments (RFC) от разработчиков.

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

  3. Обязательно продумываем вопросы к эксперту.

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

План подготовки к встрече с экспертом
План подготовки к встрече с экспертом

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

Самостоятельно экспериментируем

Для этого освоили работу с некоторыми инструментами:

  1. Изучили, как работать с API в Postman и с помощью curl.

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

  2. Освоили работу в консоли разработчика в браузере. Это помогает нам, например, «примерять» тексты в UI.

  3. Научились работать с командной строкой и освоили работу работу с инструментами своих сервисов. Например, для Evolution Managed Kubernetes — это kubectl, cloudlogin, k9s.
    Умение работать с этими инструментами помогает нам «‎щупать» фичи без помощи экспертов или хотя бы понимать, что выполняет эксперт, когда показывает работу какой-то фичи.

Разрабатываем контент: проблемы и решения

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

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

Типизация информации

Справиться с объемом и поддержать консистентность нам помогла типизация информации. Этот подход основан на методиках DITA и Diátaxis. Контент делится на четко определенные категории: концепции, инструкции, справочники и сценарии. 

В основе документации Cloud.ru заложены принципы типизации. Мы также адаптировали типизацию под особенности своих сервисов. Например, добавили тип топиков «Решение проблем».

Какие принципы типизации информации мы используем в Cloud.ru 
Какие принципы типизации информации мы используем в Cloud.ru 

Что дает нам типизация информации? Контент единообразно структурирован и документация консистентна: технический писатель понимает куда разместить контент. А пользователи понимают принцип структурирования информации в нашей документации  от сервиса к сервису и знают, куда идти, например, если им нужна какая-то инструкция.

Шаблоны

Чтобы ускорить разработку документации, используем шаблоны. Как для структуры всего документа, так и для определенных типов документов.

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

Шаблоны можно разработать самим, а можно пользоваться готовыми. Есть целые библиотеки таких шаблонов.

Генерируем документацию из кода

Чтобы ускорить разработку и публикацию документации, используем генерацию из кода. Например, для Evolution Managed Kubernetes из кода мы генерируем спецификацию для API и справочника Terraform.

В документации Cloud.ru для представления справочника API мы используем инструмент Redoc. Redoc позволяет генерировать документацию на основе спецификации в формате OpenAPI. То есть достаточно одного правильно оформленного json- или yaml-файла, чтобы быстро опубликовать справочник в документации. Такой справочник легко поддерживать, заменяя спецификацию на актуальную в репозитории с документацией.

Однако подготовка спецификации достаточно трудоемкий процесс, требующий серьезных временных затрат. Приведу пример: сейчас спецификация для справочника API сервиса Evolution Managed Kubernetes содержит более 3 000 строк, а спецификация для справочника API сервиса «Виртуальные машины» — более 14 000 строк. Собирать вручную такой справочник — дорого.

Поэтому мы на берегу договорились с командой генерировать спецификацию из кода. Наши разработчики описывают структуру данных будущего API и комментарии к сущностям в proto-файлах. Далее запускают генерацию спецификации. Задача технического писателя доработать комментарии разработчика к методам и свойствам в соответствии с нашим стайлгайдом, чтобы обеспечить понятность и доступность информации для конечных пользователей. Важно, что все комментарии правятся в proto-файлах. Иначе, если править саму спецификацию, то при последующих обновлениях все предыдущие изменения текста будут затерты.

Процесс в команде Evolution Managed Kubernetes обычно выглядит следующим образом: 

  1. Разработчик создает в системе контроля версий Merge Request (MR) с новыми proto-файлами и сгенерированной спецификацией. 

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

  3. После внесения изменений спецификация снова генерируется. 

  4. Финальный этап — это интеграция с порталом документации и последующая публикация обновленной версии справочника.

Разработка справочника API для документации Managed Kubernetes
Разработка справочника API для документации Managed Kubernetes

Что касается документации для Terraform, в Evolution Managed Kubernetes процесс несколько отличается. Документация хранится вместе с провайдером Terraform на GitHub. Совместно с разработчиком мы подготовили шаблон документа для каждого ресурса Evolution Managed Kubernetes.

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

Разработчик формулирует комментарии по своему усмотрению, после чего создается Merge Request (MR). Технический писатель автоматически подключается к MR для проверки текстов. После внесения правок документация снова генерируется. Технический писатель утверждает MR в части, касающейся документации.

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

Разработка справочника Terraform в Managed Kubernetes
Разработка справочника Terraform в Managed Kubernetes

Публикуем документацию

Следующий важный этап — это публикация документации.

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

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

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

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

Обновляем документацию: автоматизация

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

Как мы подошли к этому вопросу: 

  1. Настроили в системе управления задачами автоматическое создание задачи на обновление документации.

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

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

Вместо заключения

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

  1. Активно обучаемся. Сосредоточились на изучении теории и освоении инструментов работы с сервисами.

  2. Экспериментируем. Используем инструменты сервиса для самостоятельных проб.

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

  4. Используем генерацию документации. Генерируем справочники API и Terraform из кода. Это позволяет нам быстрее адаптировать изменения и поддерживать актуальность информации.

  5. Вовремя получаем сведения об обновлениях. Настроили систему управления задачами для автоматического создания задач на обновление документации. Регулярно участвуем в командных встречах и проводим аудит текущего состояния документации.

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

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

А как вы справляетесь трудностями разработки документации в своих продуктах? Буду рада почитать в комментариях.

Комментарии (0)