Как составить техническое задание на разработку, чтобы задачу поняли и сделали без переделок

Как составить техническое задание на разработку, чтобы задачу поняли и сделали без переделок

Без нормального ТЗ результат хз

Алиса Волкова
Алиса Волкова
Автор и редактор
career

К разработчику Ибрагиму пришёл заказчик — нужен сайт для турагентства. Требования такие: чтобы было красиво, современно, как у конкурентов, но круче, ну и быстро, конечно. 

Уже спустя неделю заказчик томно дышал в трубку Ибрагиму по ночам и спрашивал: «Почему ещё не готово?» Когда бедный разработчик показал макет, то выяснилось, что всё как-то некрасиво, несовременно, некруто и не похоже на конкурентов. Пришлось Ибрагиму переделывать. А потом ещё раз. И ещё. И ещё.

В итоге Ибрагим остался без денег, а заказчик без нормального сайта. А ведь можно было избежать боли, миллиарда созвонов и переделок — нужно было просто составить нормальное ТЗ.

Рассказываем, как сделать техническое задание, что включить в ТЗ и как заказчику и разработчику разговаривать на одном языке. 

Содержание

Что такое техническое задание на разработку и зачем оно нужно

Почему задачи возвращаются на переделку

Как составить техническое задание: структура простого ТЗ

Пример ТЗ на разработку

Что обсудить с разработчиком до начала работы

Как проверить, что ТЗ понятно и готово к работе

Что такое техническое задание на разработку и зачем оно нужно

Техническое задание на разработку — это документ или структурированное описание задачи, которое помогает заказчику и исполнителю одинаково понимать результат. И главное здесь не количество букв, а отсутствие двусмысленности.

Хорошее ТЗ говорит не «как красиво сделать?», а «что должно работать?»

Главная задача ТЗ — перевести бизнес-цели на язык конкретных функций, которые может сделать разработчик. Идите к исполнителю не с просьбой и хотелками, а с требованиями — понятными и конкретными. 

Пожелание: «Хочу удобный сайт». Максимально размытая просьба. Разработчик и заказчик понимают удобство по-разному.

Требование: «Пользователь должен оставить заявку за три шага, получить подтверждение, а менеджер — уведомление в CRM».

Почему задачи возвращаются на переделку

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

Разбираем, почему без нормального ТЗ —  результат так себе. 

Фразы, из-за которых разработчик почти наверняка поймёт вас не так

Одна неточная формулировка —  и привет, двусмысленность, бесконечные переделки, правки и драки. Собрали топ стоп-фраз при общении с разработчиком. 

💬«Сделайте красиво»

У каждого своё понимание красоты. Для дизайнера это минимализм,  для программиста — аккуратный код. А для вас — может, вообще вырвиглазные цвета.

Фразы, из-за которых разработчик почти наверняка поймёт вас не так

💬«Сделайте как у конкурентов»

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

💬«Нужно срочно»

Срочно — это через неделю, месяц, год? Если ТЗ без конкретной даты, то и результат будет тогда, не знаю, когда. А когда нужно было вообще вчера, разработчику придётся делать всё хоть как, лишь бы успеть до дедлайна. И, скорее всего, сайт полетит после первого же релиза.

Когда нужно было вообще вчера, разработчику придётся делать всё хоть как, лишь бы успеть до дедлайна

💬«Там просто кнопку добавить»

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

💬«Чтобы всё работало»

Для разработчика всё работает, когда код запускается без ошибок. А для компании — когда бизнес получает прибыль. Так что лучше сформулировать точнее, что вы хотите получить в итоге.

💬«Сделайте современно»

Та же история, что и с «красиво» — понятие максимально абстрактное и для каждого означает своё. Может, для разраба «современно» — это в стиле 2013 года, когда он последний раз следил за трендами. А реально инновационные приколы он считает зумерским баловством.

Может, для разраба «современно» — это в стиле 2013 года, когда он последний раз следил за трендами

Как заменить расплывчатые формулировки конкретными

При чтении ТЗ у разраба не должно возникать вопроса «А что хотел сказать автор?» Для этого любые свои «хочу» превращайте в сценарий с конкретными требованиями.

❌ «Сделайте форму на сайте»

✅ «Форма должна содержать поля: имя, телефон, email, комментарий. После клика на „Отправить“ данные уходят в CRM Bitrix24, а пользователю на экране показывается сообщение: „Заявка успешно принята“».

Как составить техническое задание: структура простого ТЗ

Писать трактат на 100 страниц и описывать каждую букву и каждую кнопку не надо. Для большинства проектов достаточно простой, но чёткой структуры, где каждый блок отвечает за свой кусочек пазла.

Цель и контекст задачи

Разработчик должен знать не только что сделать, но и зачем. Он и без ТЗ вам сайт наклепает за ночь, только эта страница вряд ли решит проблемы компании. 

А вот когда разработчик понимает контекст, бизнес-задачу и портрет пользователя, он уже не просто исполнитель, а технический партнёр. И может предложить более простое, дешёвое или технически правильное решение, о котором вы даже не задумывались.

Например, разрабу дают задачу: добавить ещё пять полей в форму регистрации. Хозяин — барин, разработчик всё добавляет. А потом выясняется, что цель бизнеса — собрать больше данных клиента для персонализации. Опытный разработчик бы подсказал, что перегруженная форма только снизит конверсию, а данные лучше собирать постепенно и внутри личного кабинета.

А чтобы тоже стать профи в своей сфере, присмотритесь к курсам — у нас как раз есть промокод со скидкой на любую профессию в Яндекс Практикуме

Пользовательский сценарий

Пользовательский сценарий  — это пошаговое описание того, как человек будет пользоваться системой. 

Представьте, что вы снимаете кино, где в главной роли — ваш клиент. Вам нужно подробно расписать каждый его шаг: куда он нажал, что увидел на экране и что произошло дальше.

Сценарий пишется по простой схеме: Кто? ➔ Что делает? ➔ В каком порядке? ➔ Как реагирует сайт?

Требования к функционалу

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

Если сценарий описывает путь клиента снаружи, то требования к функционалу объясняют программисту, какие шестерёнки должны крутиться внутри.

Критерии готовности

Критерии готовности — это список условий, по которому происходит приёмка работы. Простыми словами — что должно быть сделано, чтобы уже жать руки и платить деньги. 

Это чек-лист, где каждый пункт можно проверить простым тестом: функция либо работает по условию, либо нет. Если хотя бы один пункт не выполняется, готовый результат не принимают, а задачу отправляют на доработку.

Что не входит в задачу

Это список вещей, которые разработчик по договору делать не будет. Если его не зафиксировать, на этапе приёмки начнутся выяснения отношений и вопросы шекспировского масштаба: кто, кому и что должен?  

Вы будете ждать готовый сайт с текстами и картинками, а программист отдаст пустой работающий шаблон. Дизайн и текст — уже не его проблемы, для них нужны отдельные люди и отдельные ТЗ. 

Список того, что не входит в задачу, защищает обе стороны

Заказчик: чётко понимает, за что он платит, и какие ресурсы (копирайтеров, дизайнеров, маркетологов) нужно привлечь со стороны, чтобы проект заработал.

Исполнитель: не делает бесплатно миллион новых мелких задач, которые рождаются у заказчика.

Когда прочитал ТЗ невнимательно

Пример ТЗ на разработку

Не pov, а real — вам нужна форма для заявки на сайте. Показываем, как сделать ТЗ для разработчика по красоте. А если форма для заявки вам не нужна, всё равно почитайте — потом адаптируете шаблон под себя. 

Пример ТЗ для формы заявки на сайте

Цель

Добавить на посадочную страницу всплывающую форму, на которой посетители смогут быстро оставить свои контакты. Главная бизнес-задача — собирать контакты потенциальных клиентов и автоматически передавать их в отдел продаж.

Сценарий пользователя

Пользователь заходит на сайт, изучает информацию и нажимает на кнопку «Связаться».
На экране поверх контента открывается всплывающее окно с полями ввода.
Пользователь заполняет поля своими данными и кликает по кнопке «Отправить».
Система мгновенно проверяет данные.
Если всё заполнено верно, данные уходят менеджеру, а пользователь видит подтверждение.

Поля формы

Имя пользователя — текстовое поле. Необязательное для заполнения. Ограничение: не более 50 символов.
Телефон — текстовое поле. Обязательное для заполнения. Должна быть настроена жёсткая маска ввода: +7 (999) 999-99-99.
Чек-боксы (галочки) — два обязательных чек-бокса внизу формы: «Согласие на обработку персональных данных» и «Согласие с политикой конфиденциальности». По умолчанию галочки не стоят.

Валидация и обработка ошибок

Проверка на пустоту: если пользователь оставил поле «Телефон» пустым или не поставил галочки согласия, кнопка «Отправить» не срабатывает.
Подсветка ошибок: неправильно заполненное поле «Телефон» или пустые чек-боксы выделяются красной рамкой. Под ними появляется текст ошибки: «Пожалуйста, заполните это поле».
Маска ввода: в поле «Телефон» система физически блокирует ввод любых букв или символов, кроме цифр.

Отправка данных и уведомления

В момент нажатия кнопки «Отправить» на ней появляется иконка загрузки (спиннер), а сама кнопка становится неактивной, чтобы не дублировать заявки.
Все данные из формы в фоновом режиме отправляются по API в нашу CRM (AmoCRM) для создания карточки сделки в этапе «Неразобранное».

Сообщение об успехе

После успешной отправки данных содержимое всплывающего окна плавно меняется без перезагрузки всей страницы. Пользователю выводится уведомление: «Спасибо за заявку! Наш менеджер свяжется с вами в течение десяти минут»

Критерии приёмки

Задача считается полностью готовой и принимается заказчиком, если:

Всплывающее окно корректно открывается по кнопке и адаптируется под экраны телефонов.
Форма заявки не отправляет данные при пустом поле телефона или отсутствии галочек.
При корректном заполнении в AmoCRM мгновенно создаётся новая сделка с правильным именем и номером телефона.
Появляется финальное сообщение об успешной отправке.

Что НЕ входит в задачу

В эту задачу НЕ входит написание текста Политики конфиденциальности.
В задачу НЕ входит настройка e-mail или СМС-оповещений для самого клиента.

Как адаптировать образец под свою задачу

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

Что обсудить с разработчиком до начала работы

Плохие новости для интровертов — даже если вы составили идеальное ТЗ, обсудить его с исполнителем вживую всё равно придётся. Перед стартом пройдитесь с разработчиком по каждому блоку: уточните спорные места, ограничения, технические риски, сроки и порядок приёмки.

Вопросы, которые стоит задать до старта

Что непонятно в задаче?

Если программист спотыкается на описании функции, значит, в тексте есть общие слова вместо конкретных метрик. Дешевле переписать пару абзацев ТЗ, чем платить за замену тысячи строк в коде после релиза. 

Есть ли в проекте технические ограничения или скрытые риски?

Часто программист может предложить более изящное, дешёвое и простое решение. Или сразу объяснить, что платформа не потянет все ваши хотелки. 

Какие данные или доступы вам нужны от меня для старта?

Чтобы разработчик не бегал к вам за доступом к каждому хостингу, коду, макету или документу, соберите их заранее.

Какие факторы могут повлиять на итоговый срок проекта?

Это поможет поставить реальную дату дедлайна и сразу узнать, что может помешать в неё уложиться. Часто задержки вообще не зависят от программиста. Например, проверка документов в банке для подключения онлайн-оплаты может занять пару недель. Так что если исполнитель называет срок в 30 дней, закладывайте на запуск 40 дней. 

Как именно мы будем проверять и принимать готовый результат?

Чтобы всё твёрдо и чётко: по какому чек-листу пройдёт приёмка, сколько дней даётся на бесплатное исправление багов и когда уже можно оплачивать работу и обмывать новый сайт. 

Что из наших обсуждений уже считается дополнительной работой?

Защитите себя от внезапных доплат. Если вы в процессе созвона решили добавить маленькую галочку, уточните, входит ли она в текущий бюджет или на неё вы составите отдельное мини-ТЗ.

Как проверить, что ТЗ понятно и готово к работе

Перед тем как отдать ТЗ разработчикам, проверьте его на независимом читателе. Например, покажите текст коллеге или вообще любому человеку, который никак не связан с проектом. Если всё сделано правильно, то читатель должен ответить на четыре вопроса:

  • Что нужно сделать? 
  • Где проходят границы задачи? 
  • Как проверить готовый результат?
  • Какие вопросы остались?

Чек-лист хорошего ТЗ

Чёткая цель. Вы прописали, какую бизнес-проблему решает функция или продукт.
Конечный пользователь. Зафиксировали, кто будет работать в системе (клиент, администратор, менеджер).
Пользовательские сценарии. Пошагово расписали путь человека в интерфейсе по схеме «клик — реакция системы».
Функциональные требования. Описали все поля, кнопки, внутренние статусы, ошибки и автоматические уведомления.
Данные. Понятно, какую информацию продукт собирает, где её хранит и в каком виде (например, шифрование паролей).
Интеграции. Перечислили все сторонние сервисы (CRM, платёжные шлюзы, службы доставки), которые нужно подключить.
Технические ограничения. Прописали рамки: адаптивность под мобильные экраны, скорость загрузки страниц, версии браузеров.
Критерии готовности. Составили чек-лист для приёмки работы.
Реальные сроки. Указали финальный дедлайн и даты сдачи промежуточных этапов.
Ответственные. Чётко распределили роли: кто со стороны заказчика отвечает за согласование, а кто со стороны исполнителя ведёт разработку.
Что не входит в задачу. Очертили границы задачи, чтобы защитить проект от бесплатных доработок и переплат.

Когда ТЗ лучше переписать до старта

Всё фигня, давай по новой, когда:

Много абстрактных слов: удобно, красиво, быстро, современный интерфейс. Как сказал бы научник: слишком много воды, убирай.

Когда ТЗ лучше переписать до старта

Результат невозможно проверить. Если из ТЗ непонятно, как именно будет проходить приёмка готового продукта, проект обречён на бесконечные споры. Разработчик просто подключит систему, как ему удобно, а вы не сможете доказать, что всё не так. В документе-то критериев не было.

❌ «Сделать удобную интеграцию сайта с CRM-системой».

✅ «Задача считается выполненной, если после заполнения формы на сайте в AmoCRM мгновенно создаётся новая сделка. В карточку сделки должны без ошибок передаваться три поля: имя, телефон и выбранная услуга».

Неясно, что делать при ошибках. Если ТЗ только про идеальный путь идеального пользователя — оно плохое. Представьте себе самого тугодумного человека на свете: он вводит данные не туда, у него тупит интернет, он создаёт по пять заявок в минуту. Вот такого пользователя обязательно нужно учитывать, и все возможные ошибки на сайте тоже.

Не описаны ограничения. Если в ТЗ нет технических рамок (какие браузеры поддерживать, под какие экраны верстать, какую нагрузку должен держать сервер), продукт сломается при первой же реальной проверке.

Нет примеров и аналогов. Если сложные элементы логики или интерфейса вы описали только текстом без скриншотов, ссылок на похожие решения или прототипов, то разработчик может не понять ваших гениальных задумок. И сделать всё на свой вкус. 

ТЗ — не очередная фигня для галочки. Да, бесконечно лень поминутно расписывать, кто, что и где должен сделать. Но лучше так, чем миллион созвонов, переделок и драк с разработчиком. Хотя их отсутствие даже с идеальным ТЗ гарантировать всё же не можем. Но их точно будет меньше.

arrow-scrollTop arrow-scrollTop

Автор:
Алиса Волкова

Еще по теме:
Exit mobile version
Top.Mail.Ru