Менеджер — хороший человек. Он умеет общаться с клиентами, знает бизнес, понимает, что нужно заказчику.
Но он не знает, как это описать для разработчика.
Поэтому его ТЗ выглядит так:
«Сделать личный кабинет, чтобы клиенты могли видеть свои заказы и скачивать счета. Ну, как у всех».
Это не ТЗ. Это пожелание.
Разработчик читает это и думает:
Он не знает. И начинает додумывать.
Без имён и лиц — правило конфиденциальности неизменно.
Работал я в роли тимлида над одним действительно претенциозным проектом. Но руководство — это, к слову, частая боль — говоря «делай», вмешивалось в процесс.
Взяло проджект-менеджера, не понимающего в разработке от слова «совсем». Аргументация при приеме на работу феерична: "У меня сын изучает программирование". Понятней и лучше руководству не становилось ни на йоту. Но при этом менеджер регулярно вызывался на ковёр к руководству, и они согласовывали новшества, которые это самое руководство хотело бы видеть.
Сегодня, и это главное, потому что завтра передумывали или меняли придуманное накануне.
В итоге «ТЗ», которое получалось, было переполнено прилагательными и деепричастными оборотами. «Документ» писался в Word, и предполагалось, что нужно по нему сделать что-то, что придумало руководство.
Жаль, что телепатией я не обладаю.
Хорошее ТЗ отвечает на все вопросы до того, как разработчик начал писать код.
В хорошем ТЗ разработчик не переспрашивает. Потому что всё уже написано.
| Что | ТЗ от менеджера | Хорошее ТЗ |
|---|---|---|
| Структура | Нет структуры — просто текст | Чёткая структура: цели, требования, сценарии, ограничения |
| Сценарии | «Пользователь заходит и видит» | «Если пользователь авторизован → видит список заказов. Если не авторизован → видит форму входа» |
| Данные | «Показываем заказы» | «Показываем поля: номер, дата, сумма, статус. Данные из таблицы orders по user_id» |
| Интеграции | «Связать с 1С» | «При создании заказа отправляем данные в 1С по API. Формат JSON. Адрес: …» |
| Ошибки | «Чтобы работало» | «Если 1С не отвечает — показываем сообщение "Сервис временно недоступен" и записываем ошибку в лог» |
| Переспросы | Разработчик переспрашивает каждые 10 минут | Разработчик берёт и делает |
| Переделки | 2–3 раза | 0–1 раз |
Потому что менеджер мыслит бизнес-категориями, а не техническими.
Он не знает:
И это нормально. Это не его работа.
Его работа — понимать бизнес. Моя работа — превращать это понимание в инструкцию для разработчиков.
Если вы даёте мне ТЗ от менеджера — я не выкидываю его в мусорку.
Я беру его как основу. Я читаю, задаю вопросы, уточняю, дополняю.
Я превращаю «сделать личный кабинет» в:
В итоге вы получаете ТЗ, по которому разработчик работает без переспросов.
ТЗ — это не просто документ. Это контракт между бизнесом и разработкой.
Мы утверждаем ТЗ, и разработчики действуют по задачам, сформированным исходя из него.
Любое вмешательство — это:
Представьте, вы строите загородный дом.
Вы утвердили проект, и рабочие начали копать котлован. И тут вы придумали, что нужна ещё дополнительная веранда и подвал в 2 раза больше, чтобы «Хаммер» поместился и кессон под ним был.
Что скажут рабочие? Мы — культурные люди, и не станем приводить тут вероятные цитаты. Но даже если они согласятся, срок сдачи сдвинется. Безусловно. А дом будет отвечать просчитанным нормам безопасности? Вот это вряд ли.
В разработке ровно та же ситуация. Хороший CTO или толковый проджект-менеджер обязательно скажут об этом руководителю.
Но выход есть. Бизнес меняется — сайт должен отвечать требованиям.
Все «хотелки» документируются и включаются в разработку только после изменений в ТЗ и интеграции задач для разработчиков в трекер.
Бизнес должен понимать: это — 100% сдвиг сроков.
| Действие | Результат |
|---|---|
| Утвердили ТЗ | Разработка идёт по плану |
| Появилась новая хотелка | Документируем, оцениваем, включаем в новый этап |
| Изменяем ТЗ | Сроки сдвигаются. Это нормально. |
| Не меняем ТЗ | Сроки не сдвигаются. Заказчик получает то, что заказал. |
| Признак | Плохое ТЗ | Хорошее ТЗ |
|---|---|---|
| Можно передать разработчику и уйти? | Нет | Да |
| Разработчик переспрашивает? | Да, постоянно | Нет |
| Описаны все сценарии? | Нет | Да |
| Описаны ошибки? | Нет | Да |
| Есть структура БД? | Нет | Да |
| Есть описание интеграций? | Нет | Да |
| Задачи разбиты? | Нет | Да |
| Переделки после сдачи? | 2–3 раза | 0–1 раз |
| Изменения в процессе | Хаос | Чёткий процесс через изменение ТЗ |
| Что вы думаете | Что на самом деле |
|---|---|
| «У нас есть ТЗ» | У вас есть пожелание, а не ТЗ |
| «Менеджер написал, разработчик разберётся» | Разработчик не разберётся. Он будет додумывать. |
| «ТЗ — это просто текст» | ТЗ — это инструкция для разработчика |
| «Мы сэкономим на ТЗ» | Вы заплатите за переделки |
| «Мы можем менять ТЗ в процессе» | Можете. Но сроки сдвинутся. Это ваше решение. |
Если у вас есть ТЗ от менеджера — я могу его доработать.
Если у вас нет ТЗ — я могу написать его с нуля.
Если вы не уверены, что у вас хорошее ТЗ — я могу проверить.