12+
Sprint Zero

Объем: 96 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

Учебник-повесть по гибкой разработке

«Agile — это не ритуалы по расписанию. Это то, как вы говорите, когда выходите из переговорной комнаты после дейли.»

— Элина, тимлид

Введение: Почему Agile иногда терпит крах (и как его спасти)

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

Прошло более двадцати лет.

Agile стал стандартом.

Но в сотнях команд по всему миру он превратился в ритуал без смысла:

— Ежедневные стендапы, где все говорят: «работаю» и молчат.

— Ретроспективы, на которых пишут: «всё норм».

— Jira, где задачи горят красным, а команда — от выгорания.

Agile терпит крах не потому, что плох, а потому что идея стала формально ритуалом.


Эта книга — попытка вернуть Agile к его сути.

Через историю одной небольшой команды, которая начинает с провала — и заканчивает пониманием, что Agile — это не то, что вы делаете, это то, как вы думаете.

Как читать эту книгу

Книга состоит из восьми глав, каждая из которых — одна неделя жизни команды.

После каждой главы — раздел:

— «Что мы узнали» — ключевые уроки

— «Вопросы для обсуждения»

— «Практическое задание»


Вы можете читать книгу:

— Как небольшую повесть — чтобы прожить путь команды;

— Как интро учебник — для курсов по Agile, управлению проектами, soft skills;

— Как кейс — для обсуждения в командах, на коуч-сессиях.


Книга подойдёт студентам, junior-разработчикам, тимлидам и всем, кто хочет понять: как Agile работает на самом деле — и почему часто не работает.

Часть I. Падение: Форма без смысла

Когда процессы есть, а команды — нет

Здесь есть иллюстрация

Зарегистрируйтесь или войдите, чтобы увидеть ее и другие изображения

Глава 1. «Всё по плану»

Компания «Нейросфера» запускает амбициозный стартап — приложение для персонализированного обучения с ИИ. Всё должно быть готово к демо-дню через 5 месяцев.

В проект приходит Элина, новый тимлид, только что закончившая курс по Agile. Она уверена: если внедрить Scrum, всё пойдёт как по маслу.

Понедельник, 9:00. Переговорка «Скай»

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

Элина стояла у маркерной доски. Маркеры лежали по цветам: чёрный — для заголовков, красный — для блокеров, зелёный — для готового. Рядом на столе — распечатанный чек-лист Sprint Zero и ноутбук с открытой Jira. Она перечитала сценарий встречи три раза. В голове всё сходилось: бэклог приоритизирован, ёмкость команды посчитана, цель спринта сформулирована. Осталось только запустить.

Команда собиралась неохотно.

Дмитрий, старший разработчик, вошёл последним, наушники ещё в ушах. Сел в дальний угол, развернул ноутбук так, что экран стал барьером между ним и остальными. Лиза, Product Owner, заняла место у розетки, телефон уже в руке — переписка с Игорем не заканчивалась с пятницы. Катя, младший разработчик, проскользнула первой, села у стены, прижала к груди тонкий блокнот. Взгляд — в пол.

— Доброе утро, — Элина щёлкнула колпачком маркера. — Сегодня у нас Sprint Zero. Планируем первый рабочий спринт. Цель — собрать MVP: регистрация, профиль, первый модуль обучения. Демо через пять недель.

Фразы вышли ровно. По учебнику. В ответ — тишина. Не пауза для вопросов, а та самая, когда люди слышат план, но не верят, что он имеет к ним отношение.

— Бэклог готов, — Элина кивнула на проектор. — Двадцать семь историй. На спринт берём тридцать пять поинтов. Команда на прошлом проекте тянула такой объём, справимся.

Дмитрий наконец поднял глаза от монитора.

— Чья ёмкость? — спросил он. Голос ровный, без вызова, просто констатация. — Мы вместе ни одного спринта не закрыли. Velocity не считается по чужим цифрам.

Элина моргнула. В конспекте было написано «опираться на исторические данные». Истории не было.

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

— Не получится, — Лиза не отрывалась от телефона. — Игорь ждёт демо уже через неделю. Не через пять. Говорит, инвесторы летят в четверг, нужно показать, что продукт дышит.

Катя шевельнулась.

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

— Игорь в курсе, — отозвалась Лиза. — Напишет админам. К обеду даст.

Дмитрий хмыкнул. Звук короткий, сухой.

— Доступа нет. Дизайна в Figma нет — я видел только мудборд. Архитектуры нет — мы даже не решили, монолит или микросервисы, а демо — есть. — Он обвёл рукой доску с аккуратными колонками. — Получается симуляция. Для галочки.

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

Она подошла к доске. Стерла «Цель: собрать MVP». Маркер скрипнул по пластику. Написала: «Показать демо Игорю». Получилось коряво. Но честно.

— Ладно, — выдохнула она. — Берём. Разберёмся на ходу. Daily начнём завтра. Кто что берёт?

— Я возьму регистрацию, — сказала Катя. — Если дадут доступ.

— Бэкенд на мне, — буркнул Дмитрий, уже возвращаясь в код. — Но без архитектуры я буду писать в воздух.

— Я согласую макеты, — Лиза наконец убрала телефон. — И потороплю админов.

Встреча заняла двенадцать минут. Никто не задал вопросов. Никто не поднял риски вслух. Разошлись молча. Дмитрий сразу надел наушники. Лиза вышла в коридор, печатая ответ Игорю. Катя осталась сидеть, перечитывая задачу в Jira, словно надеясь, что текст изменится.

Дейли не состоялось. Не о чем было синхронизироваться. Спринт начался. Не с фундамента, а с обещаний.

📚 Что мы узнали

Agile не отменяет подготовки.

Sprint Zero — это не «время на раскачку». Это полноценный спринт, где закладывается база: доступы, репозитории, архитектура, Definition of Ready. Без него следующие итерации превращаются в тушение пожаров.

Velocity — локальная метрика. Брать цифры с другого проекта или «со среднего по рынку» — ошибка. Ёмкость считается только для конкретной команды в текущем контексте.

Agile ломается без психологической безопасности. Команда промолчала о рисках, потому что не доверяла новому тимлиду, боялась показаться некомпетентной и видела, что Product Owner не защищает сроки.

Product Owner — не курьер. Его задача — не транслировать хотелки заказчика, а управлять ожиданиями, фильтровать поток и говорить «нет», когда это спасает продукт.

MVP требует условий. Нельзя собрать минимально жизнеспособный продукт, если нет базовых зависимостей: дизайн, доступы, понятная архитектура. Agile не отменяет инженерную дисциплину.

❓ Вопросы для обсуждения

— Почему команда не озвучила риски на планировании? Чья это ответственность: тимлида, PO или каждого участника?

— Можно ли считать Sprint Zero проведённым, если команда не договорилась о Definition of Ready и не проверила внешние зависимости?

— Как Элине стоило отреагировать на реплику Дмитрия про «симуляцию»? Что изменило бы динамику встречи?

— Почему Дмитрий выбирает позицию внешнего наблюдателя? Это выгорание, опыт прошлых провалов или отсутствие вовлечённости в продукт?

— Допустимо ли брать задачи в спринт, если ключевые блокеры (доступы, дизайн) не закрыты? Как зафиксировать это в Jira, чтобы не терять прозрачность?

🛠️ Практическое задание

Соберите чек-лист Sprint Zero. Представьте, что вы запускаете новую команду. Составьте список из 10 обязательных условий, которые должны быть выполнены до старта первого рабочего спринта.

Пример:

☐ Назначен Product Owner и утверждён владелец технического решения

☐ Настроены репозитории, CI/CD и права доступа

☐ Проведён kick-off: команда понимает цель продукта и границы MVP

☐ Согласован Definition of Ready для задач.

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

Глава 2. «Daily Standup: 7 минут молчания»

Вторник, 10:00. Переговорка «Скай»

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

Элина обвела взглядом участников. Лэптопы открыты — экраны стали щитами. Дмитрий уткнулся в код, отгородившись углом монитора. Лиза держала телефон в руке, большой палец рефлекторно скользил по экрану. Катя стояла чуть в отдалении, у стены, прижав блокнот к груди так плотно, что побелели костяшки.

— Начинаем, — Элина посмотрела на таймер на телефоне. — По кругу. Дмитрий?

Дмитрий не поднял головы. Звук его клавиатуры был ритмичным и отрывистым.

— Пишу бэкенд, — сказал он, не отрываясь от экрана. — То, что в задаче.

— Есть блокеры? — уточнила Элина.

— Нет.

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

— Катя?

Катя вздрогнула. Вцепилась в угол блокнота сильнее.

— Я… разбираю форму регистрации, — начала она тихо. Голос дрогнул на втором слове, она поправила его, сделав тише. — Но у меня нет доступа к базе. И дизайн… макеты в Figma не совпадают с тем, что обсуждали. Там старая версия полей.

Элина кивнула. Это была зацепка. Проблема, которую можно решить за встречу.

— Лиза, — повернулась она к Product Owner. — Доступы Кате и актуальные макеты. Это критично, чтобы она двигалась дальше. Когда будет?

Лиза моргнула, отрываясь от переписки в мессенджере. Взгляд был расфокусированным.

— Я написала Игорю утром, — ответила она, и в голосе прозвучала привычная усталость. — Он обещал передать данные до обеда. А по дизайну… он вчера вечером попросил перекрасить кнопку «Зарегистрироваться» в фирменный цвет бренда. Я ещё не согласовала с дизайнером, как это повлияет на вёрстку.

— «До обеда» — это расплывчато, — отозвался Дмитрий, наконец подняв глаза. В них не было злости, только холодная констатация. — Если Катя не начнёт до обеда, она не успеет к концу спринта. Зависимость есть.

Лиза пожала плечами, жест отчаянный и короткий.

— Я делаю что могу. Игорь сказал — «в ближайшее время». Я не могу заставить его работать быстрее.

Элина почувствовала, как встреча скатывается в привычное русло: констатация проблемы без плана решения.

— Ладно, — перебила она. — Мой ход. Вчера я настроила видимость задач в Jira, добавила права доступа. Сегодня встречаю нового DevOps-инженера, будем поднимать CI/CD пайплайн.

Она замолчала. Таймер показывал 6 минут 40 секунд.

— Всё? — спросила она.

Никто не ответил. Дмитрий уже вернулся к терминалу. Лиза снова уткнулась в телефон, что-то быстро печатая. Катя стояла, глядя в пол, не решаясь добавить ничего больше.

— Всем спасибо, можем расходиться.

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

Обеденный перерыв. Кухня

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

— Можно с тобой поговорить?

Элина обернулась. Катя стояла в дверном проёме. Теребила край рукава свитера, взгляд скользил по полу, избегая прямого контакта.

— Конечно, — Элина отставила стаканчик. — Что случилось?

— Я не хотела при всех… — Катя понизила голос. — Но я не понимаю, зачем мы это делаем. Стоим по утрам, говорим «пишу код», «нет блокеров». Но код я писать не могу, потому что нет базы, а на дейли мы просто отчитываемся, будто ничего не изменилось.

— Это синхронизация, — ответила Элина автоматически. Слова прозвучали сухо, как из учебника. — Чтобы знать статусы друг друга.

— А если я скажу, что не справляюсь? — Катя подняла глаза. В них стояла тревога, острая и детская. — Меня же сразу запишут в балласт. Дмитрий вчера говорил, что джуны в команде — это обуза, пока не научатся решать задачи сами. Я боюсь, что если подниму руку и скажу «я не знаю» — меня уберут с задачи. Или вообще с проекта.

Элина молчала. Кофе перелился через край, капля упала на стол.

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

— Он думает, — Катя кивнула, и плечи её опустились. — Я слышала. Я просто… не знаю, что делать. Утро начинается, я сажусь за комп, а работать не могу. И чувствую себя виноватой.

Катя быстро развернулась и вышла, не дожидаясь ответа.

Элина осталась стоять. В голове крутилась фраза Кати: «Мы просто отчитываемся». Она вспомнила свой утренний отчёт про Jira и CI/CD. Ей самой это не было нужно. Команде это не помогло. Это была ритуальная дань процессу. Daily без синхронизации — это просто ещё одна встреча, которая ворует время.

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

📚 Что мы узнали

Daily Standup — это не отчёт начальству

Главная цель встречи — синхронизация команды, а не отчёт перед менеджером. Если каждый говорит «я работаю, всё ок», но при этом никто не знает о проблемах соседа — встреча бесполезна.

❌ Формат отчёта: «Вчера делал А, сегодня делаю Б, проблем нет».

✅ Формат синхронизации: «Я застрял на задаче А, потому что жду дизайн. Лиза, можешь ускорить процесс?»

Психологическая безопасность — фундамент Agile

Команда не будет говорить о реальных проблемах, если боится последствий.

Страх показаться некомпетентным («Я не знаю»).

Страх критики («Джуны — обуза»).

Страх конфликта с заказчиком («Игорь обещал, я не могу давить»). Без доверия Agile превращается в театр, где все играют роли счастливых работников.

Блокеры — это не только технические проблемы

«Нет доступа» — это симптом. Причина глубже:

Отсутствие ответственности PO за закрытие зависимостей.

Давление заказчика, которое PO не фильтрует.

Токсичная атмосфера, где junior боится поднять руку.

Scrum Master должен не просто фиксировать блокеры, а устранять их причины.

Product Owner — часть команды, а не наблюдатель

Лиза присутствовала на дейли, но не участвовала в решении проблем. Она переложила ответственность на Игоря («Он обещал»), вместо того чтобы сказать: «Я возьму это на себя и решу к 12:00». PO должен активно помогать команде убирать препятствия на пути к цели спринта.

Церемонии должны приносить пользу

Если встреча длится 7 минут и не меняет ситуацию — её нужно менять. Возможно, команде нужен другой формат общения, или проблема не в процессе, а в доверии. Agile требует инспекции и адаптации даже к своим собственным правилам.

❓ Вопросы

— Почему Катя не озвучила свою проблему на дейли? Что в поведении команды или лидера спровоцировало этот страх?

— Как Элине стоило реагировать на слова Дмитрия про «джунов-обузу» в моменте?

— Является ли фраза Лизы «Игорь обещал» достаточным ответом на блокер? Как PO должен управлять ожиданиями команды?

— Можно ли считать дейли успешным, если оно уложилось в таймбокс, но не решило ни одной проблемы?

— Как трансформировать дейли из «отчёта» в «план действий на день»?

🛠️ Задание

Перепишите сценарий дейли

Представьте, что вы — Scrum Master. Перепишите диалог из главы так, чтобы встреча стала полезной. Условия:

Каждый участник получает помощь или чёткий план.

Выявлены реальные зависимости.

PO берёт на себя обязательство по блокерам.

Junior (Катя) чувствует поддержку, а не страх.

Пример начала:

Элина: «Ребята, давайте не просто перечислять задачи. Скажите сразу: кому нужна помощь? Кого вы ждёте?»

Дмитрий: «Я жду архитектуру. Без неё я пишу в воздух. Катя, ты можешь пока взять задачу по валидации формы, она не зависит от бэкенда?»

Задание: Допишите диалог до конца. Покажите, как команда переходит от отчётности к сотрудничеству.

Глава 3. «Бэклог — это не Jira»

Среда, 15:20. Переговорка «ХИММЕЛЬ»

Дверь открылась резко. Вошёл Игорь. В руке — планшет, на лице — та самая деловая собранность, которая появляется у заказчиков после встречи с инвесторами. Он не поздоровался.

— Лиза, срочно, — бросил он, ставя планшет на стол. — Инвесторы спрашивают про ИИ. Где персонализация? Где адаптивные сценарии? Они ждут не форму регистрации, а умный продукт.

Лиза дёрнулась от звука. Ноутбук на коленях съехал на сантиметр.

— Мы работаем по плану, — начала она, но голос прозвучал неуверенно. — В бэклоге есть задачи по рекомендациям. Они во втором спринте…

— Во втором? — Игорь поднял брови. — Демо через четыре недели. Я обещал показать рабочий прототип с нейросетью. Не через месяц. Сейчас.

Он взял стилус, открыл Jira на общем экране и начал быстро добавлять карточки. Пальцы стучали по стеклу.

— «Прогноз успеваемости» — пять поинтов. «Адаптивный путь» — восемь. «Чат-наставник» — тринадцать. «Анализ внимания» — двадцать. — Он отстранился. — Семнадцать задач. Вкидывайте в текущий спринт. Это приоритет номер один.

В комнате стало тихо. Слышно было, как гудит системный блок проектора и где-то в коридоре гудит чайник.

Лиза перевела взгляд на Элину. Та стояла у доски, маркер в руке, колпачок уже снят.

— Игорь, — Лиза помедлила. — У нас уже тридцать пять поинтов. Мы не закрыли базовый функционал. Мы не можем просто добавить семнадцать задач. Это сломает спринт.

— Вы же Agile, — Игорь пожал плечами. — Гибкость. Выкиньте что-нибудь ненужное. Регистрацию, например. Кому она нужна без ИИ?

Дмитрий, сидевший в углу, хмыкнул. Не громко, но достаточно, чтобы все услышали.

— Понятно. Делаем не для пользователей, а для слайда инвесторам.

Игорь мельком взглянул на него, ничего не ответил. Кивнул сам себе, забрал планшет.

— Жду результат через четыре недели. Удивите.

Дверь закрылась.

Лиза смотрела на экран. Новые карточки уже висели в колонке «В работе». Красные флажки. Метки «Срочно». Они перекрывали старые задачи, как заплатки на тонкой ткани.

Катя, сидевшая у стены, подала голос тихо:

— А мне что делать с формой?

Все повернулись к Элине. Та медленно подошла к доске, взяла губку. Стерла надпись «Цель спринта: MVP». Белая пыль осыпалась на пол.

Она хотела написать что-то мотивирующее. Рука не слушалась. Вместо этого вывела:

Цель спринта: угодить заказчику?

Вопросительный знак вышел неровным.

Элина повернулась к Лизе. Та смотрела в стол, пальцы теребили край свитера.

— Лиза, — Элина присела на край стола, чтобы оказаться с ней на одном уровне. — Ты правда считаешь, что эти задачи важнее того, что мы планировали?

Лиза подняла глаза. В них не было злости. Была усталость.

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

— Ты Product Owner, — напомнила Элина. — Не курьер.

Лиза усмехнулась. Криво.

— Владелец продукта? — Она развела руками. — У меня нет доли в проекте. Нет права вето. Есть Jira и Игорь, который добавляет задачи, когда ему вздумается. Если я скажу «нет» — меня спросят, почему сорвали демо, а если скажу «да» — команда будет разгребать.

— Скажи, что это не соответствует цели спринта, — предложила Элина. — Что у нас нет ресурсов. Что мы не успеем.

— Кому это интересно? — Лиза посмотрела на неё в упор. — Игорю нужна картинка для инвесторов. Красивая. С ИИ. Что там под капотом — его не волнует.

— Тогда ты не Product Owner, — сказала Элина. Голос прозвучал ровно, без нажима. — Ты транслируешь хотелки. PO решает, что важно для продукта. Для пользователя. Для команды. Он фильтрует поток. Говорит: «Это делаем, это — потом, это — никогда», а транслирующий… просто носит конверты. Не вскрывает. Не читает.

Лиза молчала. Смотрела на свои руки. Пальцы перестали дрожать. Замерли.

— Я не хотела быть транслирующим, — сказала она наконец. — Когда я училась, думала про стратегию. Про видение, а на деле — бегаю за доступами, согласовываю цвет кнопки и слушаю, что сказал Игорь.

— Я знаю, — тихо ответила Элина.

— И что теперь? — Лиза подняла взгляд. В нём появилась растерянность, но уже без прежней обречённости.

Элина посмотрела на доску, на кривой вопрос, на красные карточки в Jira.

— Не знаю, — честно сказала она. — Но если мы не начнём решать, что важно, а что нет — за нас это сделают другие. И тогда мы действительно станем курьерами. Навсегда.

Лиза кивнула. Медленно.

В коридоре снова зазвонил телефон. Кондиционер гудел. Кофе в чашках давно остыл. Спринт продолжался. Но цель исчезла.

📚 Что мы узнали

Бэклог — это не свалка задач. Это стратегия

Product Backlog — иерархия ценности, а не журнал входящих требований. Хороший бэклог отсортирован по приоритету, основан на гипотезах о пользе для пользователя и пересматривается регулярно.

❌ Формальный подход: «Заказчик сказал — делаем»

✅ Agile-подход: «Зачем это нужно? Для кого? Как проверим?»

Product Owner — лидер, а не администратор

PO должен защищать команду от хаотичных изменений, объяснять контекст задач и принимать решения о приоритетах. Если PO всегда соглашается с заказчиком — он не работает, он транслирует.

Agile ≠ «делать всё, что просят»

Гибкость — это осознанная адаптация, а не реакция на давление. Agile требует инспекции («Это действительно важно?»), адаптации («Как переприоритизировать?») и смелости сказать «нет», когда запрос противоречит цели продукта.

MVP проверяет гипотезы, а не технологии

Игорь хочет «ИИ», но цель должна быть в проверке ценности для пользователя. Например: «Если мы покажем прогноз успеваемости, ученик будет чаще возвращаться в приложение». Технология — инструмент, а не цель.

Jira — инструмент, а не истина

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

❓ Вопросы

— Кто должен определять приоритеты в Agile-команде: заказчик, PO или вся команда? Где проходит граница ответственности?

— Как Лиза могла бы мягко, но чётко отказать Игорю, не сорвав отношения? Какие аргументы сработали бы лучше всего?

— Что делать, если заказчик не понимает разницу между гибкостью и хаосом? Как объяснить ему правила игры?

— Можно ли считать спринт успешным, если команда сделала всё, что просили, но продукт не решает задачу пользователя?

— Почему Дмитрий называет процесс «симуляцией для слайда»? Насколько его скепсис обоснован в данном контексте?

🛠️ Задание

Переприоритизируйте бэклог

У вас есть текущий бэклог (условно 20 задач). Заказчик добавил 5 новых — с пометкой «очень срочно». Ваш спринт уже перегружен на 30%.

Ваша задача:

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.