Благодарим за помощь в создании книги компанию ScrumTrek в лице управляющего партнера компании Алексея Пименова
Переводчик А. Олейник
Редактор К. Бычкова
Руководитель проекта А. Василенко
Корректор Е. Аксёнова
Компьютерная верстка А. Абрамов
Дизайн макета и обложки Никола Корач
© Gojko Adzic, 2012
© Provoking Thoughts, 2012
© Издание на русском языке, перевод, оформление. ООО «Альпина Паблишер», 2017
Все права защищены. Произведение предназначено исключительно для частного использования. Никакая часть электронного экземпляра данной книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, включая размещение в сети Интернет и в корпоративных сетях, для публичного или коллективного использования без письменного разрешения владельца авторских прав. За нарушение авторских прав законодательством предусмотрена выплата компенсации правообладателя в размере до 5 млн. рублей (ст. 49 ЗОАП), а также уголовная ответственность в виде лишения свободы на срок до 6 лет (ст. 146 УК РФ).
Предисловие
Разработка программного обеспечения внутри компаний за редкими исключениями уже давно выделилась в самостоятельную функцию. При этом коммуникация с остальными подразделениями организации, чье функционирование программисты призваны поддерживать своими разработками, зачастую оставляла желать лучшего. Сотрудники других отделов могли в целом не понимать, что такое программное обеспечение, а разработчики, в свою очередь, быть недостаточно осведомленными о потребностях бизнеса, которым занимается компания.
С одной стороны, проблемы с коммуникацией слишком часто приводили к тому, что на выходе получался совсем не тот продукт, который был необходим, или (в лучшем случае) не совсем тот. С другой – они становились причиной неэффективного управления проектами и неоправданного роста затрат. Внедрение гибких методологий позволило существенно ускорить циклы обратной связи и успевать изменять продукт под потребности до того, как закончится бюджет на разработку.
Нам необходимы подходы, которые помогут разработчикам стать полноправными партнерами других подразделений и создавать продукты, с энтузиазмом принимаемые пользователями, а это, в свою очередь, приведет к успеху в бизнесе. В основе сотрудничества разработчиков и заказчиков должна лежать именно эффективная коммуникация. Такой коммуникации мешает различный взгляд на вещи и даже разный словарь, используемый разработчиками программного обеспечения и всеми остальными. Поэтому важно научиться визуализировать проблемы, над решением которых приходится работать совместно, – это даст возможность осмысленно участвовать в разработке независимо от своей предметной области, будучи при этом уверенными, что мы говорим об одном и том же. В качестве инструмента визуализации в гибких методологиях используется принцип «работающее ПО». Его смысл в том, что разработчики быстро реализуют небольшой набор пожеланий к продукту, и это сразу же обеспечивает обратную связь от реальных пользователей. Идеология «работающего программного обеспечения» действительно дает возможность удостовериться, что принятые ранее решения являются правильными, однако эта идеология никак не помогает отбирать из уже имеющегося набора пожеланий к продукту именно те, реализация которых будет наиболее ценной с точки зрения пользователей и вызывать у них максимум энтузиазма.
Множество барьеров на пути эффективного сотрудничества возникает из-за неразделенных, никогда не обсуждавшихся и непроверенных исходных предположений. Специалисты в разных областях исходят из разного набора допущений и гипотез. Если эти допущения и гипотезы сформулировать в явном виде, то получится их своевременно проанализировать и протестировать. В результате все последующие решения будут приниматься гораздо быстрее. Именно с этой точки зрения impact maps (карты влияния) являются эффективным инструментом. Они позволяют в наглядном виде представить ответы на вопросы «ЗАЧЕМ», «КТО», «КАК» И «ЧТО», связанные с проблемой, которую необходимо решить в рамках конкретного проекта.
Подобно тому, как карты автомобильных дорог показывают, какие дороги соединяют большие и малые населенные пункты, impact maps описывают, какой продукт мы хотим создать и как именно с его помощью мы собираемся облегчить жизнь пользователям. При этом следует иметь в виду, что основная цель автомобильной карты не столько давать подробную информацию о городах и других населенных пунктах, сколько четко указывать, как проехать от одного из них к другому. Ее дополнительная цель – помочь нам прокладывать альтернативные маршруты.
Наглядно продемонстрированные на impact maps узлы и предположительные способы обеспечения переходов между ними позволяют вовлекать в обсуждение специалистов любого профиля. Impact maps создают понятный для всех контекст и в явном виде отражают те неопределенности, с которыми будет необходимо разобраться экспериментальным путем. Подобно дорогам, закрытым для проезда или находящимся в стадии строительства, определенные исходные предположения могут оказаться нежизнеспособными или попросту неправильными. Поэтому соответствующие карты и называются картами автомобильных дорог, а не «картами назначения». Impact maps помогают визуализировать исходные гипотезы, которые и проверяются впоследствии опытным путем.
Мы наблюдаем, как на наших глазах совершается переход от подхода «push» к подходу «pull»[1], от директивного управления к адаптивному. Подход «push» предполагает, что мы говорим людям, что им делать; «pull» начинается с формулировки проблемы, открывшейся возможности или какого-либо вызова – при этом кроссфункциональная команда должна самостоятельно во всем разобраться и решить эту задачу. Подход «pull» предполагает фундаментальный сдвиг: чтобы достичь своей цели, мы переносим фокус внимания c «производства» продукта, который заказал клиент, на сотрудничество со всеми заинтересованными сторонами. Это требует перехода от внешней мотивации («push») к внутренней или самомотивации («pull»). Как элегантно выразился Дэн Пинк, внутренняя мотивация возникает при наличии автономии, профессионализма и понимания своего предназначения.
Создание автономных групп, куда входили бы специалисты, обладающие необходимыми компетенциями, является единственным эффективным способом достижения тех целей, что мы ставим перед собой сегодня. Однако группа не может стать эффективной командой, если у нее отсутствует разделенная цель (или цели). Разделенные цели вытекают из разделенных пожеланий к продукту. Самое главное здесь – совместная работа по их созданию. Кроме того, impact map – это по существу сториборд, отражающий концептуальное понимание методов, которые позволят добиться поставленной цели. Все эти задачи являются слишком важными, чтобы просто поручить их «клиенту» или «владельцу продукта» в надежде, что они смогут потом надавить на команду.
Использование impact map помогает сосредоточиться на процессе понимания и прийти к решению «эволюционным путем» даже в тех случаях, когда вы имеете дело со «злыми проблемами»[2] (с ними в наши дни приходится сталкиваться все чаще). Эта книга призывает раз за разом возвращаться к каждому исходному элементу и каждому первоначальному предположению. По-видимому, именно такой подход и нужен нам сегодня. Любое желательное влияние, требуемый эффект или цель, выбранные в начале проекта, основаны на определенных гипотезах относительно изменяющегося во времени положения компании и состояния рынка; отсюда вытекает необходимость постоянно их перепроверять.
Смысл продуктового дизайна – найти и протестировать потенциальные решения, которые могли бы оказать необходимое влияние. Здесь критически важны не столько сами по себе причины и вызываемые ими следствия, сколько проверка самих гипотез, их соединяющих. Реальную ценность удается создавать в тех случаях, когда предположения подтверждены данными неоднократных практических экспериментов. Impact maps – это по существу карты гипотез, связывающих причины со следствиями. Они помогут вам понять, какие вопросы следует задавать – и это гораздо труднее, чем находить верные ответы.
Том Поппендик
Введение
Потратив девять лет и миллиарды фунтов, правительство Великобритании недавно отказалось от завершения одного из своих IT-проектов, потому что он «утратил актуальность». Подобные примеры (правда, в менее эпических масштабах) можно найти повсюду. Только в 2004 году на неудавшихся IT-проектах компании стран ЕС потеряли €142 миллиарда (в основном из-за плохого согласования бизнес-целей или устаревания бизнес-стратегий к моменту выхода готового программного обеспечения). Это примерно равно стоимости программы МКС, включая все уже совершенные полеты, и в два раза превышает стоимость программы Apollo, в рамках которой астронавты шесть раз успешно высаживались на Луне.
Сегодня программное обеспечение повсюду. И тем не менее бесчисленное множество программных продуктов и проектов продолжает медленно загибаться, так и не принеся никакой пользы. В результате огромное количество времени и денег тратится впустую из-за неправильных исходных допущений, несфокусированности, плохой коммуникации, недоразумений и расхождений с глобальными целями организаций. Но должны же существовать и более эффективные методы работы!
Данная книга представляет собой практическое руководство по созданию impact maps. Impact mapping – это простой, но невероятно эффективный метод, помогающий еще на стадии стратегического планирования организовать сотрудничество различных специалистов и в результате создавать эффективные программные продукты. Он позволяет составлять более действенные планы и дорожные карты, способные обеспечить соответствие разрабатываемого программного обеспечения бизнес-целям организации и возможность его легкой адаптации к неизбежным изменениям в ходе проекта. Конечно, impact maps – не первое и не последнее решение в этой области. И тем не менее это важная система, поскольку она прекрасно вписывается в современные тенденции разработки программного обеспечения, включая регулярные релизы, управление клиентскими требованиями, ориентированность на достижение бизнес-целей, гибкие и бережливые методологии, экономичное управление стартапами и дизайн-мышление.
Для кого предназначена эта книга?
Основная целевая аудитория этой книги – руководители, непосредственно занимающиеся созданием программных продуктов или проектным менеджментом – как со стороны бизнеса, так и со стороны разработки. Она включает в себя как тех, кто платит за услуги, так и различных специалистов, выполняющих роль «владельцев» продукта, осуществляющих контроль за ходом проектов, управляющих проектным портфелем, занимающихся архитектурой программного обеспечения, бизнес-анализом и контролем качества готового продукта. Мои задачи связаны в основном с итеративной разработкой, поэтому книга написана, исходя из этого опыта. Вы извлечете из нее максимум пользы, если вы заняты в сходной среде. Итак:
• Бизнесмены, чья роль состоит в управлении проектами по разработке ПО, научатся более четко выражать свои идеи.
• Менеджеры компаний, выступающих в роли заказчиков, научатся правильно сообщать командам разработчиков о своих исходных установках, продуктивнее вовлекать их в принятие стратегических решений и оптимизировать управление своим проектным портфелем.
• Команды разработчиков, уже применяющие в решении задач гибкие или бережливые подходы либо появившиеся недавно методы экономичного управления стартапами, смогут эффективнее настраивать разрабатываемые программные продукты на достижение бизнес-целей заказчиков и добиваться большей вовлеченности заказчиков и пользователей в процесс разработки.
• Разработчики, находящиеся в процессе перехода к гибким или бережливым подходам, получат представление о том, как адаптировать эти подходы под свои конкретные потребности, не упускать из вида общую картину, разбивать работу на небольшие фрагменты, каждый из которых будет обладать собственной бизнес-ценностью, и осуществлять действенный контроль за ходом разработки.
Отдавая должное предшественникам
Impact maps – это разновидность карт бизнес-эффектов, которые предложили Мийо Балич и Ингрид Домингес (Оттерстен) в рамках своего метода InUse, скомбинированные с картами эффектов Роберта Бринкерхоффа для образовательных учреждений, идеями Криса Мэттса по поводу добавления функциональности («введения фич»), а также принципами измеримости и итеративной разработки Тома Гилба. Моя методика в значительной степени опирается на их работы – здесь достаточно сказать, что все ключевые идеи принадлежат им, а я лишь связал их вместе и поместил в контекст современных методов разработки программного обеспечения. В конце данного издания приведены ссылки на источники, откуда взяты эти концепции. Соединить их вместе и прояснить многие аспекты того, о чем пойдет речь в этой книге, мне помогли вдохновляющие и весьма непростые дискуссии с Крэгом Ларманом, Томом и Мэри Поппендик, Дэном Нортом, Гордоном Вейром, Джеффом Паттоном и Маттиасом Эдингером (перечисляю их не в порядке важности).
Объединив все перечисленные выше концепции, impact maps делают проверенные стратегии разработки и управления проектами еще более удобными и ускоряют достижение результатов. Они помогают эффективнее учитывать обычно имеющиеся в таких проектах ограничения, а также воспользоваться полезными идеями из других предметных областей.
В книге описано, как лично я применяю impact maps. В более ранних публикациях я называл их effect maps (картами эффектов), поскольку между ними и картами эффектов по методу InUse действительно имеется значительное сходство. Но в моем подходе также есть и существенные отличия. Он гораздо ближе к тому, что в своей модели HET[3]