В статье рассматривается что, зачем и как документировать в заказной и коммерческой разработке, чтобы спасти проект и нервы.

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

Давайте разберемся, как сделать ее союзником, а не врагом.

 

Часть 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)


  1. discoverer-official
    30.01.2026 21:47

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


  1. 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 и в список требований.


    1. Svetlana_Purik Автор
      30.01.2026 21:47

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

      С чего можно начать на практике:

      1. Простой локальный вариант. Используйте бесплатный редактор Protégé, чтобы описать ваши ключевые функции и их зависимости. Затем скриптом на Python (с библиотекой OWLready2) можно спрашивать эту онтологию и вкладывать ответы в промты для ИИ. Это даст возможность быстро проверить концепцию.

      2. Более серьезный подход. Разверните бесплатную версию GraphDB, загрузите туда онтологию и используйте её SPARQL-эндпоинт как внешний источник контекста для ИИ. Это уже промышленное решение.

      Главные критерии выбора инструмента:

      - Наличие удобного API (REST или SPARQL), чтобы его мог опрашивать ваш ИИ-пайплайн.

      - Возможность визуализации связей (графов) - это критично для валидации модели людьми.

      - Поддержка логического вывода (reasoning), который может автоматически находить противоречия или скрытые зависимости.

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

      Стоит начать с малого - смоделировать один самый проблемный сервис.


      1. itGuevara
        30.01.2026 21:47

        К твоему пункту 1 - я примерно так и делаю, вставляя в промты ссылку на файл и указанием: Используй при разработке кода. Там ссылки на две онтологии.

        Но видимо такого недостаточно. Хорошо бы какой то итеративный процесс, когда он запрашивает варианты реализации, а ты по ходу его кодирования подтверждаешь какой - либо вариант. Также даешь список функций в каждом модуле как "неприкасаемые".


  1. DMS_13
    30.01.2026 21:47

    А вы о подходе documentation first знаете?

    А о командах, где есть системные аналитики( не бизнес аналитики)?

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


    1. Svetlana_Purik Автор
      30.01.2026 21:47

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