1 min read

Документация на проекте

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

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

Я его попросил следовать простым правилам:

1. Начни с малого. Задокументируй то, что понял и изобрази остаток системы, как черный ящик
2. Опубликуй и сделай презентацию
3. Убедись, что диаграмму легко обновить
4. Нацелься на то, что ты ее таки закончишь в обозримой перспективе

Только с диаграммами есть проблема: их невозможно обновлять. Это одна из причин, почему они устаревают. Даже если дать ссылку на Lucid Chart или другой инструмент, то всегда возникнут проблемы с доступом к инструменту, версиями, платными рабочими местами и тд.

Есть выход. Можно использовать инструменты, которые позволяют преобразовать текст в диаграмму. Например, https://d2lang.com/

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

Вот для примера диаграмма, как я пишу посты:

title: Как Дима пишет посты {
  near: top-center
  shape: text
  style: {
    font-size: 29
    bold: true
    underline: true
  }
}
Случай на работе -> Notion
Ситуация на созвоне -> Notion

Notion -> Проработка информации -> Notion

direction: right
Notion -> ✨ Магия -> Пост

Вот, что из этого генерирует библиотека:

Альтернатив у d2 много, даже целый сайт есть, где можно удобно все потрогать: https://text-to-diagram.com/. В комментариях в телеграме люди делились своими инструментами. Используют, в основном plantUML и Mermaid. Кто-то использует draw.io.

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