Марк Лоффлер
Ретроспектива в Agile
Проверенные методы и инновационные подходы
Научный редактор Анастасия Макарова
Издано с разрешения Pearson Education, Inc.
Все права защищены.
Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Authorized translation from the English language edition, entitled Improving Agile Retrospectives: helping teams become more efficient, 1st edition; ISBN: 0134678346; by Loeffler, Marc; published by Pearson Education, Inc., publishing as Addison-Wesley Professional.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.
© Pearson Education, Inc., 2018
© Перевод на русский язык, издание на русском языке, оформление. ООО «Манн, Иванов и Фербер», 2020
Посвящается моим родителям
Предисловие Ютты Экстейн
Недавно я прочитала в газете историю, которая произошла с одним бизнесменом в Аммане, столице Иордании. В роскошном отеле, где он остановился, ради удобства гостей все шесть лифтов разместили рядом друг с другом. Однако такая забота о постояльцах вылилась в один большой недостаток: стоя слишком близко к одному лифту, человек не замечал, что другие кабины уже прибыли на этаж и он может ими воспользоваться. К сожалению, бизнесмен, о котором идет речь, об этом не догадывался и продолжал томиться в ожидании. А ведь для оценки ситуации ему достаточно было отступить на два шага назад.
Эта история иллюстрирует то, как мы склонны цепляться за уже принятое решение или за предыдущий опыт (ожидаем один определенный лифт). А затем слепо следуем проторенным путем («мы раньше поступали именно так» или «так было всегда»), вместо того чтобы критически оценить ситуацию.
Суть ретроспективы в том, чтобы остановиться, проанализировать выбранный путь и ради будущего прогресса внести небольшое (как правило) изменение. На самом деле такой подход у нас в крови, ведь правильное латинское название ныне живущих людей – Homo Sapiens Sapiens, то есть человек, который думает о мышлении (или думает дважды). Именно на этом базируется идея ретроспективы.
Часто, работая над проектами, отдельные члены группы знают или догадываются, как улучшить ситуацию, но у них не хватает времени для детального изучения возможных изменений. Так что все остается как прежде, и команда в результате успевает сделать еще меньше, попадая в порочный круг, который можно проиллюстрировать словами: «У нас нет времени точить пилы, мы должны пилить».
Ретроспективы должны рассматриваться как часть управления рисками. Постоянный анализ событий и внесение соответствующих корректировок означают, что риски можно быстрее выявить и эффективнее управлять ими. Несмотря на то что в основном ретроспективы используются в agile-разработке ПО для обеспечения гибкости, их регулярное проведение полезно и в других сферах. Отчасти это связано с тем, что все мы, как известно, учимся на ошибках, которые многие компании считают случайными и требуют, чтобы дальше «все было сделано правильно». Однако в современном мире умение распознать, что требуется изменить, – это не только значительная часть разработки ПО. И в других областях следует начинать с поиска оптимального способа достижения цели. Правда, для этого придется сначала пройти «неверным» путем, потому что иначе невозможно понять, что считать правильным.
Таким образом, оптимальные решения достигаются только через развитие системы. Вы вправе задать вопрос: «А зачем продолжать применять этот подход?» Просто сделайте исследование неотъемлемым компонентом и при разработке ПО, и во многих других областях.
Принятие культуры ошибок требует осознанного и постоянного обучения. Именно поэтому, благодаря ориентации на непрерывное развитие, ретроспективы способствуют становлению обучающейся организации. Однако их используют не только для поиска потенциальных улучшений. Ретроспективы также дают возможность понять, что работает хорошо и чего удалось достичь.
Членам команды иногда кажется, что все идет не так, как нужно, и они начинают разочаровываться. Ретроспективное изучение помогает повысить мотивацию людей, распознавая, какие из работ выполняются правильно и дают результат.
Автору этой книги удалось предложить читателям по-настоящему осмысленный обзор ретроспектив, который включает в себя не только проверенные конкретные методы, но и последние действительно полезные для работы разработки. Марк затрагивает непростые темы – например, распределенные, системные или ориентированные на решение ретроспективы – и делает их применимыми на практике.
Те, кто только знакомится с этим методом, найдут в его книге прочную практическую основу. А эксперты и фасилитаторы ретроспектив почерпнут в ней вдохновение и получат руководство для более эффективного структурирования сессий, таким образом способствуя непрерывному обучению и совершенствованию в организациях.
Насладитесь чтением этой книги, она поможет вам найти новый путь или скорректировать существующий!
Введение
Когда я сделал первую ретроспективу и начал использовать agile-фреймворки, то понял, что влюбился с первого взгляда. Проводить ретроспективы для создания непрерывного процесса улучшения – безусловно, плодотворная идея. Специальный, четко структурированный воркшоп через регулярные промежутки времени – это наилучший способ обсудить с товарищами по команде то, что произошло в последние недели и месяцы, а также подумать о возможных обновлениях, основанных на ваших открытиях. И я по-прежнему люблю это делать.
К сожалению, многие команды игнорируют потенциал этой практики или начинают использовать ее слишком поздно. Это напоминает мне одну из моих любимых метафор – о лесорубе. Представьте себе, как он валит деревья. Со временем работать становится все труднее. На каждое дерево требуются уже часы. Но он продолжает свое дело, так как обещал доставить определенное количество древесины. Чтобы выполнить обязательства, он трудится без перерывов, прихватывает вечера и даже выходные. А работа идет все медленнее. Если бы лесоруб нашел время для ретроспективы, то понял бы: достаточно просто заточить топор или купить бензопилу.
Так и в реальной жизни. Мы настолько заняты процессом, что не задумываемся, а нет ли способа выполнить свое дело быстрее, проще и лучше.
Для этого и существуют аgile-ретроспективы. Они помогают не застревать на текущей неоптимальной методике работы. Специализированные воркшопы подсказывают новые способы, которые могут существенно улучшить ситуацию. С моей точки зрения, agile-ретроспективы – краеугольный камень успешного непрерывного процесса совершенствования. Кроме того, это один из лучших инструментов для инициирования культурных изменений в организациях. Они помогают и в проведении обычных инициатив в области преобразований. Аgile-ретроспективы полезны даже в личной жизни. Например, в конце года я всегда провожу новогоднюю ретроспективу со своей семьей.
Поскольку agile-ретроспективы – не регулярные встречи, а воркшопы, следует учитывать некоторые важные детали, чтобы извлечь выгоду из этой технологии. В то же время, применяя результаты своих ретроспектив, учитесь преодолевать сопротивление в вашей организации. Если вы участвовали в одной или нескольких инициативах, то понимаете, о чем я говорю. Но думаю, вы купили книгу, чтобы получить ответы на свои вопросы. Здесь вы найдете все то, что поможет успешно проводить agile-ретроспективы и создавать непрерывный процесс улучшения.
Проведение большой agile-ретроспективы всегда связано с весельем, энергией, разнообразием, имеет четкую цель и учитывает систему, в которой вы находитесь. Я проведу вас по ступеням, которые помогут добраться до цели. Надеюсь, что моя книга покажется вам интересной и полезной.
Глава 1. Ретроспективы 101
Основная цель первой главы – познакомить вас с ретроспективами. Я расскажу, как их использовать в семейной жизни, покажу модель поэтапной организации процессов и дам несколько советов по наполнению этих этапов содержанием. В главе описано все необходимое для начала работы с первой ретроспективой. Итак, начнем.
Что такое ретроспектива
Ретроспектива (от лат. retrospectare) – это обзор, взгляд назад. Когда по ночам, лежа в постели, вы вспоминаете события минувшего дня – это ретроспектива. Если за семейным ужином дети рассказывают, как провели время в школе, а родители делятся впечатлениями о работе – это ретроспектива. Творчество художника, литератора или режиссера тоже можно рассматривать с точки зрения ретроспективы. Например, в рамках ретроспективных выставок демонстрируется целый ряд авторских работ, все важные произведения собраны в одном месте, чтобы дать полную картину творчества художника. Так можно получить общее впечатление и возможность сравнивать различные произведения искусства. Это было бы неосуществимо, имей мы доступ к одному-единственному примеру. Только получив целостное представление, можно оценить ситуацию и понять, почему художник поступил так, а не иначе.
Еще один вид ретроспективы есть на телевидении. В конце каждого года в рамках обзорных программ каналы конкурируют между собой, стремясь привлечь к участию в своих передачах самых веселых, красивых и известных людей. Но развлечение публики – приоритет для телевидения, и оно не слишком заботится о получении полной картины. Именно поэтому годовые «телеотчеты» довольно неоднородны и не позволяют делать выводы или рассматривать связи между различными событиями.
В этой книге словом «ретроспектива» я называю кое-что другое. Точно так же подразумевается взгляд в прошлое, но это только первый шаг. Задача – получить благодаря этому взгляду знания и понимание, которые помогут нам извлечь нужные уроки и правильно адаптироваться. Можно учиться как на успехах, так и на неудачах, а хорошее сделать еще лучше. Это сравнимо с эволюцией: то, что не сработало, вымирает, но все, способствующее сохранению видов, остается и развивается. В конце концов, каждая из таких адаптаций – не что иное, как эксперимент, потому что результат никогда точно не известен. В оптимальном случае эксперименты приводят к улучшению ситуации. Но иногда они только усугубляют ее, и это необходимо анализировать уже в следующей ретроспективе.
Каждую ретроспективу проводит фасилитатор. Он гарантирует, что группа достигнет поставленных целей, и помогает развивать практические результаты, которые станут основой для будущего успеха. Фасилитатор не является участником (правда, в небольших группах это правило не всегда соблюдается). Он сопровождает процесс, но не вовлекается в реализацию решений. Хороший фасилитатор необходим для успешной ретроспективы.
Такая ретроспектива была впервые описана Норманом Кертом в книге «Ретроспектива проекта. Как проектным командам оглядываться назад, чтобы двигаться вперед»[1].
Ретроспектива – это ритуальное собрание сообщества в конце проекта для обзора событий и изучения опыта. Никто не знает всей истории проекта. У каждого человека есть часть истории. Ритуал ретроспективы – это коллективное рассказывание истории и добыча опыта для мудрости.
В своей книге Керт объясняет, чем ретроспективы отличаются от так называемых посмертных и извлеченных уроков. Главная разница в том, что ретроспективы фокусируются на будущих позитивных действиях и используют их в качестве катализатора изменений. Они представляют собой не конец проекта, а вехи в процессе постоянного совершенствования.
В 2001 году несколько человек собрались на горнолыжном курорте, где и написали манифест для гибкой разработки программного обеспечения[2]. Основа манифеста состоит из четырех пар ценностей и двенадцати принципов, последний из которых отлично описывает то, что происходит в ретроспективе.
Команда должна систематически анализировать возможные способы улучшения эффективности и соответственно корректировать стиль своей работы.
Этот принцип – одна из главных причин того, что agile-сообщество с энтузиазмом включило ретроспективы в свой рабочий процесс. Люди поняли: не обязательно ждать окончания проекта, чтобы узнать, что произошло, и внести нужные изменения. Достаточно проводить ретроспективу после каждой итерации (то есть определенного периода). Этот интервал не должен превышать одного месяца, иначе есть риск слишком растянуть цикл обратной связи.
Слово «итерация» происходит от латинского iterare, что означает «повторить». Итерации широко применяются там, где задачи решаются пошагово. В информатике итерация – это название процесса выполнения различных шагов до тех пор, пока не будет достигнуто требуемое условие (например, цикл FOR). В Scrum итерация называется «спринт».
Я использую термин «итерация» для описания процесса выполнения проекта в четко определенных, коротких, повторяющихся шагах. После каждой итерации вы останавливаетесь, чтобы определить, была ли и в какой степени реализована цель проекта, и при необходимости адаптируете исходный план. Цель – свести к минимуму риск неопределенности и неожиданностей. Та же процедура может использоваться в управлении изменениями.
Проведение ретроспектив позволяет наладить процесс непрерывного совершенствования, который постоянно проверяет, на правильном ли вы пути, а также дает возможность оперативно вмешаться и внести необходимые изменения. Выделив время для размышлений, вы сумеете решить проблему немедленно, не дожидаясь окончания процесса. Если не проводить ретроспективы до конца проекта, то вы рискуете к началу следующего забыть то, что узнали в текущем. Вы также получаете возможность реализовать улучшения в каждой итерации.
Слово agile имеет латинское происхождение, и его примерные значения «делать» или «действовать». Как уже было сказано, эта методология основана на 12 принципах agile-манифеста[3].
Суть agile-манифеста в следующем: мы постоянно открываем для себя более совершенные методы разработки программного обеспечения, занимаясь им непосредственно и помогая в этом другим. Благодаря проделанной работе мы смогли осознать, что:
• люди и взаимодействие важнее процессов и инструментов;
• работающий продукт важнее исчерпывающей документации;
• сотрудничество с заказчиком важнее согласования условий контракта;
• готовность к изменениям важнее следования первоначальному плану.
Иными словами, не отрицая важности того, что записано справа, мы все-таки больше ценим то, что слева.
Соответствующие 12 принципов выглядят так:
1. Наивысшим приоритетом для нас является удовлетворение потребностей заказчика благодаря регулярной и ранней поставке ценного программного обеспечения.
2. Изменение требований приветствуется даже на поздних стадиях разработки. Agile-процессы позволяют использовать изменения для обеспечения заказчику конкурентного преимущества.
3. Работающий продукт следует выпускать как можно чаще, с периодичностью от пары недель до пары месяцев.
4. На протяжении всего проекта разработчики и представители бизнеса должны ежедневно работать вместе.
5. Над проектом должны трудиться мотивированные профессионалы. Чтобы работа была сделана, создайте условия, обеспечьте поддержку и полностью доверьтесь им.
6. Непосредственное общение – наиболее практичный и эффективный способ обмена информацией как с самой командой, так и внутри нее.
7. Работающий продукт – основной показатель прогресса.
8. Инвесторы, разработчики и пользователи должны иметь возможность поддерживать постоянный ритм бесконечно. Agile помогает наладить такой устойчивый процесс разработки.
9. Непрерывное внимание к техническому совершенству и качеству проектирования повышает гибкость проекта.
10. Простота – искусство минимизации лишней работы – крайне необходима.
11. Самые лучшие требования, архитектурные и технические решения рождаются у самоорганизующихся команд.
12. Команда должна систематически анализировать возможные способы улучшения эффективности и соответственно корректировать стиль своей работы.
Как видите, некоторые из принципов непосредственно нацелены на разработку программного обеспечения. Однако большинство можно легко применять и в других областях. Аgile-манифест основан на фундаментальной идее о том, что мы живем в сложном и непредсказуемом мире. Так что создание детального плана проекта на несколько лет или даже месяцев вперед не имеет смысла. Как известно большинству людей, которые когда-либо составляли план проекта, после очень короткого времени он лишь отдаленно соответствует реальности.
Agile-разработчики понимают эту ситуацию и стараются минимизировать ее эффект, используя короткие циклы обратной связи и тесно сотрудничая с заказчиком.
На основе agile-манифеста были разработаны различные структуры и процессы. Среди них XP, DSDM, Open UP и, конечно же, очень популярный сегодня Scrum. В то же время идеи agile-разработки программного обеспечения распространились и на другие сферы.
Например, в своей книге The Leader’s Guide to Radical Management Reinventing the Workplace for the 21st Century («Руководство лидера по радикальному управлению: переосмысление рабочего места в XXI веке»)[4] Стивен Деннинг описывает применение идей agile-манифеста в области управления.