Команда разработки и self-organization

Команда сама решает, как выполнить работу, — и это не вежливая формальность, а условие, без которого весь Scrum рассыпается.

Команда разработки (Developers) — люди, которые превращают задачи бэклога в готовый продукт. Она кросс-функциональна (внутри есть все нужные навыки) и самоорганизуется: сама выбирает, как работать, и сама берёт задачи.

Разделение труда, ради которого всё затевалось

Три роли Scrum делят зоны решений так:

ВопросКто отвечает
Что делать и зачем? В каком порядке?Product Owner
Как это построить? Кто чем займётся? Сколько влезет в спринт?Команда
Что мешает и как сделать процесс лучше?Scrum Master (вместе с командой)

Граница между первой и второй строкой — самая важная в Scrum. Нарушают её постоянно: PO приходит с готовым техническим решением, менеджер лично раздаёт задачи, архитектор из соседнего отдела диктует, где хранить кеш.

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

Кросс-функциональность: команда, которой не нужно ждать

Кросс-функциональная команда — это группа, которая может довести задачу до готового результата, не выходя за свои пределы. Внутри есть всё: бэкенд, фронтенд, тестирование, вёрстка, работа с базой, выкатка в продакшен.

Сравните два устройства организации на одной и той же задаче — «добавить фильтр в каталог»:

КОМПОНЕНТНЫЕ КОМАНДЫ (отделы по специальностям)

день 1-2   команда бэкенда делает API              (ждём)
день 3-6   задача в очереди фронтенд-отдела        (ждём)
день 7-9   фронтенд делает интерфейс
день 10-14 задача в очереди отдела тестирования    (ждём)
день 15    тестировщик находит ошибку в API
день 16-20 задача возвращается в очередь бэкенда   (ждём)

Итого: 20 дней, из них работы — 6


КРОСС-ФУНКЦИОНАЛЬНАЯ КОМАНДА

день 1     обсудили втроём, договорились о контракте API
день 2-3   бэкенд и фронтенд пишут параллельно, тестировщик готовит проверки
день 4     нашли ошибку, поправили за час — все сидят рядом
день 5     готово, выкатили

Итого: 5 дней

Разница не в скорости печатания кода — она вообще не в этом. Разница в ожидании. В первом варианте задача 14 дней из 20 просто лежит в чужой очереди. Кросс-функциональность существует ради того, чтобы этих очередей не было.

T-shaped специалисты

Здесь возникает возражение: «у нас в команде один фронтендер, если ему прилетят три задачи, он всё равно станет узким местом». Верно. Ответ — T-shaped специалисты.

Буква T — метафора. Вертикальная черта — глубокая экспертиза в одной области. Горизонтальная — рабочие навыки в смежных: не «умею как профи», а «могу подхватить и не сломать».

I-shaped (узкий)T-shaped
«Я бэкендер, я вёрстку не трогаю»«Основное — бэкенд, но простую форму сверстаю и тест напишу»
Простаивает, когда нет задач его профиляБерёт то, что сейчас блокирует команду
Его отпуск останавливает половину работЕго отпуск команда переживает
Спринт срывается из-за очереди к одному человекуПиковая нагрузка размазывается

Речь не о том, чтобы все стали одинаковыми универсалами — это как раз путь к посредственности во всём. Глубина остаётся. Но когда в конце спринта три задачи ждут тестирования, а разработчики сидят без дела, T-shaped команда просто садится тестировать. I-shaped — беспомощно смотрит и потом объясняет на ретро, что «тестирование — узкое место».

Самоорганизация и её пределы

Слово «самоорганизация» многих пугает: звучит как анархия. Ничего подобного. У самоорганизации очень чёткие границы.

Что команда решает сама

  • Как реализовать задачу технически: архитектура, библиотеки, структура базы.
  • Кто чем займётся. Задачи берут, а не получают.
  • Сколько работы взять в спринт. Никто не может «дать» команде больше, чем она согласилась взять.
  • Как разбить историю на технические подзадачи.
  • Свои внутренние правила: код-ревью, стиль кода, как проводить стендап.

Что команда НЕ решает

  • Продуктовые приоритеты. Взять из бэклога задачу №9 вместо №2, потому что она интереснее, — нельзя. Порядок задаёт PO.
  • Планку качества. Definition of Done — общий контракт, а не то, что можно тихо понизить в трудном спринте.
  • Внешние рамки. Требования безопасности, законы, отраслевые стандарты, архитектурные соглашения компании. Самоорганизация живёт внутри них, а не поверх.
  • Состав команды, бюджет, зарплаты. Это обычно за пределами Scrum.

Definition of Done стоит выписать явно — это тот самый общий знаменатель, который держит планку без начальника:

DEFINITION OF DONE — команда «Каталог»

Задача считается готовой, если:
- код прошёл ревью минимум одного члена команды
- есть автотесты на новую логику, вся сборка зелёная
- работает в Chrome, Safari, Firefox и на мобильных
- нет новых ошибок в консоли и в Sentry
- обновлена документация API, если контракт менялся
- выкачено на staging и проверено PO

НЕ «готово»: «работает у меня локально», «осталось только протестировать»

Обратите внимание: последняя строка — про фразы, которые чаще всего звучат в конце спринта. DoD существует именно для того, чтобы их обезвредить.

Как это работает

На планировании PO приносит истории и объясняет, зачем они нужны. Команда задаёт вопросы, оценивает, решает, сколько влезет. Дальше PO уходит из процесса «как» и в течение спринта отвечает на вопросы, но не распоряжается.

На стендапе разработчики говорят не начальнику, а друг другу. Это тонкий момент, который видно сразу: если все смотрят на Scrum Master и рассказывают, что сделали за вчера, — это отчёт, и он бесполезен. Если смотрят на доску и обсуждают, что мешает довести до конца ближайшую задачу, — это планирование дня.

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

Частые ошибки

  • «Самоорганизация — значит, каждый сам за себя». Как раз наоборот: команда отвечает за цель спринта целиком. Ситуация «мои задачи готовы, а что там у тестировщика — не моя проблема» — это не самоорганизация, а её отсутствие.
  • Менеджер назначает задачи. «Петя делает бэкенд, Маша — фронт, Игорь — тесты». Через месяц никто не думает о продукте, все думают о своём куске.
  • Колодцы специализации. Каждый держится только за свою колонку на доске. В конце спринта пять задач висят на тестировании, а трое разработчиков «свободны». Лечится T-shaped развитием и правилом «стоп новым задачам, помогаем закрыть текущие».
  • Скрытая зависимость от внешнего отдела. Команда называется кросс-функциональной, но выкатка в продакшен — через заявку в другой отдел с ожиданием в пять дней. Значит, кросс-функциональности нет, а есть её видимость.
  • Команда из пятнадцати человек. Обычно означает, что там на самом деле две команды, которые мешают друг другу на одном стендапе.
  • Тихое понижение планки. «В этот раз без тестов, потом допишем». Не допишут. DoD — не переменная спринта.

Итоги

  • PO решает «что» и «зачем», команда — «как» и «сколько». Эта граница — основа всего Scrum.
  • Кросс-функциональность нужна не ради красоты, а чтобы задача не лежала в чужих очередях. Ожидание — главный пожиратель времени.
  • T-shaped специалист имеет глубину в своём и рабочие навыки в смежном. Он не даёт команде застревать на одном узком месте.
  • Самоорганизация не безгранична: приоритеты, планка качества и внешние рамки остаются снаружи.
  • Definition of Done — общий контракт качества, который нельзя понижать по ситуации.
  • Рабочий размер — 3–9 разработчиков. Больше — команда тонет в согласованиях.
Проверьте себя
1. Product Owner приносит задачу и добавляет: «сделайте это через очередь на RabbitMQ». Что здесь не так?
AНичего, PO имеет право задавать техническое решение — он отвечает за продукт
BPO перешёл границу: он решает «что» и «зачем», а способ реализации выбирает команда
CОшибка в том, что PO вообще принёс задачу, а не команда сама её нашла
DОшибка только в выборе технологии: надо было спросить архитектора
2. В конце спринта пять задач ждут тестирования, тестировщик перегружен, а трое разработчиков «свободны» и берут новые задачи. Что должна сделать самоорганизующаяся команда?
AВсё верно: каждый занимается своей специальностью, нельзя простаивать
BПопросить Scrum Master распределить задачи по людям
CОстановить взятие новых задач и помочь довести до готовности текущие
DПеренести незакрытые задачи в следующий спринт — так честнее