[Перевод] Как объяснить бабушке, что такое Agile за 15 минут с картинками
— закон Хофштадтера
![image](https://habrastorage.org/getpro/habr/post_images/bb7/994/4f2/bb79944f29a2dae905121351a2316053.png)
Самый просматриваемый ролик на YouTube по теме agile. 744 625 просмотров на момент публикации данной статьи. Легкий стиль изложения, картинки и всего 15 минут — лучшее что я видел. TED отдыхает.
Роли
![c3c6c76c6ea2472e9a050c3e28594da6.jpg](https://habrastorage.org/files/c3c/6c7/6c6/c3c6c76c6ea2472e9a050c3e28594da6.jpg)
Это Пэт, владелец продукта. Она не знает технических деталей, зато обладает видением общей картинки, знает, зачем мы делаем продукт, какие проблемы он будет решать и для кого.
![c6a43f774900492aaa93e98aa7a30845.jpg](https://habrastorage.org/files/c6a/43f/774/c6a43f774900492aaa93e98aa7a30845.jpg)
Это заинтересованные лица. Они будут использовать продукт, поддерживать его или будут как-то еще вовлечены в разработку.
![d6eaa14a4be54a67be69b7e8f57a53f8.jpg](https://habrastorage.org/files/d6e/aa1/4a4/d6eaa14a4be54a67be69b7e8f57a53f8.jpg)
Это пользовательские истории. В них выражены пожелания заинтересованных лиц. Например, «у системы бронирования авиабилетов у пользователя должен быть поиск по рейсам».
![6de3f668d57146188364cf55139f438b.jpg](https://habrastorage.org/files/6de/3f6/68d/6de3f668d57146188364cf55139f438b.jpg)
У заинтересованных лиц много идей, и Пэт помогает сделать из идей пользовательские истории.
![1aae8d8a7f92431a8d2d33de7d66b8bb.jpg](https://habrastorage.org/files/1aa/e8d/8a7/1aae8d8a7f92431a8d2d33de7d66b8bb.jpg)
Это команда разработчиков. Те, кто будет строить рабочую систему.
Пропускная способность
![ca7afc9bc968411ca77eccd3f61a21c4.jpg](https://habrastorage.org/files/ca7/afc/9bc/ca7afc9bc968411ca77eccd3f61a21c4.jpg)
Так как команда использует гибкую методологию разработки, они не копят все эти истории до большого релиза, наоборот, они выпускают их сразу и как можно чаще. Обычно они выпускают 4–6 пользовательских историй в неделю. Это их пропускная способность. Ее очень просто измерить — количество пользовательских историй за 7 дней.
Некоторые истории большие, их можно считать за две, некоторые маленькие, их можно считать за половину.
Для того чтобы поддерживать этот ритм и чтобы не завязнуть в ручном регрессивном тестировании, команда усиленно работает над автоматическим тестированиеми постоянной интеграцией. Поэтому на каждую фичу приходится писать автотесты, и большая часть кода имеет встроенные автотесты.
![6613f92271b14086b29388a3ac723cca.jpg](https://habrastorage.org/files/661/3f9/227/6613f92271b14086b29388a3ac723cca.jpg)
Проблема заключается в том, что заинтересованных лиц очень много и их запросы невозможно удовлетворить 4–6 историями в неделю.
Каждый раз когда мы реализуем пользовательскую историю, у них появляется еще несколько идей, из которых вытекает еще больше запросов.
Что произойдет, если мы будем делать все, о чем они нас просят? У нас будет перегруз.
![ec5ca2da8d64498883faa062b7fc135f.jpg](https://habrastorage.org/files/ec5/ca2/da8/ec5ca2da8d64498883faa062b7fc135f.jpg)
Допустим, команда возьмется сделать 10 новых историй за эту неделю.Если на входе 10, а на выходе 4–6, то команда будет перегружена. Будет спешить, переключаться между задачами, терять мотивацию, в итоге снижается производительность и качество. Это заведомо проигрышная стратегия.
Scrum и XP в этом случае используют метод «вчерашняя погода». Команда говорит: «За последнее время мы делали 4–6 фич в неделю, какие 4–6 фич мы будем делать на следующей неделе?»
Задача владельца продукта в том, чтобы грамотно выбирать, какие именно пользовательские истории будут реализованы на этой неделе.
Kanban рекомендует ограничиться несколькими задачами — WIP limit. Допустим команда рещает, что 5 — это приемлемое количество пользовательских историй, над которыми они смогут работать одновременно без перегруза, не перескакивая с одной на другую.
![52a320b0704b4d24b8958d1aae995df5.jpg](https://habrastorage.org/files/52a/320/b07/52a320b0704b4d24b8958d1aae995df5.jpg)
Оба эти подхода хорошо работают и оба они создают очередь задач, которые в Scrum называется Backlog, или приоритезированный список задач.
Этой очередью тоже необходимо управлять.Если заинтересованные лица запрашивают 10 историй в неделю, а команда реализует 4–6 историй, то эта очередь будет становиться все больше и больше. И скоро ваш Backlog будет расписан на полгода вперед. То есть одна история будет ждать выхода 6 месяцев.
Есть только один способ держать список задач под контролем — это слово «нет»
![9bd7f682806f4edaa106764254530c2e.jpg](https://habrastorage.org/files/9bd/7f6/828/9bd7f682806f4edaa106764254530c2e.jpg)
Это наиболее важное слово для владельца продуктом. Он должен тренировать его каждый день перед зеркалом.
Сказать «да» — легко. Но более важная задача — решать, что не надо делать и нести за это ответственность. Владелец продукта так же определяет последовательность, что делаем сейчас, а что позже. Это сложная работа и выполнять ее следует вместе с командой разработки и минимум одним заинтересованным лицом.
![4d5c042f74a84d76ba5034559253fb5c.jpg](https://habrastorage.org/files/4d5/c04/2f7/4d5c042f74a84d76ba5034559253fb5c.jpg)
Для того, чтобы правильно расставить приоритеты, владелец продукта должен понимать ценность каждой истории и ее объем.
Принятие решений
Некоторые истории крайне необходимы, а некоторые просто бонусные фичи. На разработку одних историй уйдет пару часов, на разработку других — месяцы.
Как соотносится размер истории и ее ценность? Никак. Больше не значит лучше. Ценность и сложность задачи — вот что помогает Пэт расставлять приоритеты.
Как владелец продукта определяет ценность и объем истории? Никак. Это игра в угадайку. И лучше в ней участвовать всем. Пэт постоянно общается с заинтересованными лицами, чтобы знать ценность каждой истории, общается с командой разработчиков, чтобы знать объем работ, но все это приблизительные догадки, никаких точных цифр. Вначале всегда будут промахи и это нормально. Гораздо большую ценность представляет общение, чем сверхточные цифры.
Каждый раз когда разработчики выпускают что то новое, мы узнаем больше информации и можем лучше ориентироваться.
Одной приоритезации недостаточно. Чтобы выпускать истории быстро и часто, нужно разбивать на кусочки, которые можно сделать за пару дней. Мы хотим чтобы в начале воронки были маленькие и четкие истории, а в конце — большие и неопределенные. Вовремя делать такую разбивку мы можем воспользоваться нашими последними открытиями относительно продукта и нужд пользователя. Это все называется очистка Backlogа.
Пэт проводит встречу по очистке Backlogа каждую среду с 11 до 12. Обычно на ней собирается вся команда и иногда несколько заинтересованных лиц. Содержание встреч бывает разным. Фокусировка на оценке, на разбивке историй, на критериях приемки.
Владелец ИТ-продукта должен постоянно со всеми общаться
Матерые владельцы продукта выделяют 2 компонента успеха: страсть к работе и общение. Какие задачи владелец продукта решает месте с командой.
Баланс между сложностью разработки и ценностью пользовательской истории
На ранней стадии балансу угрожает неопределенность и сразу несколько рисков.
Риски
Бизнес риск: «Правильную ли вещь мы делаем?»
Социальный риск: «Сможем ли мы сделать то что нужно?»
Технический риск: «Будет ли проект работать на данной платформе?»
Риски со стоимостью и сроками реализации: «Успеем ли и хватит ли денег?»
Знание можно рассматривать как противоположность риску. Когда неопределенность большая, мы фокусируемся на приобретении знаний — прототипах интерфейса, технических экспериментах,
Компромисс между ценностями знания и ценностями для клиента
С точки зрения заказчика кривая выглядит вот так:
![368788f9e7e14667a2c80899c668a439.jpg](https://habrastorage.org/files/368/788/f9e/368788f9e7e14667a2c80899c668a439.jpg)
![dde50753a2c945efa946080b9d64cb15.jpg](https://habrastorage.org/files/dde/507/53a/dde50753a2c945efa946080b9d64cb15.jpg)
С точки зрения ценности для заказчика эта кривая выглядит вот так. По мере того как неопределенности снижаются, мы можем концентрироваться на ценностях для заказчика. Мы знаем что и как делать. Остается только сделать. После того как реализовали основные истории, будем делать бонусные фичи или запускать новый проект.
Компромисс между краткосрочным и долгосрочным мышлением
![1485b79c7858438c9fb840c9963de952.jpg](https://habrastorage.org/files/148/5b7/9c7/1485b79c7858438c9fb840c9963de952.jpg)
Что реализовать в первую очередь? Срочно устранять ошибки или начать разрабатывать сногсшибательную фичу, которая поразит пользователей. Или делать сложный апгрейд платформы, который ускорит работу в будущем. Необходимо постоянно соблюдать баланс между реактивной и проактивной работой.
Делать правильные вещи, делать вещи правильно или делать быстро?
![2d1c660b0e9249deb23e47901f34cd5e.jpg](https://habrastorage.org/files/2d1/c66/0b0/2d1c660b0e9249deb23e47901f34cd5e.jpg)
В идеале — все три одновременно, но в реальности приходится выбирать.
![53fca2c79f3b4c3dac0aec1ef0294ccf.jpg](https://habrastorage.org/files/53f/ca2/c79/53fca2c79f3b4c3dac0aec1ef0294ccf.jpg)
Предположим мы здесь. Пытаемся создать идеальный продукт с помощью идеальной архитектуры. Если мы потратим много времени, мы можем не попасть в «маркетинговое окно» и у нас появятся проблемы с деньгами.
или
![c05c6a575f424f1983fe6ad972fec0f8.jpg](https://habrastorage.org/files/c05/c6a/575/c05c6a575f424f1983fe6ad972fec0f8.jpg)
Мы делаем быстро прототип продукта. Для краткосрочной перспективы это неплохо. В долгосрочной — мы получаем технический риск. И скорость разработки снизится до нуля.
или
![f8b08428fea74b08b3988f5231f38e08.jpg](https://habrastorage.org/files/f8b/084/28f/f8b08428fea74b08b3988f5231f38e08.jpg)
Мы вот здесь, создаем прекрасный храм в рекордные сроки. Но пользователю не нужен был храм, ему нужен был жилой фургон.
Между ролями в Scrum существует здоровое противостояние
![a82c0777b3b44c5ead0f6b391e953967.jpg](https://habrastorage.org/files/a82/c07/77b/a82c0777b3b44c5ead0f6b391e953967.jpg)
Владелец продукта фокусируется на построении правильных вещей. Команда фокусируется на том, чтобы строить вещи правильно. Scrum-мастер или agile-тренер фокусируется на сокращении цикла обратной связи.
Отдельно стоит подчеркнуть важность скорости, так ккак короткий цикл обратной связи ускоряет обучение. Это позволяет нам быстрее узнавать какие вещи правильные и как их правильно построить.
Компромисс между разработкой нового продукта и улучшением старого
![4280d0d6000b4a55aafca31f83d80b17.jpg](https://habrastorage.org/files/428/0d0/d60/4280d0d6000b4a55aafca31f83d80b17.jpg)
Продукт никогда не может быть полностью завершен, потому что ему постоянно нужны изменения. Когда команда начинает работу над новым продуктом, что происходит со старым? Передача продукта от одной команды к другой — очень затратно и рискованно. Обычно команда поддерживает старый продукт, разрабатывая новый. Поэтому скорее понятие «Backlog» относится не к продукту, а к команде. Backlog — это список вещей, которые хочет владелец продукта от команды. И набор историй для разных продуктов. Владельце продукта нужно постоянно выбирать актуальные для реализации.
График уничтожения историй
Время от времени, заинтересованные лица будут спрашивать у Пэт: «Когда выпустят мою фичу?» или «Сколько фич выпустят к рождеству?». Владелец продукта должен уметь управлять ожиданиями пользователя. И управлять ожиданиями реалистично.
![692705ae3ff44f31a447ecb16117d653.jpg](https://habrastorage.org/files/692/705/ae3/692705ae3ff44f31a447ecb16117d653.jpg)
Два тренда — оптимистичный и пессимистичный (можно на глаз). Расстояние между трендами показывает насколько нестабильна скорость работы команды. Со временем эти тренды стабилизируются и конус неопределенности будет уменьшаться.
Предположим, заинтересованное лицо спрашивает, когда вот эта фича будет сделана?
![359fddb884ae43529b823cb92338c170.jpg](https://habrastorage.org/files/359/fdd/b88/359fddb884ae43529b823cb92338c170.jpg)
Это вопрос с фиксированным содержанием и неопределенным сроком. Для ответа Пэт использует две линии тренда. Ответ — в апреле или мае.
![c792224448fe45ef94fdb256a6ab4209.jpg](https://habrastorage.org/files/c79/222/444/c792224448fe45ef94fdb256a6ab4209.jpg)
Заинтересованное лицо спрашивает Пэт: «Сколько будет сделано к рождеству?» Это вопрос с фиксированным сроком и неопределенным содержанием. Линии тренда отсекают на вертикальной шкале вероятный отрезок того, что успеют реализовать.
![90b973f222d243f9878820cd56d1b97d.jpg](https://habrastorage.org/files/90b/973/f22/90b973f222d243f9878820cd56d1b97d.jpg)
Заинтересованное лицо спрашивает : «Успеем ли мы сделать вот эти фичи к рождеству?» Это вопрос с фиксированными временными рамками и фиксированным содержанием. Ориентируясь на тренды, Пэт отвечает: «Нет». Добавляя: «К рождеству мы успеем сделать столько, а вот столько времени нам понадобится чтобы завершить всю эту работу полностью.»
Обычно лучше уменьшать содержимое проекта, чем увеличивать время. Если мы уменьшаем содержание, у нас будет возможность отодвинуть сроки. Мы можем выпустить кое-что здесь, а остальное — позже.
Владелец продукта делает расчеты еженедельно и использует исключительно эмпирические данные, а не выдает желаемое за действительное. Он честно говорит о неопределенности. Команда поддерживает темп работы, а Пэт не давит на них, заставляя ускориться.
Несколько команд
![b0a1b3d404de47048646f5556a1bc1ee.jpg](https://habrastorage.org/files/b0a/1b3/d40/b0a1b3d404de47048646f5556a1bc1ee.jpg)
Пусть у нас несколько владельцев продукта и несколько команд. Модель та же — управление пропускной способностью, коммуникация с заинтересованными лицами, принятие решений по поводу отклонения пользовательских историй. Скорость равна сумме скоростей всех команд. Прогнозирование может быть общее или по каждой команде. У владельцев продуктов появляется дополнительная задача — общение с другими владельцами продукта. Нужно организовать работу над Backlogами так, чтобы минимизировать зависимости и обеспечить синхронизацию. В больших проектах требуется Главный владелец продукта (CPO), чтобы синхронизировать всех остальных.
Большая картинка
Исходник — Agile Product Ownership in a nutshell
Поддержка публикации — компания Edison, которая разрабатывает электронные системы продаж билетов и федеральный каталог товаров и услуг.
А вот так в Edison разрабатывают продукты по гибкой методологии:
Комментарии (1)
25 октября 2016 в 15:13
0↑
↓
Все Agile-методологии выглядят просто потрясающе: на бумаге, в книжках, в презентациях, на видео.
Но в один прекрасный момент ты осознаешь себя сидящем на 4х часовом митинге, рядом с другими, такими же программистами с грустными глазами и мы все вместе раскрашиваем цветные бумажки, играем в карты и голосуем за фичи «ногами», просто потому что так «веселей».