Как выставляешь требования команде разработки?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Выставление Требований Команде Разработки
Почему это критический навык PM
Как PM ставим требования, зависит:
- Будет ли инженеры доволны работой
- Будет ли продукт качественный
- Будут ли сроки соблюдены
- Будет ли техдолг расти или снижаться
Неправильно выставленные требования = срывы deadline, баги, мутные решения, конфликты.
Хорошие требования: Что это?
Хорошее требование должно быть:
- Ясное — нет неопределённости
- Полное — всё необходимое, ничего лишнего
- Проверяемое — можно однозначно сказать выполнено или нет
- Реалистичное — возможно выполнить в разумное время
- Мотивирующее — инженер понимает, зачем это нужно
Три уровня требований
Уровень 1: PRD (Product Requirements Document)
Что это: Высокоуровневый документ, который описывает ЧТО мы хотим и ПОЧЕМУ.
Не РРАЗБИРАЕТ как, а ПОЧЕМУ это нужно.
Структура PRD:
# Feature: Social Sharing
## Objective
Увеличить виральность через социальные сети.
Цель: +20% новых пользователей через социальные каналы за месяц.
## Background
- Анализ конкурентов показывает, что у них кнопки шэра
- Пользователи просили возможность поделиться
- NPS feedback: "Хочу похвастаться перед друзьями"
## Requirements
1. Кнопка "Share" на странице результатов
2. Поддержка: Facebook, Twitter, WhatsApp
3. Шаринг должен содержать: заголовок, описание, ссылку
4. Пользователь может кастомизировать текст
## Out of Scope
- Pinterest, LinkedIn (добавим позже)
- Analytics по шерам (добавим позже)
- Шеринг на email (out of scope на эту версию)
## Success Metrics
- CTR на кнопку Share: > 5%
- Через Facebook привлечь 100+ новых пользователей в месяц
- Retention: шеренутые пользователи остаются на 20% дольше
## Timeline
- Week 1: Design & Spec
- Week 2: Backend API
- Week 3: Frontend
- Week 4: Testing & Deployment
Преимущество PRD:
- Инженеры понимают strategический контекст
- Можно обсудить приоритеты
- Видно, что в scope, что out of scope
Уровень 2: User Stories
Что это: Функциональные требования в формате "как пользователь я хочу..."
Формат:
As a [user role]
I want [action]
So that [benefit]
Example:
As a student
I want to share my exam results on social media
So that my friends can congratulate me
Зачем это нужно:
- Убрать ambiguity
- Фокус на пользователе, не на технике
- Основа для обсуждения с инженерами
Пример User Story:
User Story: Share Results on Facebook
As a student who just received exam results
I want to click "Share on Facebook" button
So that my friends can see my achievement
Acceptance Criteria:
1. When I click "Share on Facebook", Facebook dialog should open
2. Default text should be: "I just scored {score}% on {exam_name}!"
3. User can edit text before sharing
4. Shared post should include link back to app with my score
5. After successful share, show confirmation: "Shared!"
Notes:
- Use official Facebook SDK
- If user is not logged in, prompt login
- Test on iOS and Android
Estimate: 5 points
Уровень 3: Technical Specs (опционально)
Когда нужны:
- Сложная интеграция
- Критично для performance
- Новая архитектура
Что описываем:
- API endpoints
- Database schema
- Validation rules
- Error handling
- Performance requirements
Пример:
Facebook Share API Integration
**Endpoint:** POST /api/v1/share
**Request:**
{
"platform": "facebook",
"exam_id": "uuid",
"custom_text": "optional string"
}
**Response:**
{
"success": true,
"share_id": "uuid",
"url": "facebook.com/posts/..."
}
**Error Handling:**
- 400: invalid platform
- 401: user not logged in
- 500: Facebook API error
**Performance:**
- P99 latency < 500ms
- Cache share configuration for 1 hour
Как выставить требования инженеру
Шаг 1: Подготовка
Перед встречей с инженером:
-
Напиши PRD
- Не устно, письменно
- Дает время подумать
- Ссылаться можно потом
-
Нарисуй макеты/wireframes
- Не нужны идеальные дизайны
- Но должен быть flow
-
Подумай о edge cases
- Что если пользователь неавторизован?
- Что если интернет упал?
- Что если лимит requests?
-
Обсуди с дизайнером
- Он может указать на проблемы
- Может предложить лучший подход
Шаг 2: Встреча с инженером
Как проводить:
-
Start with the WHY
- "Мы видим, что пользователи просят социальный шеринг"
- "Это может дать нам 20% роста через рефералы"
- Инженер должен понимать цель
-
Покажи макеты и USER STORY
- Не говори как реализовывать
- Покажи что должно быть видно пользователю
-
Спроси вопросы
- "Видишь ли ты проблемы с этим подходом?"
- "Что тебя беспокоит?"
- "Нужны ли нам какие-то предусловия?"
-
Открыт для feedback
- Инженер может увидеть, что подход не работает
- Может предложить лучше
- Слушай и адаптируй
-
Договорись о Definition of Done
- Когда можем считать готовым?
- Нужны тесты?
- Нужна документация?
Пример диалога:
PM: Хочу добавить кнопку Share на Facebook. Вот макет. Видишь ли ты проблемы?
Ingineer: Да, нам нужно иметь Facebook SDK. Это добавит 500 KB к bundle size.
PM: Окей, это проблема? Есть ли альтернатива?
Ingineer: Можем использовать web view вместо SDK. Это медленнее, но меньше размер. Или используем SDK, но лениво загружаем только когда нужен Share.
PM: Какой вариант предпочитаешь ты?
Ingineer: Я рекомендую lazy loading SDK. Быстро и не влияет на performance для тех, кто не шерит.
PM: Согласен. Давайте делать так. Когда это может быть готово?
Ingineer: Интеграция SDK - 2 дня, Frontend - 1 день, тесты - 1 день. Итого 4 дня.
PM: Хорошо. Давайте запланируем на Спринт 2.
Частые ошибки PM при выставлении требований
Ошибка 1: Слишком детальные требования
❌ Плохо:
Тебе нужно:
1. Создать Button компонент с классом "share-btn"
2. Установить размер кнопки 48px
3. Цвет текста #0066CC
4. Использовать Facebook SDK v15.0
5. При клике отправить POST на /api/share
✅ Хорошо:
Нужна кнопка Share, которая открывает Facebook dialog.
После sharing - показать подтверждение.
Помни, что не все пользователи авторизованы на Facebook.
Почему: Инженеры лучше знают как реализовывать. Дай им свободу в как, но будь строг в что.
Ошибка 2: Неясные Acceptance Criteria
❌ Плохо:
Acceptance Criteria:
- Share работает хорошо
- Быстро
- Без ошибок
✅ Хорошо:
Acceptance Criteria:
1. Share button visible на странице результатов
2. Click открывает Facebook dialog в новом окне
3. Shared post содержит exam name, score, и ссылку на app
4. User может отредактировать текст перед sharing
5. После успешного share показывается confirmation
6. Все работает на Chrome, Safari, iOS Safari
7. P99 latency < 500ms
8. Нет console errors
Ошибка 3: Забывать про edge cases
❌ Плохо:
Acceptance Criteria:
- User может поделиться результатом
✅ Хорошо:
Acceptance Criteria:
- User может поделиться результатом (happy path)
- Если user не авторизован на Facebook, показать login dialog
- Если интернет упал, показать error message
- Если Facebook API down, gracefully degrade (скрыть кнопку)
- Если user в странах с блокировкой Facebook, не показывать кнопку
Ошибка 4: Требования которые меняются
❌ Плохо:
День 1: Нужна кнопка Share
День 3: Нужна поддержка Instagram
День 5: Нужна поддержка Twitter
День 7: Нужна поддержка WhatsApp
✅ Хорошо:
Фаза 1 (Sprint 1): Facebook Share
Фаза 2 (Sprint 2): Instagram, Twitter
Фаза 3 (Sprint 3): WhatsApp, Email
Почему: Контекст switching убивает productivity. Лучше сначала доделать одно, потом переходить к другому.
Ошибка 5: Не учитывать technical constraints
❌ Плохо:
Need Share на Facebook для iOS 11+
Помни, что iOS 11 вышел в 2017
✅ Хорошо:
Need Share на Facebook для iOS 14+ (поддерживаем last 2 versions)
Заметь: iOS 11 не поддерживаем более
Для older devices может быть graceful degradation
Как документировать требования
Вариант 1: Google Docs (хороший)
- Легко collaborative edit
- Комментарии и suggestions
- История versions
Вариант 2: Confluence/Notion (лучше)
- Лучше структурирование
- Легче искать
- Связи между документами
Вариант 3: Jira (для агайла)
- User Stories прямо в инструменте
- Вся информация в одном месте
- Но может быть noise
Мой совет: PRD в Notion, User Stories в Jira, дизайны в Figma. Всё связано через ссылки.
Мой процесс
Как я выставляю требования:
- День 1: Пишу PRD (объясняю что и почему)
- День 2: Обсуждаю с дизайнером (макеты и flow)
- День 3: Встреча с инженер лидом (что технически реалистичного?)
- День 4: Уточняю требования на основе feedback
- День 5: User Stories и Acceptance Criteria
- День 6: Встреча с инженерами (любые вопросы?)
- Sprint Planning: Финальное обсуждение и оценка
Важный момент: требования это не святая корова. Если инженер скажет "это невозможно за этот спринт", мы переговариваемся и находим компромисс (убираем фичи, переносим, упрощаем).
Вывод
Хорошие требования:
- Объясняют WHY (а не только WHAT)
- Четкие Acceptance Criteria
- Учитывают edge cases
- Оставляют инженерам свободу в HOW
- Проверяемы (можно однозначно сказать done/not done)
- Документированы письменно
Худший подход: устно рассказать, что нужно, и потом удивляться, что получилось не то. Письменные требования = меньше misunderstandings = faster delivery.