Представьте ситуацию: вы запустили проект разработки сайта, согласовали бюджет, подписали контракт: и вот через три месяца вместо функционирующего интернет-магазина получаете половину обещанного функционала, непредвиденные расходы и разочарование. Это классический «кот в мешке» в IT-индустрии, когда ожидание сталкивается с реальностью разработки так болезненно, что компании теряют от 30 до 50% дополнительного бюджета на доработки и переделки.
Что такое техническое задание и зачем оно нужно

Техническое задание (ТЗ) — это не просто документ, это контракт между вашим видением проекта и реальностью его воплощения. Это детальное описание того, что нужно сделать, как это должно работать, какие технологии использовать и по каким критериям оценивать результат.
Без ТЗ разработчик работает «на усмотрение разработчика» — фраза, которая должна вас пугать. Когда требования размыты, каждый член команды интерпретирует их по-своему. Дизайнер представляет одно, фронтенд-разработчик реализует другое, бэкенд-разработчик решает, что ему удобнее, а вы в итоге получаете что-то третье. Управление рисками IT начинается именно с того, что вы фиксируете требования в письменном виде.
Разница между ТЗ и ФЗ в разработке
Часто предприниматели путают техническое задание с функциональным. Это разные документы, и каждый решает свою задачу.
| Аспект | Техническое задание (ТЗ) | Функциональное задание (ФЗ) |
|---|---|---|
| Фокус | Как это будет сделано (технические условия) | Что должно быть сделано (функционал) |
| Аудитория | Разработчики, тестировщики, DevOps | Продакт-менеджеры, бизнес-аналитики, клиенты |
| Содержание | Архитектура, базы данных (PostgreSQL), API эндпоинты, стек технологий | Пользовательские сценарии, бизнес-процессы, требования к UX |
| Пример | «REST API эндпоинты должны возвращать JSON с кодом 200 при успехе» | «Пользователь должен иметь возможность добавить товар в корзину одним кликом» |
Типичные ошибки в ТЗ на сайт

Я видел сотни ТЗ, и в большинстве из них есть одни и те же ошибки. Вот самые опасные:
- Размытые требования к дизайну. Вместо «красивый сайт» напишите: «Сайт должен соответствовать гайдлайну бренда (цвета: #1a1a1a, #ffffff), использовать шрифт Inter, иметь адаптивный дизайн для мобильных устройств с точкой разрыва 768px». Бриф на дизайн без конкретики, это приглашение к переделкам.
- Отсутствие описания интеграций. Если сайт должен интегрироваться с crm, платежной системой или сервисом доставки, это должно быть описано с указанием API документации, необходимых эндпоинтов и формата данных.
- Неопределенные сроки и мильстоуны. «Сделать за месяц» — это не план. Промежуточный контроль начинается с четких дат: «Макеты до 15 января, фронтенд до 1 февраля, интеграция до 15 февраля».
- Отсутствие требований к тестированию. Какие unit тесты обязательны? Какой процент покрытия кода? Нужны ли integration тесты? Без этого разработчик может пропустить критические баги.
- Неясные требования к производительности. «Быстрый сайт», это не метрика. Напишите: «Время загрузки главной страницы не более 2 секунд на 4G, Core Web Vitals в зеленой зоне».
- Отсутствие описания обработки ошибок. Что происходит, если API недоступен? Как система обрабатывает некорректные данные?
- Неопределенность с поддержкой и масштабированием. Сколько одновременных пользователей должен выдержать сайт? Какие облачные решения использовать?
Чек-лист для проверки ТЗ перед отправкой разработчику:
- Все требования описаны конкретно, без слов «красиво», «удобно», «хорошо»
- Указаны все интеграции с внешними сервисами и их API эндпоинты
- Определены сроки и промежуточные мильстоуны
- Описаны требования к тестированию (unit тесты, integration тесты)
- Указаны метрики производительности и масштабируемости
- Определены процессы обработки ошибок и исключений
- Описаны требования к безопасности и защите данных
Как составить ТЗ разработчику сайта

Когда я говорю о том, как составить ТЗ чтобы избежать кота в мешке, я имею в виду структурированный процесс. Вот пошаговый алгоритм, который мы используем в BUSINESS SITE.
Ключевые разделы ТЗ чтобы избежать кота в мешке
-
Цели и контекст проекта
Начните с того, зачем вообще нужен этот проект. Не «нам нужен сайт», а «нам нужен сайт, потому что мы теряем 30% потенциальных клиентов, которые не находят нас в интернете». Опишите целевую аудиторию, текущие боли пользователей и то, как проект их решит.
Пример из практики: для фармацевтической компании мы описали не просто «создать каталог товаров», а «создать каталог, который позволит врачам быстро найти нужный препарат по названию, коду, показаниям и взаимодействиям с другими лекарствами». Это определило всю архитектуру поиска и фильтрации. -
Функциональные требования
Опишите каждую функцию отдельно. Используйте формат «Пользователь должен иметь возможность…»:
- Пользователь должен иметь возможность зарегистрироваться через email или социальные сети
- Пользователь должен иметь возможность добавить товар в корзину и оформить заказ за 3 клика
- Администратор должен иметь возможность управлять каталогом товаров, загружать изображения и устанавливать цены
-
Технические требования
Здесь описываются технические условия реализации:
- Стек технологий (например, React для фронтенда, Node.js для бэкенда, PostgreSQL база данных для хранения данных)
- Архитектура (микросервисы, монолит, serverless)
- REST API эндпоинты с описанием методов (GET, POST, PUT, DELETE) и формата данных
- Требования к безопасности (https, защита от CSRF, валидация входных данных)
- Требования к производительности (время отклика API не более 200ms)
-
Требования к дизайну и UX
Приложите макеты или ссылку на Figma. Опишите:
- Цветовую палитру и типографику
- Адаптивность (мобильные, планшеты, десктопы)
- Интерактивные элементы (кнопки, формы, модальные окна)
- Микровзаимодействия (анимации, feedback при клике)
-
Интеграции
Если сайт должен интегрироваться с внешними сервисами, опишите каждую:
- Платежная система (Stripe, 2Checkout и т.д.): какие методы оплаты, какая обработка ошибок
- CRM (для хранения данных клиентов): какие данные синхронизировать
- email-маркетинг (Mailchimp, ActiveCampaign): какие события триггерят отправку писем
- Облачное хранилище (S3): для каких файлов, какие ограничения по размеру
Для каждой интеграции укажите документацию API.
-
Требования к тестированию
Опишите пирамиду тестирования:
- Unit тесты: минимум 70% покрытия критического кода
- Integration тесты: все API эндпоинты должны быть протестированы
- E2E тесты: основные пользовательские сценарии (регистрация, покупка, возврат)
Укажите, какие инструменты использовать (Jest для unit тестов, Cypress для E2E).
-
Сроки и мильстоуны
Разбейте проект на этапы с четкими дедлайнами:
- Неделя 1-2: Дизайн и архитектура (утверждение макетов и ТЗ)
- Неделя 3-4: Фронтенд основных страниц
- Неделя 5-6: Бэкенд и интеграции
- Неделя 7: Тестирование и доработки
- Неделя 8: Деплой и запуск
Промежуточный контроль проекта должен проводиться в конце каждого этапа.
Пирамида тестирования и автотесты в ТЗ
Основание (Unit тесты): Это тесты отдельных функций и компонентов. Они быстрые, дешевые и должны составлять 70% всех тестов. Пример: тест функции расчета скидки, которая проверяет, что скидка 10% на сумму 1000 гривен дает результат 900 гривен.
- «Все критические функции должны иметь unit тесты с минимум 80% покрытием»
- «Все API эндпоинты должны быть покрыты integration тестами»
- «Основные пользовательские сценарии (регистрация, покупка, возврат) должны быть покрыты E2E тестами»
- «Автоматические тесты должны запускаться при каждом коммите в репозиторий»
Это гарантирует, что разработчик не просто напишет код, но и проверит его качество.
Agile и Scrum в разработке приложения
Если вы работаете с аутстаффингом разработчиков или аутсорсингом IT-проекта, вероятно, они предложат вам работать по Agile методологии. Это хорошо, но ТЗ все равно нужно.
«Как врач, я хочу иметь возможность фильтровать препараты по показаниям, чтобы быстро найти нужное лекарство для пациента».
Критерии приемки (acceptance criteria):
- Фильтр должен отображать список показаний
- Пользователь должен выбрать одно или несколько показаний
- Результаты должны обновляться в реальном времени
- Фильтр должен работать на мобильных устройствах
Промежуточный контроль в Scrum происходит в конце каждого спринта на встречах review и retrospective. Это позволяет вам видеть прогресс, давать feedback и корректировать требования, если нужно.
Red flags подрядчика: как выбрать аутстаффинг разработчиков

Даже если вы напишете идеальное ТЗ, неправильный выбор подрядчика может все испортить. Red flags в аутстаффинге — это признаки того, что разработчик или компания ненадежны. Вот топ-10 red flags, на которые нужно обратить внимание.
- Нечеткие ответы на вопросы. Если вы спросили о том, как разработчик будет решать конкретную техническую задачу, а в ответ получили размытый текст, это плохой знак. Хороший разработчик объяснит свой подход, обсудит альтернативы и обоснует выбор.
- Отсутствие портфолио или примеров работ. «Все в резюме»: это не аргумент. Попросите ссылки на проекты, которые разработчик делал. Если он не может показать примеры, это красный флаг.
- Обещания, которые звучат слишком хорошо. «Сделаем за неделю», «Гарантируем результат», «Это очень просто», все это признаки того, что разработчик не понимает сложность проекта или пытается вас обмануть.
- Отсутствие вопросов к вам. Если разработчик не задает вопросы о вашем проекте, целях, бюджете и сроках, это означает, что он не заинтересован в понимании ваших потребностей. Хороший подрядчик задает много вопросов.
- Неготовность обсуждать ТЗ. «Давайте начнем разработку, а ТЗ напишем по ходу», это путь к хаосу. Если разработчик не хочет потратить время на согласование требований, это плохой знак.
- Отсутствие процесса контроля качества. Как разработчик проверяет качество кода? Использует ли он code review, автоматические тесты, статический анализ? Если ответа нет, качество будет низким.
- Неготовность подписать контракт с четкими условиями. Если разработчик уклоняется от обсуждения сроков, стоимости, условий оплаты и ответственности, это очень плохой знак.
- Отсутствие коммуникации. Разработчик не отвечает на сообщения, пропускает встречи, не предоставляет обновления о прогрессе. Это признак ненадежности.
- Слишком низкая цена. Если цена в два раза ниже, чем у других разработчиков, это не удача, это красный флаг. Либо разработчик недооценил проект, либо он работает низкого качества.
- Отсутствие опыта в вашей сфере. Разработчик, который никогда не делал сайты для e-commerce, может не понимать специфику вашего проекта. Опыт в похожих проектах важен.
Скрининг разработчиков: тест и резюме
Если вы нашли потенциального разработчика, не спешите нанимать его. Проведите системный скрининг.
Шаг 1: Проверка резюме разработчика
Обратите внимание на:
- Опыт в похожих проектах (если вам нужен e-commerce, ищите опыт в разработке интернет-магазинов)
- Технологический стек (совпадает ли с вашими требованиями?)
- Длительность работы на каждой должности (частые смены работы: это красный флаг)
- Рекомендации и отзывы от предыдущих работодателей
Шаг 2: Техническое интервью
Задайте вопросы, которые проверяют глубину знаний:
- «Расскажите о самом сложном проекте, который вы делали. Какие были вызовы и как вы их решили?»
- «Как вы подходите к оптимизации производительности? Какие инструменты используете?»
- «Расскажите о вашем опыте работы с REST API. Как вы проектируете эндпоинты?»
- «Как вы пишете unit тесты? Какой процент покрытия кода вы считаете приемлемым?»
Хороший разработчик даст развернутые ответы с примерами из своего опыта.
Дайте разработчику небольшую тестовую задачу (2-4 часа работы), которая отражает реальные требования вашего проекта. Пример:
«Создайте REST API эндпоинт, который возвращает список товаров с фильтрацией по категории и цене. Напишите unit тесты для этого эндпоинта. Используйте PostgreSQL базу данных.»
Оцените:
- Качество кода (читаемость, структура, следование best practices)
- Наличие тестов и их качество
- Документация (есть ли README, комментарии в коде)
- Время выполнения (уложился ли в срок)
Шаг 4: Проверка soft skills
Мягкие навыки часто важнее технических. Проверьте:
- Коммуникация: может ли разработчик четко объяснить свои решения?
- Обязательность: выполнил ли он тестовую задачу в срок и в полном объеме?
- Готовность к сотрудничеству: задает ли вопросы, если что-то непонятно?
- Проактивность: предлагает ли улучшения или просто выполняет требования?
Soft skills программиста и обязательность
Я часто вижу, как компании нанимают разработчика с идеальным резюме, но с ужасными soft skills. Результат: разработчик не может работать в команде, не слушает feedback, не коммуницирует с клиентом.
Коммуникация: Разработчик должен уметь объяснить сложные технические вещи простым языком. Если вы не понимаете, что он говорит, это проблема.
Готовность к feedback: Хороший разработчик не защищается, когда вы критикуете его код. Он слушает, понимает, почему это не работает, и исправляет.
Проактивность: Если разработчик видит проблему, он должен предложить решение, а не просто ждать, пока вы ему скажете.
Как проверить soft skills на тестовой задаче:
- Попросите разработчика объяснить свой код. Может ли он это сделать четко?
- Дайте feedback на его решение. Как он реагирует? Защищается или слушает?
- Задайте вопросы. Задает ли он встречные вопросы, если что-то непонятно?
- Проверьте коммуникацию. Отвечает ли на сообщения вовремя? Предоставляет ли обновления о прогрессе?
Контроль ТЗ и риски в IT-аутстаффинге

Даже если вы выбрали идеального разработчика и написали идеальное ТЗ, проект может пойти не так, если вы не будете контролировать его ход. Промежуточный контроль проекта — это система мер, которая гарантирует, что проект движется в правильном направлении.
Мильстоуны и дедлайны: Проект разбивается на этапы, каждый с четким дедлайном. В конце каждого этапа проводится review: что было сделано, что осталось, есть ли проблемы.
Паспорт качества: Это документ, который описывает критерии качества для каждого компонента проекта. Пример: «Фронтенд должен иметь 80% покрытие unit тестами, все компоненты должны быть задокументированы в Storybook, время загрузки главной страницы не более 2 секунд».
Еженедельные синхронизации: Каждый понедельник (или в другой удобный день) проводится встреча, где разработчик рассказывает, что было сделано на прошлой неделе, что планируется на эту неделю, и какие есть проблемы.
Автоматические тесты и CI/CD: Каждый коммит в репозиторий должен запускать автоматические тесты. Если тесты не пройдены, код не должен попадать в production. Это предотвращает попадание багов в боевую систему.
Code review: Перед тем как код попадает в основную ветку, его должен проверить другой разработчик. Это гарантирует качество и распределение знаний в команде.











