← Назад к вопросам

Как помогал Project manager с написанием ТЗ?

2.0 Middle🔥 181 комментариев
#Soft skills и коммуникация#Методологии разработки#Работа с командой

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как я помогал Project Manager с написанием ТЗ (Technical Specification)

ТЗ — это мост между видением PM и реализацией разработчиков. Хорошее ТЗ ускоряет разработку на 30-50%, плохое — замораживает проект на переделки.

Шаг 1: Понимание разницы между roles

Product Manager (я):

  • ПОЧЕМУ делаем (бизнес-цель, юзер-проблема)
  • ЧТО делаем (функциональные требования)
  • КДО целевая аудитория (user personas)
  • КОГДА нужно (приоритет, deadline)

Project Manager (коллега):

  • КАК организовать процесс
  • СКОЛЬКО ресурсов
  • На сколько спринтов
  • Риск-менеджмент, блокеры

Я помогаю Project Manager с содержанием (ТЗ), она помогает мне с процессом (планирование, координация).

Шаг 2: Начало: Формулировка проблемы

Плохое ТЗ: "Нужно улучшить фильтры в приложении"

Хорошее ТЗ (мой вклад):

ПРОБЛЕМА:
20% пользователей жалуются, что не могут найти нужный продукт из-за плохих фильтров.
Сейчас фильтры работают только по названию, пользователям нужно ещё по цене, рейтингу, категории.

ЦЕЛЬ:
Улучшить experience поиска, чтобы пользователи находили товар за 30 секунд (сейчас 2-3 минуты).

CОНТЕКСТ:
- DAU в категории товаров: 5,000
- Конверсия до клика на товар: 60% → нужно до 75%
- Конкурент (Amazon) имеет фильтры по 15+ параметрам

Эта информация ДО технических деталей. Она позволяет разработчикам понять, почему они делают эту работу.

Шаг 3: User stories и требования

Я пишу user stories, которые Project Manager помогает превратить в спринты:

User Story:

Как покупатель,
Я хочу фильтровать товары по цене,
Чтобы найти товар в моём бюджете.

Принимаемые критерии:
- Могу ввести минимальную и максимальную цену
- Результаты обновляются в реальном времени
- Могу комбинировать фильтр цены с другими фильтрами

Требования (уточнение):

ТребованиеОписаниеПриоритет
Фильтр по цене (min-max)Слайдер от $0 до $10,000MUST
Фильтр по рейтингуCheckbox: 4.5+, 4+, 3+, всеMUST
Фильтр по категорииDropdown с 20 категориямиMUST
Фильтр по брендуMultiselectSHOULD
Кастомные тегиПользователь создал теги товаровCOULD
Сохранение фильтровПомни выбранные фильтрыSHOULD

При помощи Project Manager выбираем: MUST делаем сейчас, SHOULD и COULD — потом.

Шаг 4: Поведение граничных случаев

Я описываю, что должно происходить в edge cases:

Вариант 1: Нет результатов

Если пользователь выбрал цену $1-10, а такые товары кончились:
- Показать пустую страницу
- Сообщение: "Нет товаров в этом ценовом диапазоне"
- Предложить: "Попробуйте расширить цену" + кнопка (очистить фильтр)

Вариант 2: Мобильная версия

На мобиле фильтры занимают полный экран (нет sidebar):
- Кнопка "Фильтры" открывает drawer
- Показываем по 1 фильтру за раз (иначе не влазит)
- Кнопка "Применить" запускает поиск

Вариант 3: Performance

Если пользователь очень часто меняет фильтры (50+ раз в минуту):
- Не делать запрос на каждое изменение (дебаунс 300ms)
- Показать loading spinner
- Кэшировать результаты

Все эти детали я обсуждаю с Project Manager, чтобы понять: стоит ли это в MVP или потом?

Шаг 5: Макеты и взаимодействие

Я не рисую макеты (это дизайнер), но я описываю flow:

PAGE FLOW:
1. Пользователь открывает "Товары" → видит список + фильтры слева
2. Кликает на фильтр цены → слайдер
3. Движет слайдер → список товаров обновляется (no page refresh)
4. Выбирает категорию → результаты снова обновляются
5. Кликает на товар → переходит на detail page
6. Нажимает back → фильтры остаются такие же (сохраняются в URL)

Обсуждение с Project Manager:

  • На сколько спринтов разбить эту работу?
  • Кто делает фронт, кто бэк, кто интеграцию?
  • Есть ли зависимости (нужно сначала API от бэка)?

Шаг 6: API контракт

Я определяю, какие API endpoints нужны. Project Manager согласует это с бэкенд lead:

Endpoint: GET /api/v1/products

Query параметры:
- price_min: number (опционально)
- price_max: number (опционально)
- category: string (опционально, может быть несколько)
- rating_min: number (опционально)

Пример: GET /api/v1/products?price_min=10&price_max=100&category=electronics&rating_min=4

Ответ:
{
  "items": [
    {
      "id": "uuid",
      "name": "Product Name",
      "price": 45.99,
      "rating": 4.5,
      "category": "electronics"
    }
  ],
  "total_count": 234,
  "page": 1
}

Этот контракт обсуждается раньше разработки. Фронт может писать код с моком, пока бэк не готов.

Шаг 7: Тестирование и критерии приёма

Я пишу checklist для QA. Project Manager помогает спланировать testing phase:

Функциональные тесты:

[ ] Фильтр по цене: выбрал $50-100, показываются только товары в этом диапазоне
[ ] Фильтр по категории: выбрал 2 категории, показываются товары из обеих
[ ] Комбинация: цена + категория + рейтинг работают вместе
[ ] Очистка фильтров: кнопка "Reset" убирает все фильтры
[ ] Сохранение URL: если закрою tab и вернусь, фильтры остаются (по URL)

Performance тесты:

[ ] Загрузка результатов при фильтре: < 500ms (вместе с animation)
[ ] Изменение фильтра (без reload): < 300ms
[ ] Мобильная версия: < 800ms (может быть медленнее)

UI/UX тесты:

[ ] На мобиле фильтры занимают весь экран (не видно товары)
[ ] На дескьопе фильтры в sidebar (видно товары и фильтры одновременно)
[ ] Сообщение "Нет результатов" ясное и есть способ очистить фильтры

Шаг 8: Дорожная карта и зависимости

Я с Project Manager планирую разделение на спринты:

Sprint 1 (неделя 1-2):

  • Бэк: API для фильтров (price, category, rating)
  • Фронт: UI компоненты (слайдер, checkbox, dropdown)

Sprint 2 (неделя 3-4):

  • Фронт: интеграция фронта с API
  • QA: функциональное тестирование

Sprint 3 (опционально):

  • Фронт: улучшение UX, animations
  • BАк: оптимизация запросов (если медленно)

Зависимости:

  • Фронт не может начать спринт 2, пока бэк не закончит спринт 1
  • API должен быть задокументирован в Swagger
  • Тестовые данные (fixtures) нужны для разработки

Шаг 9: Документирование и передача знаний

После запуска я помогаю Project Manager с документацией для support/analytics:

ТЗ ИТОГОВОЕ (для архива и будущих reference):
- Проблема: описание
- Решение: что реализовали
- Результаты: метрики
- Уроки: что работало, что нет
- Будущие улучшения: что нужно добавить

Это помогает, когда через год нужно добавить новый фильтр — уже понимаешь архитектуру.

Шаг 10: Post-mortem и улучшения

После запуска фичи я с Project Manager провожу встречу:

Что прошло хорошо?

  • Требования были ясными, не было переделок
  • API контракт был правильным с первого раза
  • Тестирование было быстрым

Что можно улучшить?

  • Забыли про граничный случай (нет результатов)
  • ТЗ было слишком подробным в деталях (ненужная информация)
  • Не было обсуждения performance с бэк lead раньше

Применяем для следующего проекта:

  • Добавляем граничные случаи в чеклист
  • Делаем ТЗ менее подробным, больше фокуса на требования
  • Приглашаем tech lead на обсуждение API раньше

Мой процесс написания ТЗ (с Project Manager)

  1. Проблема + Контекст (я) → 30 минут обсуждения с Project Manager
  2. User stories и требования (я) → обсуждение с дизайнером и tech lead
  3. Граничные случаи (я + tech lead) → Project Manager добавляет риски
  4. API контракт (я + бэк lead) → Project Manager рассчитывает effort
  5. Спринты и зависимости (я + Project Manager) → планирование
  6. Тестирование (я + QA) → Project Manager следит за timeline
  7. Документирование (я + Project Manager) → архивируем для будущего

Инструменты, которые я использую

  • Figma — макеты и mockups
  • Confluence — документирование ТЗ
  • Jira — user stories, tasks, зависимости
  • Miro — диаграммы user flow, edge cases
  • Slack — быстрые вопросы и уточнения

Project Manager использует те же инструменты, но фокусируется на timeline и ресурсах.

Антипаттерны (что НЕ делать)

❌ ТЗ без контекста "Нужно сделать фильтры" → Разработчики не понимают, зачем

❌ ТЗ слишком подробное "На кнопке шрифт должен быть sans-serif 14px rgba(0,0,0,0.87)..." → Это дизайнер должен определить

❌ Не обсуждать с техническими людьми → Написал ТЗ, только потом спросил у бэк lead — он говорит "это невозможно"

❌ Не определить API заранее → Фронт и бэк разработаны, API контракт не сходится

❌ Забыть про граничные случаи → Фичу запустили, упали на edge case, нужна срочная правка

Заключение

Хорошее ТЗ, написанное PM при помощи Project Manager, — это:

  1. Контекст — почему мы это делаем
  2. Требования — четко и точно
  3. Граничные случаи — что может пойти не так
  4. API контракт — как компоненты общаются
  5. Зависимости — что делать в каком порядке
  6. Тестирование — как проверить, что работает
  7. Документирование — для будущего

Когда это всё есть, разработчики знают, что делать. Project Manager знает, когда всё закончится. PM спокоен, что ничего не упущено. Каждый делает свою работу правильно.

Как помогал Project manager с написанием ТЗ? | PrepBro