Как составить техническое задание на разработку ПО

Зачем вообще нужно техническое задание
Техническое задание (ТЗ) — это документ, который превращает идею заказчика в проверяемый набор требований к продукту. Без него стороны почти всегда понимают проект по-разному: заказчик держит в голове одну картину, подрядчик строит другую, а на демонстрации выясняется, что половина ожидаемого функционала «подразумевалась», но нигде не зафиксирована.
На рынке Узбекистана это особенно болезненно. Значительная часть заказов на разработку идёт от компаний, у которых нет своего IT-отдела: торговля, логистика, частные клиники, образовательные центры, финтех-стартапы. Они хорошо знают свой бизнес, но не умеют формулировать требования к софту. В результате договариваются «на словах», а потом спорят, входила ли интеграция с Payme и Click в первоначальную смету.
ТЗ решает три задачи сразу: фиксирует объём работ (а значит и бюджет), даёт критерии приёмки и защищает обе стороны юридически. Это приложение к договору, на которое можно ссылаться при разногласиях.
Что должно быть в структуре ТЗ
Хорошее ТЗ не обязано быть толстым. Оно должно быть полным и однозначным. Минимальный рабочий состав выглядит так:
- Цель и контекст проекта. Какую бизнес-задачу решаем, кто пользователи, что считается успехом. Без этого подрядчик не сможет предлагать разумные альтернативы.
- Роли и права доступа. Кто такие администратор, оператор, клиент, что каждому из них можно и нельзя.
- Функциональные требования. Описание экранов и сценариев: что происходит при нажатии, какие поля обязательны, какие проверки. Лучше всего — в формате пользовательских сценариев.
- Нефункциональные требования. Нагрузка, скорость отклика, безопасность, языки интерфейса (для Узбекистана почти всегда узбекский, русский, часто английский), требования к хостингу.
- Интеграции. Платёжные системы (Payme, Click, Uzum), SMS-шлюзы (Eskiz, Play Mobile), 1С, Soliq/ЭСФ, Telegram. Указать версии API и кто предоставляет доступы.
- Дизайн и брендбук. Есть ли готовые макеты, фирстиль, или это тоже часть работ.
- Этапы, сроки и критерии приёмки. Что считается готовым результатом каждого этапа.
Важный выбор: насколько детально описывать. Для фиксированной цены (fixed price) ТЗ должно быть максимально подробным — подрядчик закладывает в смету все риски неопределённости. Для работы по времени (time & material) достаточно описать видение и приоритеты, а детали уточнять по ходу спринтов. Выбор модели определяет глубину документа.
Кто пишет техническое задание
Распространённое заблуждение: «ТЗ должен написать программист». На практике ответственность делится. Бизнес-сторона отвечает за что и зачем, техническая сторона — за как.
Идеальный вариант: заказчик готовит бизнес-требования (цели, процессы, ограничения), а аналитик или проектный менеджер подрядчика превращает их в техническое задание с экранами, сценариями и интеграциями. Затем документ согласуется заказчиком до подписи.
Если у заказчика нет внутренней экспертизы, разумно заказать ТЗ как отдельную платную услугу — отдельным небольшим этапом до основной разработки. Это дешевле, чем переделывать готовый продукт, и даёт документ, с которым можно идти и к другим подрядчикам для сравнения цен.
Частая ошибка: заказчик просит «сделать как у конкурента» и присылает ссылку вместо требований. Чужое приложение — это результат, а не спецификация: вы не видите его логику ролей, обработку ошибок, граничные случаи. Скриншот экрана не объясняет, что происходит при пустом списке, при потере связи или при дубле платежа.
Частые ошибки в техзаданиях
За годы работы повторяются одни и те же проблемы:
- Размытые формулировки. «Удобный интерфейс», «быстрая работа», «современный дизайн» — это не требования, их нельзя проверить. Заменяйте на измеримое: «список из 1000 записей открывается до 2 секунд».
- Отсутствие негативных сценариев. Описан только идеальный путь, а что делать при ошибке оплаты, отмене заказа, дубликате — не сказано. Именно тут рождается большинство багов и доработок.
- Нет приоритетов. Когда всё «критично важно», бюджет и сроки взрываются. Разделяйте на обязательное (MVP) и желательное.
- Игнор локальных реалий. Забыли про многоязычность, про особенности местных платёжек, про ЭСФ и отчётность для Soliq. Это всплывает в конце и срывает сроки.
- ТЗ без версионирования. Требования меняются — это нормально. Но изменения должны фиксироваться письменно как дополнения, иначе спор о доплате неизбежен.
Как принимать результат по ТЗ
Приёмка — это не «посмотрел и вроде работает». Это сверка готового продукта с критериями из ТЗ. Чтобы она прошла спокойно, критерии приёмки нужно прописать заранее, ещё на этапе согласования документа.
Рабочий порядок приёмки:
- Подрядчик разворачивает версию на тестовом стенде с доступом для заказчика.
- Заказчик проходит по сценариям из ТЗ — по каждому пункту фиксирует «принято / замечание».
- Замечания делятся на баги (несоответствие ТЗ — исправляет подрядчик в рамках сметы) и новые хотелки (изменение требований — оформляется как доплата).
- После закрытия багов подписывается акт по этапу.
Замечание против новой функции. Если поведение противоречит тому, что написано в ТЗ — это баг, и его правят бесплатно. Если в ТЗ об этом ничего не было, а заказчик хочет добавить — это новая работа, и она оплачивается отдельно. Чёткое ТЗ делает эту границу очевидной и убирает конфликты.
Именно поэтому ТЗ выгодно обеим сторонам. Заказчик защищён от «не доделали», подрядчик — от бесконечных бесплатных правок под расширяющиеся ожидания.
Вывод
Техническое задание — это не бюрократия, а инструмент управления бюджетом, сроками и ожиданиями. Чем точнее зафиксированы требования, интеграции и критерии приёмки, тем меньше сюрпризов на финише. Хорошее ТЗ окупается тем, что не приходится переделывать готовый продукт. Если вы планируете разработку и хотите, чтобы требования были собраны грамотно и с учётом реалий рынка Узбекистана, команда OneDev поможет составить ТЗ и оценить проект — напишите нам, обсудим вашу задачу.
Сколько времени занимает написание ТЗ?
Можно ли начать разработку без ТЗ?
Кто должен платить за составление ТЗ?
Что делать, если требования меняются по ходу проекта?
Нужно ли описывать в ТЗ интеграции с Payme, Click, Eskiz?
Чем ТЗ отличается от технического проекта?
Нужна похожая система или хотите обсудить проект?
Опишите задачу — предложим архитектуру, технический подход и план работ. Часто для старта достаточно короткого звонка.
Обсудить проект