
Учебник-повесть по гибкой разработке
«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%.
Ваша задача:
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.