Лекция 3. Документация и управление знаниями
Система управления знаниями, модель SECI, где искать, как создавать, хранить и распространять знания, виды документации, инструменты, языки разметки, трекинг задач.
Третья лекция — про то, что остаётся от проекта, кроме кода: знания о том, как он устроен и почему сделан именно так. Разобраны системы управления знаниями и модель SECI, источники знаний и способы их хранения, виды документации, инструменты, языки разметки и то, что хранит карточка задачи в трекере. Всё это напрямую нужно для лабы «Документирование проекта».
Конспект собран по записям студента. Всё, что помечено «Дополнение», на лекции не звучало: это пояснения, примеры и контекст, чтобы списки из лекции было с чем связать.
1. Система управления знаниями
Определение 1. Система управления знаниями (Knowledge Management System, KMS) — набор процессов и инструментов для сбора, хранения, поиска и передачи знаний внутри организации или для личного пользования.
Дополнение. Это не только программа. Вики без договорённости о том, кто и когда её обновляет, через полгода превращается в кладбище устаревших страниц. Процессы — кто пишет, где искать, как проверять актуальность — такая же часть системы, как сам инструмент.
Знания делят на два вида, и вся модель из следующего раздела построена на этом делении:
| Вид | Что это | Пример |
|---|---|---|
| Явное (explicit) | записано и может быть передано текстом | README, схема архитектуры, регламент релиза |
| Неявное (tacit) | живёт в голове и в руках, словами передаётся плохо | чутьё, где искать баг; привычка проверять конфиг перед деплоем |
Если ключевые знания о системе есть только у одного человека, его уход или отпуск останавливает работу. Это называют bus factor — сколько людей должно «попасть под автобус», чтобы проект встал. Bus factor, равный единице, — повод срочно документировать. Вторая причина — онбординг: новичок с хорошей базой знаний начинает приносить пользу за недели, а не за месяцы.
2. Цикл знаний: модель SECI
Модель SECI описывает, как знание переходит между неявной и явной формой. Название — по первым буквам четырёх переходов.
2.1. Социализация
Из неявного в неявное. Опыт передаётся от человека к человеку через совместную работу, наблюдение, подражание и наставничество. Ничего не записывается: джун сидит рядом с сеньором и перенимает, как тот читает логи.
2.2. Экстернализация
Из неявного в явное. Мысли, идеи и интуитивные навыки превращаются в понятную форму — концепции, схемы, тексты, метафоры. Нужно сформулировать то, что «просто знаешь», — поэтому этот переход даётся труднее остальных.
2.3. Комбинация
Из явного в явное. Существующие явные знания объединяются и систематизируются в новые формы: базы данных, отчёты, программы, документы. Например, из десятка разрозненных заметок собирается одно руководство.
2.4. Интернализация
Из явного в неявное. Изученная теория и документы снова превращаются в личный опыт и навыки — «обучение через действие». Прочитать инструкцию по деплою — это ещё знание; задеплоить по ней пять раз — уже навык.
Модель предложили японские исследователи Икудзиро Нонака и Хиротака Такеути в 1995 году. Пример витка: тимлид показывает новичку, как разбирать падения в проде (социализация); новичок записывает шаги в вики (экстернализация); страницу объединяют с runbook'ами других сервисов в общее руководство по инцидентам (комбинация); следующий новичок разбирает по нему реальный инцидент и получает собственный опыт (интернализация). Дальше цикл повторяется уже с его знаниями.
3. Где искать знания
- Официальная документация — языка, библиотеки, внутренняя документация проекта. Первое место, куда стоит смотреть.
- Коммуникация — коллеги, чаты, созвоны. Часто быстрее всего, но ответ остаётся в голове спросившего, если его не записать.
- Код и его история — сам код, комментарии, сообщения коммитов, обсуждения в пулл-реквестах. Отсюда и требования к гигиене коммитов из первой лекции: хорошее сообщение коммита объясняет, почему сделано изменение.
- Задачи и баг-трекеры — история задачи хранит, зачем понадобилась функция, какие варианты обсуждали и почему отказались от остальных.
Список на лекции остался открытым: источников больше.
Дополнение. Ещё несколько мест, где ищут знания: логи и системы мониторинга (как система ведёт себя на самом деле), тесты (исполняемая спецификация: по ним видно, как код задуман работать), внешние источники — issues и обсуждения в репозиториях библиотек, Stack Overflow, доклады с конференций.
4. Как генерировать знания
- Мозговой штурм — команда накидывает идеи без критики, потом отбирает.
- Ретроспективы — регулярный разбор: что получилось, что нет, что меняем. В Scrum это часть ритуалов, см. вторую лекцию.
- Парное программирование — двое за одной задачей: один пишет, второй следит и думает на шаг вперёд. Знание о коде сразу есть у двоих.
- Технические доклады и внутренние митапы — человек готовит доклад и сам заодно упорядочивает свои знания.
- Сообщества практик — группы людей одной специализации из разных команд (все фронтендеры компании, все тестировщики), которые обмениваются опытом.
- Ротация — перевод людей между командами и проектами: знание расходится по компании вместе с людьми.
Этот список тоже открытый.
Разбор инцидентов (postmortem) — после сбоя пишут, что случилось, почему и что сделать, чтобы не повторилось, без поиска виноватых. Архитектурные решения (ADR) — короткие записи «что решили, какие были варианты, почему выбрали этот»: через год это единственный способ понять, почему система устроена так.
5. Как хранить знания
- Вики
- Файлы
- Git
- Чат
- Бумага
Дополнение. У каждого способа своя цена:
| Где | Плюсы | Минусы |
|---|---|---|
| Вики | поиск, ссылки между страницами, правит кто угодно | без владельца быстро устаревает |
| Файлы (документы на диске) | привычно, легко начать | версии плодятся, «финал-финал.docx», плохо ищется |
| Git (документация рядом с кодом) | версии и ревью как у кода, меняется в одном коммите с кодом | неудобно для нетехнических людей |
| Чат | быстро, всё под рукой | знание тонет в ленте, найти через месяц почти невозможно |
| Бумага | не зависит от техники | не ищется, не копируется, теряется |
Подход «документация как код» (docs as code) — Markdown-файлы в каталоге docs/ того же репозитория — ровно то, что требуется во второй лабе.
6. Как распространять знания
Пример с лекции — экспертные сообщества: люди одной специализации делятся опытом друг с другом и с остальными командами.
Дополнение. Другие каналы, которые встречаются в компаниях: онбординг-программы для новичков, наставничество, внутренние рассылки и дайджесты изменений, записи докладов, ревью кода (ревьюер узнаёт о новом коде, автор — о приёмах ревьюера).
7. Виды документации
| Вид | Для кого | Что внутри |
|---|---|---|
| Пользовательская (USER) | пользователи продукта | что и как работает: руководство, справка, FAQ |
| Администраторская (ADMIN) | те, кто разворачивает и сопровождает систему | зависимости, архитектура проекта, установка и настройка |
| Разработческая (DEV) | разработчики, в том числе на стороне заказчика | нужна, если заказчик будет сам дорабатывать продукт: устройство кода, API, сборка |
| Государственная | госзаказчик | документы по ГОСТу |
Один и тот же продукт может требовать всех четырёх видов сразу: пользователю — справка, админу — инструкция по установке, команде заказчика — описание кода, а для госзаказа — комплект по ГОСТу.
Для программ — серия ГОСТ 19 (ЕСПД, единая система программной документации): описание программы, руководство оператора, программа и методика испытаний. Для автоматизированных систем — серия ГОСТ 34; например, техническое задание на систему пишут по ГОСТ 34.602-2020. Формулировки и состав разделов там жёстко заданы — свободный README их не заменяет.
8. Инструменты
| Инструмент | Что это |
|---|---|
| Confluence | корпоративная вики от Atlassian, часто в паре с трекером Jira |
| MadCap Flare | инструмент технических писателей: из одного источника собирает справку, PDF и сайт документации |
| DokuWiki | бесплатная вики с открытым кодом; страницы хранит в текстовых файлах, без базы данных |
| Yonote | российская база знаний и вики для команд |
Дополнение. В 2022 году Atlassian перестал продавать продукты в России, поэтому многие компании переехали с Confluence на отечественные аналоги или на вики, развёрнутые у себя. Для небольшого проекта часто хватает Markdown в репозитории и GitHub Pages или встроенной вики GitHub.
9. Языки разметки текста
Определение 2. Язык разметки — способ дополнить обычный текст служебными пометками о его структуре и оформлении: где заголовок, где список, где ссылка.
Стандартные языки разметки, которые упоминались на лекции:
- HTML — язык веб-страниц.
- XML / XHTML — XML для любых структурированных данных, XHTML — HTML по строгим правилам XML.
- Markdown — лёгкая разметка, которую удобно читать даже без отрисовки. Внутри Markdown-документов часто встречаются:
- PlantUML — UML-диаграммы, описанные текстом;
- Mermaid — диаграммы текстом, GitHub рисует их прямо в README.
- AsciiDoc — разметка для больших технических документов и книг.
- MediaWiki — разметка Википедии и других вики на движке MediaWiki.
- LaTeX — система вёрстки научных текстов и формул.
Дополнение. Один и тот же фрагмент — заголовок, жирное слово и ссылка — в разных разметках.
# Установка
Нужен **Python 3.12**. Подробнее — [в документации](https://docs.python.org/3/).= Установка
Нужен *Python 3.12*. Подробнее — https://docs.python.org/3/[в документации].= Установка =
Нужен '''Python 3.12'''. Подробнее — [https://docs.python.org/3/ в документации].<h1>Установка</h1>
<p>Нужен <b>Python 3.12</b>. Подробнее — <a href="https://docs.python.org/3/">в документации</a>.</p>\section{Установка}
Нужен \textbf{Python 3.12}. Подробнее — \href{https://docs.python.org/3/}{в документации}.PlantUML и Mermaid описывают диаграмму текстом, а картинку строит программа. Так схема живёт в репозитории, меняется в том же коммите, что и код, и в истории видно, что именно поменялось. Пример на Mermaid — путь задачи по Kanban-доске:
flowchart LR
A[Бэклог] --> B[В работе]
B --> C[Ревью]
C -->|замечания| B
C --> D[Готово]10. Системы трекинга задач
Трекер — тоже хранилище знаний: в нём видно, кто, что и когда делал. На примере Kanban карточка задачи хранит:
- ФИО ответственного;
- дедлайн;
- потраченное на задачу время;
- текст задачи.
Дополнение. В реальных трекерах (Jira, YouTrack, GitHub Issues и Projects) к этому добавляются статус (колонка доски), приоритет, метки, связи с другими задачами и ссылки на коммиты и пулл-реквесты. Если в сообщении коммита или описании пулл-реквеста на GitHub написать Closes #12, задача 12 закроется сама после слияния — и в ней останется ссылка на код, который её решил.
Частые ошибки
- Считать KMS программой. Это процессы плюс инструменты; вики без владельцев и правил обновления устаревает.
- Путать направления в SECI. Экстернализация — из неявного в явное (записать), интернализация — из явного в неявное (научиться делать по записанному).
- Считать социализацию «болтовнёй». Это полноценный канал передачи неявного знания: наставничество и парная работа.
- Хранить решения в чате. Через месяц их не найти; итог обсуждения нужно перенести в вики, задачу или репозиторий.
- Писать одну документацию на всех. Пользователю, администратору и разработчику нужны разные документы.
- Считать README документацией по ГОСТу. Для госзаказчика состав и форма документов жёстко заданы стандартом.
- Путать Mermaid и PlantUML с самостоятельными языками разметки текста. Это языки описания диаграмм, которые встраивают в Markdown и другие документы.
- Оставлять карточку задачи без ответственного и дедлайна. Тогда по доске нельзя понять, кто чем занят и что горит.
Мини-тренажёр
- Сформулируйте, что такое система управления знаниями, и объясните, почему это не просто «купить Confluence».
- Сеньор показывает джуну, как он отлаживает утечку памяти, а джун повторяет за ним. Какой это переход SECI?
- Вы прочитали внутренний гайд по код-ревью и за месяц ревью он стал для вас привычкой. Какой переход?
- Из пяти разрозненных статей вики собрали одно руководство для новичков. Какой переход?
- Почему экстернализацию считают самым трудным переходом?
- Назовите четыре источника знаний из лекции.
- Чем ротация помогает распространять знания?
- Заказчик собирается сам дорабатывать продукт после сдачи. Какой вид документации ему нужен?
- Где сравнительно надёжнее хранить описание архитектуры проекта — в чате или в Git — и почему?
- Перечислите четыре поля Kanban-карточки из лекции.
- Чем Mermaid удобнее картинки, нарисованной в графическом редакторе?
- Какой язык разметки используют для формул и научных статей?
Ответы
- Набор процессов и инструментов для сбора, хранения, поиска и передачи знаний. Инструмент без процессов (кто пишет, кто обновляет, где искать) не работает: страницы устаревают и им перестают верить.
- Социализация: неявное знание передаётся напрямую, через наблюдение и подражание.
- Интернализация: явное знание (гайд) превратилось в личный навык.
- Комбинация: из явного в явное, существующие знания систематизированы в новую форму.
- Нужно сформулировать то, что человек знает интуитивно и обычно не проговаривает.
- Официальная документация, коммуникация, код и его история, задачи и баг-трекеры.
- Человек приносит знания из прошлой команды в новую и уносит новые обратно — знание расходится вместе с людьми.
- Разработческая (DEV).
- В Git: описание версионируется, проходит ревью, меняется вместе с кодом и находится. В чате оно утонет в ленте.
- ФИО ответственного, дедлайн, потраченное время, текст задачи.
- Диаграмма описана текстом: хранится в репозитории, меняется в одном коммите с кодом, видна разница между версиями; GitHub рисует её прямо в README.
- LaTeX.
Шпаргалка
| Понятие | Суть |
|---|---|
| KMS | процессы и инструменты для сбора, хранения, поиска и передачи знаний |
| Явное знание | записано, передаётся текстом |
| Неявное знание | опыт и навыки в голове, словами передаётся плохо |
| SECI | цикл из четырёх переходов между неявным и явным знанием |
| Социализация | неявное → неявное: наставничество, совместная работа |
| Экстернализация | неявное → явное: схемы, тексты, метафоры |
| Комбинация | явное → явное: систематизация в базы, отчёты, документы |
| Интернализация | явное → неявное: обучение через действие |
| Где искать | документация, коммуникация, код и история, трекеры |
| Как генерировать | мозговой штурм, ретро, парное программирование, доклады, сообщества практик, ротация |
| Где хранить | вики, файлы, Git, чат, бумага |
| Как распространять | экспертные сообщества |
| USER | как пользоваться продуктом |
| ADMIN | зависимости, архитектура, установка |
| DEV | для доработки продукта силами заказчика |
| Госдокументация | по ГОСТу |
| Инструменты | Confluence, MadCap Flare, DokuWiki, Yonote |
| Языки разметки | HTML, XML/XHTML, Markdown (с PlantUML и Mermaid), AsciiDoc, MediaWiki, LaTeX |
| Kanban-карточка | ответственный, дедлайн, потраченное время, текст задачи |
Актуальная версия: https://m3105.ru/notes/instrumentalnye-sredstva-razrabotki-po/lektsiya-3-dokumentatsiya-i-upravlenie-znaniyami
Проверь себя
20 вопросов по материалу лекции. Результаты хранятся только в вашем браузере.
20 вопросов про системы управления знаниями, модель SECI, источники и хранение знаний, виды документации, языки разметки и трекинг задач.
- 20 вопросов
- Результат виден сразу после каждого ответа
- Порядок вопросов случайный

Комментарии0
Пока никто ничего не написал.
Войдите, чтобы оставить комментарий