В статье рассматривается что, зачем и как документировать в заказной и коммерческой разработке, чтобы спасти проект и нервы.
Разработчики видят в документации бюрократию, отвлекающую от настоящей работы. Заказчики и менеджеры — единственную гарантию, что получат то, что просили. Истина, как всегда, посередине. В условиях договорных обязательств (особенно с госзаказчиком) документация — это не бумажка, а юридически значимый артефакт, такой же важный, как и сам код.
Давайте разберемся, как сделать ее союзником, а не врагом.

Часть 1. Два мира, два подхода - госзаказ или внутренний заказ
1.1. Заказная разработка для госзаказчика (по 44-ФЗ, 223-ФЗ)
Жесткие стандарты (ГОСТы, отраслевые требования). Документация - первична. Часто оплачивается отдельно, ее объем и формальность прописаны в контракте.
Требуется гарантия соблюдения процедур, проверяемость, прозрачность расходов бюджета. Документы - основа для приемки и защиты от претензий Счетной палаты.
Фокус на верификации и валидации: «Мы построили именно то, что описано в ТЗ, и это работает так, как написано в руководстве».
1.2. Коммерческая (внутренняя) разработка
Agile-принципы, итеративность и скорость. Документация эволюционирует вместе с продуктом.
Здесь Техническое задание в классическом понимании (единый монолит) - большая редкость. Вместо него используется живой бэклог продукта.
Работа ведётся так:
1. Формируется общее видение (Vision). Документ на 1-2 страницы с целями, целевой аудиторией и ключевыми ценностями продукта.
2. Создаются эпики и пользовательские истории (User Stories). Это и есть те самые фрагменты ТЗ. Описывается конкретная функциональность с точки зрения пользователя: «Как [роль], я хочу [цель], чтобы [выгода]».
3. Уточнение перед разработкой. Непосредственно в начале спринта или перед взятием задачи в работу история детализируется. Документируется именно этот фрагмент: добавляются критерии приемки (Acceptance Criteria — AC), набрасываются макеты интерфейса (wireframes), описываются бизнес-правила. Этот уточнённый «пакет» и отдаётся в разработку.
4. Документирование «на ходу». Архитектурные решения (ADR — Architecture Decision Record), контракты API (OpenAPI) и ключевые конфигурации создаются параллельно с кодом.
Требуется быстрая доставка ценности, получение обратной связи и адаптация к изменениям рынка.
Фокус на рабочем продукте, а не на полном комплекте документов. Документация служит для передачи контекста внутри команды и фиксации решений.
В первом случае документация - щит и меч исполнителя при сдаче проекта. Во втором - карта и компас для движения по быстрому течению.
1.2.1. Риски фрагментарного подхода и как их mitigate
К чему приводят упрощения, когда «пишут фрагмент ТЗ и тут же отдают в разработку без системного подхода:
Системная несогласованность. Отдельные фичи, написанные разными людьми/командами в разное время, начинают конфликтовать между собой. Получается лоскутное одеяло вместо целостного продукта.
Технический долг в документации. Накопленные фрагменты теряют актуальность, не сводятся в общую картину. Новый разработчик не может понять систему в целом.
Утрата видения. Команда тонет в деталях текущих спринтов и забывает общую цель (Vision). Разработка превращается в набор хаотичных улучшений.
Проблемы с онбордингом. Невозможно передать проект другой команде или масштабироваться.
Как этого избежать, сохранив гибкость:
Храните фрагменты системно. Используйте Issue Tracker (Jira, Linear) как единый источник правды, связывая задачи с ветками кода и пул-реквестами.
Поддерживайте живые карты. Регулярно обновляйте высокоуровневую диаграмму архитектуры (C4 Context & Container level) и глоссарий терминов.
Пишите ADR. Это дешевый и эффективный способ зафиксировать почему система устроена так, а не иначе.
Проводите регулярные ретроспективы по документации. Включите в ретроспективу спринта вопрос: «Достаточно ли мы документируем решения, чтобы через 3 месяца их можно было понять?».
Часть 2. Базовый минимум - какие документы нельзя игнорировать
Фазы проекта |
Выходные документы |
Примечание |
Фаза проектирования и согласования |
Техническое задание (ТЗ) / ЧТЗ |
Король документов. Без него все остальное бессмысленно. Должно содержать нефункциональные требования (NFR): нагрузка, безопасность, отказоустойчивость. |
Технический проект (ТП) / Общее описание системы |
Часто пренебрегается. Должен отвечать на вопрос «КАК» мы будем делать то, что в ТЗ. Описание архитектуры (диаграммы компонентов, взаимодействия), выбор технологий, схемы баз данных. Это страховка от архитектурных просчетов. |
|
Фаза разработки и внедрения |
Протоколы информационного взаимодействия (API Specification) |
Описание интеграций. Must have для современных систем. Форматы: OpenAPI (Swagger), AsyncAPI. Это договор между командами, который позволяет работать параллельно. |
Руководство администратора |
Инструкция по развертыванию, обновлению, резервному копированию, мониторингу и устранению неисправностей. Критично для эксплуатации. |
|
Фаза сдачи и эксплуатации |
Руководство пользователя (РП) |
Часто делается для галочки. Хорошее РП снижает нагрузку на поддержку. Сегодня это часто не PDF, а интерактивная help-система или скринкасты. |
Акты испытаний (Тест-план / Протоколы тестирования) |
Доказательство, что система соответствует ТЗ. Особенно важно для госзаказа. Включает сценарии приемо-сдаточных испытаний. |
|
Паспорт системы / Пояснительная записка |
Краткий обзорный документ: что это, зачем, из чего состоит, как запустить. Нужен новым сотрудникам или аудиторам. |
|
Регламенты (procedures) |
На случай инцидентов, масштабирования, миграции данных. |
|
Документация на тестовые среды и данные. |
|
|
Схемы и описания процессов (BPMN, UML) |
Для сложных бизнес-процессов.
|
Часть 3. Инструментарий - от Markdown до Enterprise-решений
Инструмент |
Примечание |
Легковесные и гибкие (для коммерческой разработки) | |
Markdown + Git (GitLab, GitHub, Bitbucket) |
Документация как код. Версионность, code review, CI/CD для сборки. Идеально для API-документации, репозиториев знаний. |
Confluence, Notion |
Классика для вики-систем. Хороши для совместной работы, но могут превратиться в свалку. |
Miro, Draw.io / Diagrams.net |
Для схем и архитектуры. |
Классические и формальные (часто для госзаказа) | |
Текстовый документ (МойОфис, Р7-Офис, LibreOffice) + Облачное хранилище |
Для обмена ТЗ и утверждения. |
Enterprise-решения IBM DOORS, Enterprise Architect |
Для проектов с жестким контролем требований. |
Выбирайте инструменты, которые минимизируют двойную работу. Генерируйте API-доку из кода (Swagger), диаграммы храните в текстовом виде (PlantUML, Mermaid), чтобы они менялись вместе с кодом.
Часть 4. К чему приводят упрощения - коротко о последствиях
Сторона договора |
Последствия |
Исполнитель (разработчик) |
Технический долг, bus factor (зависимость от 1-2 человек), невозможность масштабировать команду, срывы сроков, финансовые санкции по договору, репутационные риски. |
Заказчик (бизнес) |
Привязка к конкретному исполнителю (вендор-лок), высокие затраты на поддержку и развитие, невозможность быстро адаптировать систему под меняющийся рынок, операционные ошибки из-за непонимания логики работы. |
Дружба возможна. Документация и код - не враги, а две стороны одной медали под названием успешный, поддерживаемый и отвечающий целям продукт.
Ключ - в разумном балансе:
Документируйте не все подряд, а то, что ценно и будет использоваться (архитектурные решения, контракты интеграций, процедуры развертывания).
Обновляйте документацию в рамках тех же процессов (например, merge/pull request), что и код.
Хорошая документация снижает риски, ускоряет onboarding и повышает стоимость вашей компании как актива (ведь ее не покинет вся экспертиза).
В условиях договора сильная документация — это не бюрократия, а ваша профессиональная страховка и конкурентное преимущество.
Комментарии (6)

itGuevara
30.01.2026 21:47Документация или код для Vibe Coding.
Хотел бы услышать советы как бороться с проблемой. Даешь детальные требования в issue для реализации функции. ИИ пишет, ты тестируешь, даешь замечания и т.п. 1,2,3, 4 и т.д.
Через неделю 55 -я функция также успешно реализуется, но вот 56-я затрагивает вторую и ИИ дорабатывает вторую функцию, но с потерей некоторых требований. Т.е. он переписывает, но берет только часть требований из issue, т.е. например, не помнит изначальные к функции 2 и последующие уточнения функции 2.
Может быть есть какие-то четкие правила, как избежать подобных проблем? Руками собирать требования сложно (сотни issue \ pull request) - видимо в каждый промт указывать ИИ: Веди актуальный список требований к каждой функции?
Однако часть требований, точнее особенностей реализации функции (часто во взаимосвязи нескольких функций), он сам добавляет при разработке, т.е. pull request к issue 2 также может содержать некоторые условия \ требования реализации функции 2, т.е. в промте к ИИ нужно как-то добавлять: Веди актуальный список требований к каждой функции с учетом их реализации, а особенности реализации функции добавляй в pull request и в список требований.

Svetlana_Purik Автор
30.01.2026 21:47Онтологическая система - один из самых адекватных способов решить проблему забывчивости ИИ. По сути, это создание единой машиночитаемой карты знаний о проекте, где явно прописаны все сущности (функции, модули) и их связи. ИИ может запрашивать у этой карты контекст перед написанием кода.
С чего можно начать на практике:
1. Простой локальный вариант. Используйте бесплатный редактор Protégé, чтобы описать ваши ключевые функции и их зависимости. Затем скриптом на Python (с библиотекой OWLready2) можно спрашивать эту онтологию и вкладывать ответы в промты для ИИ. Это даст возможность быстро проверить концепцию.
2. Более серьезный подход. Разверните бесплатную версию GraphDB, загрузите туда онтологию и используйте её SPARQL-эндпоинт как внешний источник контекста для ИИ. Это уже промышленное решение.
Главные критерии выбора инструмента:
- Наличие удобного API (REST или SPARQL), чтобы его мог опрашивать ваш ИИ-пайплайн.
- Возможность визуализации связей (графов) - это критично для валидации модели людьми.
- Поддержка логического вывода (reasoning), который может автоматически находить противоречия или скрытые зависимости.
Основная сложность - не в установке софта, а в экспертизе построения хорошей онтологии (как правильно выделять сущности и связи) и в интеграции этого шага в ваш процесс разработки, чтобы модель обновлялась автоматически.
Стоит начать с малого - смоделировать один самый проблемный сервис.

itGuevara
30.01.2026 21:47К твоему пункту 1 - я примерно так и делаю, вставляя в промты ссылку на файл и указанием: Используй при разработке кода. Там ссылки на две онтологии.
Но видимо такого недостаточно. Хорошо бы какой то итеративный процесс, когда он запрашивает варианты реализации, а ты по ходу его кодирования подтверждаешь какой - либо вариант. Также даешь список функций в каждом модуле как "неприкасаемые".

DMS_13
30.01.2026 21:47А вы о подходе documentation first знаете?
А о командах, где есть системные аналитики( не бизнес аналитики)?
Как бы у вас взяты очень наколеночные стартап процессы,, где всё решают разработчики по ходу дела... это очень кустарный подход. Все продвинутые команды от этого уходят в сторону правильных процессов...

Svetlana_Purik Автор
30.01.2026 21:47Для госзаказа и разработки критичных систем это базовый, обязательный и допустимый уровень зрелости с самого начала.
discoverer-official
Проблема обычно не в выборе между документацией и кодом, а в ожиданиях. Код действительно является источником истины для машины, но для людей договором он становится только тогда, когда есть зафиксированные правила игры. Когда документация описывает намерения и границы, а код реализацию, конфликт исчезает сам собой. Вражда начинается ровно в тот момент, когда документацию пытаются заменить кодом или наоборот, вместо того чтобы использовать их как разные уровни одного договора.