Кен Швабер и Джефф Сазерленд Софт за 30 дней. Как Scrum делает невозможное возможным
Информация от издательства
Издано с разрешения John Willey & Sons International Rights, Inc., и литературного агентства Александра Корженевского
Благодарим за помощь в подготовке издания компанию ScrumTrek в лице Алексея Пименова
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
© 2012 by Ken Schwaber and Jeff Sutherland. All rights reserved. This translation published under license with the original publisher John Willey & Sons, Inc.
© Перевод, издание на русском языке, оформление. ООО «Манн, Иванов и Фербер», 2017
* * *
Посвящается Икуджиро Нонаке, Бабатунде А. Огунайке и Хиротака Такеучи с благодарностью за их наставления и вдохновение
Введение
Мы, Джефф и Кен, работаем в индустрии программного обеспечения в общей сложности 70 лет.
Мы были разработчиками программного обеспечения, менеджерами в IT-организациях и компаниях программного обеспечения и владельцами компаний по девелопменту и сервисному обслуживанию софта. Более 20 лет назад мы создали процесс, который позволил сотням организаций делать программный продукт лучше. Наша работа распространилась шире, чем мы когда-либо могли себе представить, ее плодами воспользовались миллионы людей, и мы в восторге от результатов, которых они смогли добиться.
Это не первая наша книга о создании софта, однако это первая книга, которую мы написали для тех, кто сам не разрабатывает программное обеспечение, – скорее она адресована лидерам организаций, выживание и конкурентное преимущество которых зависят от программного обеспечения. Эта книга для лидеров, которые могут получить выгоду от быстрой поэтапной разработки программного обеспечения и при этом добиться максимально возможного возврата инвестиций. Эта книга для лидеров, которые сталкиваются с деловыми и технологическими сложностями, затрудняющими разработку софта. С ее помощью такие лидеры могут помочь своим организациям достичь этих целей, приумножить внутренние возможности, увеличить количество предложений продуктов и многое другое.
Это книга для руководителей компаний, исполнительных директоров и старших менеджеров, которым необходимо, чтобы их организация производила лучшее программное обеспечение за более короткий срок, с меньшими затратами, большей предсказуемостью и низкими рисками.
Для этой аудитории у нас есть послание.
Возможно, вы имели негативный опыт разработки программного обеспечения в прошлом, но индустрия уже перешла на новый уровень. Сфера программного обеспечения радикально улучшила свои методы и результаты. Неопределенность, риск и потери, к которым вы привыкли, перестали быть неизбежностью. Мы работали со множеством организаций в сфере программного обеспечения, которые уже перешли на новый уровень. Хотим помочь это сделать и вам.
Мы покажем, как повысить стоимость бизнеса, используя процесс, поставляющий законченные фрагменты функционала разрабатываемого программного обеспечения как минимум каждые 30 дней.
Кроме того, мы расскажем, как определить приоритеты по созданию функционала и получить их «а-ля карт», то есть как пожелаете.
Инструментарий в этой книге поможет вам увеличить скорость разработки, доведя ее до современных стандартов, и в итоге получить желаемый результат.
Это софт за 30 дней.
Раздел I. Почему любой бизнес в мире может создать программное обеспечение за 30 дней
Мы обращаемся к каждому лидеру в организации, который хочет создавать лучшие программные продукты с лучшими характеристиками и предсказуемостью. Индустрия программного обеспечения изменяется и радикально улучшается. Неопределенность, риск и потери, к которым вы привыкли, перестали быть неизбежными. У нас за плечами 20 лет работы с организациями, которые уже перешли на новый уровень. Мы хотим, чтобы и вы сделали этот шаг и были способны создавать полезное, качественное программное обеспечение с управляемыми рисками.
Мы обращаемся к вам по двум причинам. Во-первых, в течение 40 лет вы страдали от плохого обслуживания в индустрии программного обеспечения, не намеренно, но неизбежно. Мы хотим вернуть ваше доверие. Во-вторых, программное обеспечение – это уже не только специализированный инструментарий для профессионалов. Программы теперь в нашем обществе выполняют все более и более важные операции. Мы хотим, чтобы вы были способны создать программное обеспечение, на которое мы все можем надежно полагаться.
Мы надеемся, что сможем достичь этих целей с помощью нашей книги.
Вопреки всему не сдавайтесь. Вы не должны больше мириться с ужасным программным обеспечением прошлого. Двигайтесь дальше. В этой части книги мы разберем, почему до сих пор разработка программного обеспечения была столь плохой. Далее мы покажем, как оно улучшилось и какие два явления этому способствовали. Затем мы продемонстрируем, как применять наш подход, чтобы добиться успеха.
1. Кризис в программном обеспечении: неправильный процесс разработки приводит к неправильным результатам
Ваша организация, будь то коммерческая, некоммерческая или государственная компания, должна быть в состоянии выдавать полезный продукт путем создания, настройки и использования программного обеспечения. Без программ ваша способность достичь целей как бизнес-лидера сильно ограничена, если не полностью невозможна. Но, несмотря на эту потребность, разработка программного обеспечения – исторически ненадежный, дорогостоящий и подверженный ошибкам процесс[1]. Это создает проблему: вам нужно программное обеспечение, но вы не можете получить его в нужное время, по приемлемой цене и с уровнем качества, которое делает его использование удобным.
Действительно, The Standish Group в своем CHAOS Report 2011 года обнаружила, что половина проектов по разработке программного обеспечения с 2002 по 2010 год описывались либо как трудные для выполнения, либо как полный провал. Только 37 % были классифицированы как успешные (рис. 1.1). The Standish Group скромно называет успешным проект, который обеспечивает требуемый функционал в срок и по заявленной цене.
Рис. 1.1. Риски традиционного метода разработки программного обеспечения
Способность приспосабливаться к изменениям, управлять рисками или изначальная ценность программного обеспечения не рассматривалась.
Вероятность того, что проект разработки программного обеспечения будет успешным, невелика. Если вы пытаетесь сделать что-то важное, включающее в себя разработку программного обеспечения, то, вероятно, должны быть обеспокоены. Индустрия программного обеспечения, будучи медленной, дорогой и непредсказуемой, подведет вас. Если бы софт не был столь важным, вы бы, скорее всего, совсем не стали бы инвестировать в него.
И вы не одиноки. К примеру, проект «Страж» Федерального бюро расследований (ФБР) недавно столкнулся с проблемами, и его полностью обновили, используя идеи и процессы, описанные в этой книге.
Информация, касающаяся проекта «Страж», взята из общедоступных отчетов Министерства юстиции США. До того как вы определите это как частный случай, являющийся особенностью работы правительства, подумайте: если крупное министерство смогло кардинально улучить свой метод разработки программного обеспечения, то сможет и ваша организация.
Пример: проект «страж» федерального бюро расследований
Все записи, которые были созданы или получены в рамках того или иного расследования ФБР, собраны в папки. В 2003 году ФБР решило оцифровать дела и автоматизировать связанные процессы, чтобы агенты могли быстро сравнивать дела и обнаруживать связи между ними. Проект назвали «Страж».
В марте 2006 года ФБР приступило к разработке «Стража», целью проекта было создание базы для более чем 30 тысяч конечных пользователей, агентов ФБР, аналитиков и административного персонала. По предварительной оценке, на разработку и запуск «Стража», что должно было произойти к декабрю 2009 года, выделили 451 миллион долларов. Согласно первоначальному плану ФБР, разработка «Стража» должна была пройти в четыре стадии. Проекта поручили корпорации Lockheed Martin, практикующей традиционный процесс разработки программного обеспечения.
К августу 2010-го ФБР потратило 405 из 451 миллиона долларов бюджета «Стража», при этом предоставив функционал только двух из четырех стадий. Хотя эти результаты и улучшили систему управления расследованиями ФБР, они не обеспечивали всех полезных функций, которые предполагались первоначально.
В связи с превышением стоимости и сроков разработки в июле 2010 года ФБР выпустило распоряжение о прекращении сотрудничества и приостановке оставшихся двух стадий проекта.
До этого момента в ФБР использовали традиционный метод девелопмента и теперь решили опробовать новый подход с целью достичь лучших результатов. Мы разработали этот новый подход, названный Scrum, в начале 90-х. Тот самый CHAOS Report The Standish Group, который классифицировал только 37 % проектов успешными, продемонстрировал как различаются результаты традиционного подхода к разработке и тех, которые используют быстрый Scrum-подход (рис. 1.2).
Рис. 1.2. Гибкие проекты в три раза более успешны
В частности, отчет показывает, что 42 % проектов, использующих быстрый метод, добиваются успеха. Что касается традиционных проектов, то здесь успешны только 14 %. Мы полагаем, что в дополнение к стандартным определениям успеха The Standish Group Scrum-проекты также обеспечивают более быстрое реагирование на изменяющиеся потребности клиентов, позволяют снижать риски и в конечном счете предоставляют более высокое качество программного обеспечения.
К 2009 году в ФБР были приняты на работу новый директор по информационным технологиям (CIO) и новый технический директор (CTO) с опытом управления организациями, создающими программное обеспечение на основе нашего метода. Они решили проверить, сможет ли этот более быстрый подход к разработке помочь ФБР. В 2010-м CTO сообщил департаменту правосудия, что намерен изменить подход к разработке проекта «Страж». Он утверждал, что новый подход оптимизирует процессы принятия решений и позволит ФБР остаться в рамках предусмотренного бюджета. ФБР сообщило генеральному инспектору Министерства юстиции, что сможет закончить разработку «Стража» в пределах оставшегося бюджета в течение 12 месяцев после возобновления проекта. Проведенный перед этим компанией Mitre аудит проекта показал, что для завершения «Стража» традиционным методом потребуются шесть лет и дополнительные 35 миллионов долларов.
ФБР перевело всю команду по разработке проекта «Страж» в подвал здания в Вашингтоне и сократило персонал с 400 человек до 45, 15 из которых были программисты. Технический директор ФБР лично возглавил проект. Целью управления разработкой стало предоставление части функционала «Стража» каждые 30 дней. Все приращения функционала обязаны были соответствовать окончательным характеристикам, это не должен был быть «сырой продукт». Каждые три месяца ФБР объединяло три ранее полученные части в единый пилотный проект.
К ноябрю 2011-го, через год после возобновления работы с использованием нового подхода, все стадии проекта «Страж» были закончены. Программное обеспечение установили для пилотной группы агентов ФБР, оснащение оставшихся агентов новым программным обеспечением было запланировано к июню 2012 года. ФБР удалось закончить проект «Страж» за 30 миллионов долларов в течение года. Экономия средств составила более 90 %. Сотрудники так же усердно трудились и над первыми стадиями проекта «Страж», но сам подход к разработке программного обеспечения отбрасывал их назад. После применения нового метода, описанного в этой книге, они продолжили работать столь же усердно, как и раньше, но наградой им стали гораздо лучшие результаты. Если такая организация, как ФБР, смогла сделать это, почему не может ваша?
Неправильный подход: предиктивные процессы
Процесс, который ФБР изначально использовало для «Стража», мы называем предиктивным, или последовательным. По сути, до 2005 года большинство проектов по разработке программного обеспечения использовали предиктивные процессы, которые при определенных обстоятельствах наиболее подходят и могут обеспечить успех. Эти обстоятельства, однако, скорее исключение, чем правило. Если кто-то может создать окончательное видение, определить все требования к нему и затем разработать детальный план по воплощению их в жизнь, тогда предиктивный процесс будет эффективным. Но любое отклонение от изначального видения, требований или плана создает большой риск. При частой смене требований бизнеса и технологий, которые присутствуют в реальных условиях, очень редко встречается, чтобы все элементы проекта оставались неизменными. Как результат, о чем и сообщает отчет The Standish Group, 86 % проектов по разработке программного обеспечения, основанных на предиктивных процесах, неуспешны. На самом деле мы считаем использование предиктивных процессов самой распространенной причиной проблем при разработке программного обеспечения.
Организации, с которыми мы сотрудничаем, стараются изо всех сил, чтобы увеличить процент успеха своих проектов по разработке программного обеспечения. Они ищут помощи у нас из страха, что их организация процесса девелопмента ПО выходит из-под контроля. Существующий процесс подвел их, а альтернативных подходов они не знают. Проблемы с разработкой программного обеспечения приносят их организациям огромные потери, и они вынуждены мириться с этим, поскольку должны создавать программное обеспечение на конкурентном уровне.
Руководители и менеджеры обычно описывают проблемы, с которыми сталкиваются, следующим образом.
1. Выпуск продукта занимает все больше и больше времени. «Каждый релиз занимает больше времени, требует больше усилий и затрат до момента передачи потребителю. Несколько лет назад выпуск новой версии занимал 18 месяцев, теперь на разработку, комплектацию и установку требуется 24 месяца. И при этом каждый релиз становится стрессом и требует значительных усилий. Мы тратим все больше, при этом получаем все меньше и меньше.
2. Срыв графиков релизов. «В проспектах мы даем обязательства нашим нынешним либо потенциальным клиентам, которые делают определенные приготовления в соответствии с нашим графиком релиза. Им нужен наш релиз с обещанным нами функционалом именно тогда, когда запланировано. И мы обычно подводим их в самый последний момент. Их планы нарушаются, они теряют деньги и доверие в глазах своих клиентов. Следовательно, мы можем не получить от них новые заказы, их отзывы о нашей работе вряд ли будут хорошими, и они могут начать поиск другой компании разработчиков».
3. Создание стабильной версии перед релизом занимает все больше и больше времени. «Мы установили разработчикам четкие, неизменяемые даты выполнения заказа. Они уложились в эти сроки, но программное обеспечение было нестабильным, не функционировало, как требуется. У нас даже не получилось отгрузить этот софт как бета-релиз, так что мы смогли получить отзывы только от ограниченного количества пользователей. Дефекты оказались настолько значительными, что наши бета-тестеры отказались участвовать. Нам потребовалось еще девять месяцев, чтобы выпустить релиз, и даже тогда он был нестабилен и требовал множества доработок и оправданий перед пользователями».
4. Планирование занимает слишком много времени и выполняется неправильно. «Мы выяснили, что разработка и развертывание релизов занимают слишком много времени, потому что мы не планировали достаточно хорошо в начале работы. Наши требования были не четко определены и не полностью разработаны, а оценки включали больше догадок, чем возможно. Чтобы это исправить, теперь мы больше времени тратим на планирование. Новые идеи продолжают поступать постоянно. Так как люди пересматривают планы, они находят части, которые должны быть переделаны или уточнены. Теперь мы тратим гораздо больше времени на планирование, чем раньше, но наш график плывет, и периоды стабилизации программного обеспечения все еще большие и ужасные. Несмотря на наши значительные усилия, во время разработки происходят изменения, которые не были и не могли быть учтены во время планирования».
5. Изменения трудно вносить в процессе разработки. «Текущий процесс не приспособлен к внесению изменений. Мы тратим много времени на планирование всего в начале разработки, и все необходимые этапы предусмотрены планом. Но часто необходимо вносить критические изменения или новые функции близко к дате релиза. Для этого мы должны настроить всю ранее проделанную работу для приспособления нового изменения. Это очень сложно, потому что трудно предсказать, как именно это изменение повлияет на стабильность программы. Даже если оно очень важное, есть ощущение, что для его приспособления в процессе разработки требуется в сто раз больше времени, чем если бы знать об этом изменении в самом начале. Но что мы можем сделать? Если важное изменение не внести в текущую разработку или релиз, нужно ждать два и более года до следующего релиза».
6. Ухудшение качества. «Мы знаем, что не должны давить на разработчиков, чтобы получать все, что запланировано, и с учетом изменений вовремя, но наш бизнес страдает от проблем планирования, срыва сроков и изменений. Мы требуем от разработчиков ужесточения работы для соблюдения сроков. Каждый раз после таких требований они сокращают срок выпуска за счет ухудшения качества программного обеспечения либо сокращения времени тестирования на стабильность. Результат настолько плохой, что мы возвращаемся на стадию стабилизации или выпускаем некачественный продукт».
7. Авралы наносят моральный вред. «Мы обращаемся с людьми так, как нам бы не хотелось. Однако у нас есть обязательства, и бизнес требует, чтобы все, кто работает над проектом, выходили в выходные и задерживались по вечерам. Их семьи и здоровье страдают. Как следствие, у нас есть проблемы с наймом хороших разработчиков, а наши лучшие разработчики уходят в другие организации. Персонал настолько деморализован, что его производительность ухудшается, несмотря на увеличение часов работы».
Этих примеров достаточно, чтобы обескуражить любого руководителя, занимающегося разработкой программного обеспечения. Несмотря на 20 лет титанических усилий и огромных затрат, в этой отрасли к началу 90-х был достигнут незначительный прогресс в обеспечении успешного результата проектов по разработке программ. Процесс, который мы опишем в этой книге, устраняет подобные проблемы.
Неправильные результаты: провал проекта
Использование традиционного, или предиктивного, процесса разработки программного обеспечения – основная причина, лежащая в основе провала многих проектов. Предиктивный процесс, также называемый каскадным, зависит от точности плана проекта и неизменности исполнения. Он полагается на перечисленные ниже факторы.
1. Требования не меняются и полностью понятны. Любые изменения в требованиях нарушают план. Требующиеся изменения в плане создают значительные изменения в уже проделанной работе, часто превращая ее в полностью бесполезную. К несчастью, более 35 % всех требований меняются в процессе типового проекта по разработке программного обеспечения. Бизнес-клиенты стараются изо всех сил, чтобы полностью определить эти требования, но постоянно меняющийся рынок, их недостаточное понимание того, что им действительно нужно, и трудности в полном описании ожидаемой системы до ее реализации делают изменения требований практически неизбежными.
2. Технология работает без каких-либо проблем. Все технологии, используемые при разработке программного обеспечения, должны надежно работать, как и планировалось изначально. К несчастью, в проект часто включают такие технологии, которые до того не использовались целиком, в комбинации или для тех же целей. Более того, технологические стандарты иногда меняются прямо во время разработки проекта.
3. Люди должны быть предсказуемы и надежны, как машины. План требует выполнения специфической сети задач, каждая из которых требует определенного количества часов от сотрудника, имеющего специальные навыки, которому даны четко определенные исходные данные. К сожалению, сеть задач меняется с каждым изменением требований. Еще большая проблема – то, что люди не машины. У них бывают хорошие и плохие дни, разный уровень профессионализма, отношение к делу и умственные способности. В итоге задачи выполняются не так, как изначально планировалось.
Индустрия разработки программного обеспечения понимает эти трудности и годами пыталась решить их путем наращивания усилий по планированию. Проект планирования мог занимать столько же времени, сколько и сам девелопмент. Подготовительный этап стал включать в себя сбор требований, определение архитектуры и детальную разработку планов.
Но весь этот труд был полезен, только если план основывался на точной информации и не изменялся в течение времени. Метод эффективен, когда задача хорошо понятна и относительно стабильна, а план, соответственно, остается неизменным. Если это не так, то предиктивный процесс терпит неудачу. Он не приспособлен к тому, чтобы справляться с неизвестным и неожиданным, его возможности по решению проблем ограниченны.
Множество традиционных производителей успешно используют модель прогнозируемого процесса. Выигрыш такого метода в повторном выполнении разработанного плана, создании машины за машиной или тостера за тостером. В девелопменте программного обеспечения подобного преимущества нет, план его разработки выполняется только один раз. Именно то, что делает предиктивные процессы подходящими для производства, где единственный цикл производственного процесса создает большой объем продукта, плохо подходит для программного обеспечения, где один цикл разработки предоставляет только один продукт.
Полезный инструмент, оценивающий уверенность и предсказуемость проекта, – график Стейси[2]. График Стейси измеряет уверенность в сравнении с непредсказуемостью различных аспектов работы и определяет, где план будет провален.
Мы использовали его, чтобы смоделировать три аспекта в разработке программного обеспечения: требования, технологии и люди, как показано на рис. 1.3.
Рис. 1.3. График Стейси
Можно изобразить проекты по разработке программного обеспечения так, как показано ниже.
Требования: от близко к определенности без риска изменений до далеко от определенности со смутными, сложными характеристиками и множеством ожидаемых изменений.
Технологии: от хорошо известных и понятных до неопределенных, когда разработка и используемые технологии обычно состоят из множества продуктов, взаимодействующих через интерфейсы на различных уровнях разработки и выпуска программного обеспечения.
Люди: от знакомых и постоянных, когда разработкой занимается одна команда с малым количеством людей, до проектов, включающих больше чем четыре-пять человек, часто сотни, которые постоянно меняются. У каждого человека своя точка зрения на тот или иной вопрос, свой характер и настроение, поэтому при взаимодействии в группах или командах непредсказуемость результатов работы является значительной.
Используя график Стейси, можно увидеть, что проекты по разработке программного обеспечения как минимум сложные, а иногда и хаотичные. Предиктивный процесс, на котором основаны каскадный и традиционный методы девелопмента софта, пригоден только для простой, повторяющейся работы. Вы можете определить, правильный ли процесс вы используете, по ставке доходности, степени успеха. Если бы предиктивный подход был подходящим для проектов разработки программного обеспечения, ставка доходности (или процент успешного завершения проектов) была бы очень высокой – около 99,99 %. Однако рассмотренный ранее отчет The Standish Group оценивает процент успеха проектов разработки программного обеспечения, использовавших предиктивный метод, в 14 %.
Предиктивный процесс не подходит для решения проблем в девелопменте софта. Разработка программного обеспечения – нелегкая задача, и построение ее на предиктивном процессе приведет к неудаче. Наши доказательства основаны на повышении процента успешности проектов, в которых стал применяться Scrum-метод.
Люди иногда сравнивают разработку программного обеспечения со строительством мостов. Такие инженерные дисциплины находятся на графике Стейси где-то посередине между простыми и сложными. Стандартизация относит эту работу к сложным. Существует три формы стандартизации. Во-первых, есть законы Ньютона, объясняющие, как физические объекты взаимодействуют друг с другом. Во-вторых, применяются стандартные материалы, такие как деревянный брус, стальная арматура, крепления с известными размерами и характеристиками. В-третьих, есть различного рода стандарты, описанные в разных документах и проверяемые различными органами. Ничего из этого не существует в программном обеспечении. Более того, при таком быстром развитии технологий, как сейчас, это вряд ли изменится.
Пример: Parametric Technology Corporation
Parametric Technology Corporation (PTC) – международная компания, насчитывающая около 5000 сотрудников, которая занимается разработкой программного обеспечения управления жизненным циклом продуктов. Эти продукты, которые выросли из CAD/CAM (систем автоматизированного проектирования/производства), помогают некоторым крупнейшим в мире организациям, например Raytheon, BAE System, Airbus, управлять разработкой массивных систем, таких как «Аэробус-А380». Они делают это отчасти путем отслеживания конфигурации всех частей, узлов и сборок.
В 2005 году компания PTC страдала от всех симптомов предиктивного процесса разработки программного обеспечении.
1. Выпуск новой версии продукта занимал все больше и больше времени. Выпуск релизов сползал с 18 месяцев к 24, и казалось, что текущий релиз опять займет больше времени.
2. График разработки релиза не выполнялся. Сдвиг от первоначального графика уже составлял девять месяцев и увеличивался шаг за шагом. Потребители, которые полагались на этот график, были не в восторге.
3. Стабилизация продукта перед релизом также занимала все больше и больше времени. Стабилизация была причиной как минимум двух третей задержек времени.
4. Планирование занимало все больше и больше времени и было неправильным. До шести месяцев занимало планирование следующей версии продукта, и даже в этом случае план был неправильным и требовал внесения изменений.
5. Внести изменения в середине разработки оказывалось проблематично. Было трудно сказать, сдвиг графика, процесс стабилизации или проблемы качества становились причиной необходимости внесения изменений, но определенно имелась необходимость в ряде важных изменений.
6. Качество ухудшалось. Это было серьезной и усиливающейся проблемой.
7. Авралы наносили моральный вред. РТС испытывала проблемы с наймом хороших специалистов.
В РТС использовали в процессе разработки каскадный процесс и, для того чтобы он работал лучше, пытались зафиксировать все требования. Требования, касающиеся функционала, и требуемые спецификации собирались в исчерпывающий документ. Только после того как финальные требования были утверждены, они передавались разработчику. Пока формулировались требования, разработчики либо исправляли текущие обнаруженные ошибки, либо просто скучали без дела. Персоналу по качеству не позволялось начинать тестирование, пока продукт не был полностью закончен. Таким образом, у них оставалось меньше времени на выполнение работы. Затем они были вынуждены выпускать недостаточно хорошо протестированный продукт, поскольку приближалась дата релиза.
Джейн Вачутка, вице-президент по разработке продукта Windchill в компании PTC, как новый сотрудник попыталась применять используемый в компании каскадный метод и столкнулась со всеми обычными для этого метода проблемами. На предыдущей работе она использовала множество некаскадных процессов, подобных тем, что помогли достигнуть успеха проекту ФБР «Страж». В соответствии с этим методом проект состоит из одного или нескольких повторений работы (итераций), каждый из которых длится не более 30 дней. Множество небольших команд разработчиков выбирают наиболее важные требования для каждой итерации и превращают их в часть готового к употреблению программного обеспечения. Все эти части затем объединяются в одну полностью законченную и готовую к применению программу. В конце каждой последующей итерации другие части и надстройки программы добавляются к существующему функционалу.
Брайан Шепард, исполнительный вице-президент по развитию продуктов компании РТС, был настроен скептически, когда в 2007 году Джейн предложила новый процесс производства программного обеспечения.
Она просила позволить ей раньше подключать программистов к разработке, задействовать контроль качества и не выпускать продукты, которые не прошли полного тестирования. Джейн подчеркнула, что функциональные характеристики могут быть несовершенными, так как группа управления разработкой часто будет получать и использовать части разрабатываемого продукта в течение всего цикла разработки, чтобы давать обратную связь. Брайан согласился попробовать новый процесс – гибкий метод разработки под названием Scrum. При этом он предупредил Джейн: «У тебя нет права на ошибку!»
Когда Джейн сообщила своим сотрудникам о новом методе, они также отнеслись к этой новости скептически и не сразу вникли в суть нового метода, по-прежнему изо всех сил пытаясь добиться совершенных результатов на каждом этапе разработки, стараясь уточнять, что они делают именно то, что другие хотели. Тем не менее, по мере того как менеджеры проектов накапливали опыт в использовании нового метода, они больше не старались получить идеальные функциональные характеристики перед передачей в разработку, так как дополнительные характеристики добавляются в течение всего времени до выпуска релиза. Поскольку теперь РТС разрабатывала полностью функционирующее программное обеспечение каждые 30 дней, ее разработчики смогли напрямую сотрудничать с клиентами в рамках каждой итерации. Разработчики получили понимание требований и то, как эти требования могут быть реализованы лучше всего. Клиенты заметили изменения и начали работать с командами разработчиков в течение каждой итерации. Клиенты помогали авторам создавать функционал и получали именно то, что хотели.
Команда управления продуктами имела в своем распоряжении трех-, двух- и однолетний набор требований. За три года до выпуска это было всего лишь видение продукта с описанием самых главных возможностей. Более детальная картина будущего продукта прорабатывалась во второй год разработки. Для текущего года 30-дневные итерации определялись на первые шесть месяцев и составлялась дорожная карта на последующие шесть. Набор требований для каждого года имел больше деталей, чем предыдущий. Разработчики трудились над набором требований для одного года совместно с клиентами РТС, чтобы выяснить больше деталей. Вся организация стала средоточием творчества и продуктивности.
В течение двух лет все обязательства Джейн перед Брайаном были выполнены. Джейн и ее сотрудники выпускали программное обеспечение каждые 12 месяцев, в то время как ранее выпуск занимал 24 месяца. Продукт был высокого качества. К 2011 году РТС изменилась – она превратилась в прозрачную организацию как внутри, так и для потребителей. Сюрпризы случались редко, клиенты знали, чего и когда ждать. Дефекты были редкими и к 2012 году практически равнялись нулю. Новые детали, пользовательские интерфейсы и возможности рабочего потока были добавлены. Продукт был переработан, стал безопасным от внешних угроз. В итоге бюджет и организационные расходы упали каждый более чем на 10 %. По поручению Брайана Шепарда для организации по разработке программного обеспечения было построено новое здание, которое отражало прозрачность, столь важную для перемен: все располагались в едином пространстве, без отдельных кабинетов, и стены были из стекла.
Недавно Джим Хепперманн, СЕО РТС, во время обсуждения с менеджерами вопроса о повышении бюджетов подразделений попросил их всех поблагодарить Джейн за снижение расходов при одновременном повышении качества и функционала. Сэкономленные ее усилиями средства он может разделить между всеми подразделениями компании.
Однажды Джейн и Джим присутствовали на конференц-связи с компанией в Израиле, оценивающей возможность применения продуктов РТС. Джейн сказала CEO, что компания Raytheon использует продукты РТС по всему миру, и просила связаться с их руководством. Она знала, что в Raytheon не только впечатлены продуктами РТС, но и вдохновлены тем, что новый процесс РТС по разработке программ исключает сюрпризы и есть возможность корректировать свои графики с РТС в режиме реального времени. Компания Raytheon даже переняла у РТС процесс разработки программного обеспечения. Джим сообщил потенциальным клиентам, что последний релиз – самый красивый продукт, когда-либо выпущенный РТС, в первую очередь потому что Джейн изменила процесс разработки.
Итог
Ранее разработка программного обеспечения была скорее неудачной, в первую очередь по причине использования предиктивных процессов для комплексных работ. Переход к Scrum, эмпирическому процессу, значительно увеличивает шансы на успешное завершение проекта разработки программного обеспечения.
Можно получить функции программного обеспечения, готовые к использованию, в течение 30 дней или даже меньше. Не позволяйте вашим разработчикам убедить вас в обратном, потому что сотни тысяч их коллег делают это с 2000-х годов. Программный продукт может быть большим, но его можно собрать фрагмент за фрагментом – каждый за 30 дней.
2. Scrum: правильный процесс приводит к правильному результату
В предыдущей главе мы узнали, что эмпирический процесс – правильный для девелопмента программного обеспечения. Теперь давайте посмотрим, как эмпиризм работает и как можно с его помощью создать ПО. Мы изучим эмпиризм через призму гибкого процесса разработки программного обеспечения, который мы назвали Scrum.
Эмпиризм в действии
В эмпирическом процессе информацию получают путем наблюдения, а не предсказания. Известно, что эмпирические процессы лучше всего подходят для сложных задач, когда неизвестного больше, чем изученного. Чтобы в этой ситуации эмпирический процесс работал, должно выполняться два требования.
1. Проверка и адаптация. Следует часто проверять, где мы сейчас, чтобы адаптировать следующие шаги и добиться оптимальных результатов. Частота проверок и адаптаций зависит от того, какие риски мы готовы принять. Чем больше неизвестных, тем быстрее мы может отклониться от цели. Чем дальше мы уходим от цели, тем больше потеряем на изменении курса, переделке того, что сделано неверно, или выполнении работы сначала.
2. Прозрачность. Когда мы проводим проверку, то должны иметь возможность оценить, что мы видим в тех же условиях, в которых находится наша цель. Если наша цель – разработка системы с определенными признаками или функционалом, то мы должны проверять то, что составляет часть этого признака, функции или их сочетания. Если бы мы использовали предиктивный процесс, то должны были бы задать требования для разработки программного обеспечения, которое может занять годы. Но мы знаем, что в случае с программным обеспечением в течение такого долгого периода накапливается слишком много рисков и потерь. Вместо этого мы используем короткие периоды, обычно 30 дней или меньше. (Позднее мы обсудим значение более коротких периодов.) По окончании первых 30 дней проверяем результаты и определяем, что делать дальше для достижения нашего видения, и, если необходимо, вносим изменения.
Прежде чем начать разработку программного обеспечения, следует уяснить его идею, видение, полезные функции. Мы думаем, что мы знаем, как выполнять работу более эффективно, или мы думаем, что знаем, как создать программное обеспечение, которое другие сочтут полезным. Мы можем очень четко описать определенные аспекты того, как программное обеспечение должно работать, и требования, которым оно должно соответствовать. Но есть и менее очевидные аспекты программного обеспечения – их можно на какое-то время оставить неопределенными. Все, что нам известно, мы ранжируем: от критически важного и хорошо понятного до, возможно, имеющего отношение к проекту и смутно понятного. Мы создаем список идей, который называем бэклог, или требования (табл. 2.1).
Таблица 2.1. Бэклог требований для организации бизнес-операций
Бэклог – это постоянно меняющийся список наших идей для этого продукта, мы можем добавлять, изменять и удалять из него пункты, когда захотим. В бэклоге продукта мы определяем порядок работы, поэтому наиболее важные требования должны быть вверху списка.
Во-первых, мы должны удостовериться, что наша идея осуществима. Сможем ли мы в течение 30 или меньше дней создать то, что будет полезным и оправдает дальнейшую работу над программным обеспечением?
Мы встречаемся с командой разработчиков и делимся с ними нашими идеям и начальными требованиями. Несмотря на то что вся система может быть обширной, мы должны сосредоточиться только на самом важном, чтобы понять, что это возможно и хотим ли мы продолжать. Также необходимо получить первую оценку практической части нашей идеи. Мы просим команду разработчиков оценить, какую часть требований, по их мнению, в течение следующих 30 дней они смогут перевести в работающую стадию, в законченный функционал.
Мы начинаем с наиболее важных пунктов, но члены команды могут добавлять идеи, которые, как они считают, должны быть включены в бэклог, – например, стабильность программного обеспечения. Мы обсуждаем эти требования, а затем помогаем команде разработчиков продумать лучший способ их реализовать. Несмотря на то что мы не разработчики программного обеспечения, мы можем выбирать среди альтернатив и уточнять вопросы для них.
Давайте сформулируем определения для того, что мы описали.
Итерация. Это повторение серии шагов или процессов, обычно с целью приближения к желаемой цели или результату. Каждое повторение процесса также называется итерацией, а результаты одной итерации используются как стартовая точка следующей. Для вас первые 30 дней – это первая итерация.
Частота. Этот термин относится к длине итерации. Частые итерации контролируют риски путем постоянного инспектирования прогресса, чтобы гарантировать, что потери не происходят и контроль сохраняется. Оптимальная частота находится в диапазоне не меньше недели и не более месяца.
Инкремент (приращение). Это частица целого, которая увеличивается со временем. Функциональный результат итерации в процессе разработки называется инкрементом. Приращение создается повторение за повторением, пока мы не получим полезную систему.
Прозрачность. Инкремент должен быть полностью законченным и пригодным к использованию, без необходимости доработки. Незаконченную работу, или прототипы, нельзя считать прозрачной, потому что мы не можем проверить, насколько прототипы закончены и сколько работы осталось, чтобы их закончить.
Итеративно-инкрементальный процесс. Это способ разработки программного обеспечения через последовательность итераций, каждая из которых генерирует полное приращение функционала, основанное на всех предыдущих приращениях. Итерации продолжаются до тех пор, пока цель не будет достигнута.
Мы начинаем первую итерацию. Команда разработки превращает наши требования в прирост функционала. Каждая итерация начинается с планирования, затем команда разрабатывает то, что было запланировано, и потом все проверяют результирующий инкремент программного обеспечения.
На разработку системы, соответствующей нашим требованиям и видению, может потребоваться несколько или огромное количество итераций. Время каждой из них определено, то есть мы всегда можем выделить и использовать полную итерацию без изменения ее длины. Каждая итерация создает инкремент потенциально полезного программного обеспечения (рис. 2.1). Функционал становится законченным, нет необходимости что-то доделывать. Результат предыдущей итерации используется как стартовая точка для следующей.
Рис. 2.1. Одна итерация производит один прозрачный инкремент
В конце каждой итерации мы можем указать команде разработки другое направление, отличное от того, что задумывалось ранее. На самом деле, вероятность этого высока. Изначально у нас есть всего лишь видение или преимущество, которым мы хотим воспользоваться. Команда разработки создает для нас приложение, содержащее только важнейшие аспекты будущего продукта. Мы смотрим на приложение, а затем начинаем думать, как его использовать, что надо добавить к инкременту, чтобы сделать его более удобным. В некоторых областях это требует внесения корректировок в середине разработки, так случается с каждой итерацией.
Каждый разработанный нами инкремент побуждает нас обдумывать более творческие либо более конкретные пути реализации идей и видения. Это заставляет нас начать диалог с командой разработки: мы можем совместно искать пути и изменения, позволяющие добиться наилучшего результата от следующей итерации.
Мы можем обнаружить, что наша идея нереалистична: отсутствует необходимая технология, или нам не нравятся результаты, или мы обнаруживаем, что цена будет слишком высокой. В зависимости от наших выводов мы можем остановиться на этом этапе и больше не тратить деньги, пока не найдем более реалистичное решение. Успешные проекты – те, на которые деньги не тратятся напрасно.
Иногда одной итерации достаточно, чтобы разработать то, чем уже можно пользоваться, пока мы направляем команду разработчиков развивать более широкий функционал. Мы можем встраивать больше производительности и функционала итерация за итерацией, так как у нас есть преимущество более полного использования. Каждый инкремент накладывается на предыдущие. Когда результат работы команды разработки признается правильным, мы выпускаем релиз программного обеспечения, и им начинают пользоваться. Рисунок 2.2 иллюстрирует несколько итераций.
Рис. 2.2. Несколько итераций создают инкремент дополнительной функциональности
Мы придумали эмпирический процесс разработки программного обеспечения и выбираем, что делать дальше в конце каждой итерации, держа в уме нашу цель и рассматривая, что уже было разработано. Мы можем экстраполировать вероятную стоимость и срок поставки продукта, чтобы решить, хотим ли мы продолжать. Мы называем это итеративно-инкрементальным процессом, и это основа Scrum. Мы описали, как это работает и почему это может называться «программное обеспечение за 30 дней». Теперь давайте посмотрим, решает ли данный процесс проблемы, которые мы нашли в каскадном, или предиктивном, процессе.
Решает ли эмпиризм наши проблемы?
Решает ли наше эмпирическое решение проблемы каскадного метода? Давайте оценим новый процесс в болевых точках, обнаруженных в каскадном методе.
Проблема 1 каскадного процесса: выпуск продукта занимает все больше и больше времени. Наши релизы будут состоять из множества объединенных инкрементов, разработанных последовательно, итерация за итерацией. Мы можем остановить итерации, когда захотим. Например, когда ценность продукта окажется максимальной, особенно если учесть, что более половины функционала программного обеспечения используется редко или никогда. Мы также можем остановиться и выпустить продукт, когда достигнута дата релиза или исчерпан бюджет. Мы накопили самые ценные инкременты в конечном результате.
Проблема 2 каскадного процесса: срыв графиков релизов. Наш график разработки не может сдвинуться более чем на 30 дней, так как это максимальная длительность одной итерации. Мы выпускаем накопленные инкременты, когда достигаем даты релиза. Мы не выделяем итераций для построения малозначительного функционала, что позволяет выпускать законченную систему гораздо раньше, чем обычно. При использовании традиционного метода разработки программного обеспечения только менее 50 % функционала используется часто. Мы не разрабатываем этот функционал.
Проблема 3 каскадного процесса: создание стабильной версии перед релизом занимает все больше и больше времени. Каждая итерация производит законченный, готовый к работе прирост функционала. Каждый последующий инкремент интегрируется с инкрементами всех предыдущих итераций, он также полностью завершен и готов к использованию. Перед релизом не требуется дополнительной работы по стабилизации, так как эта работа уже была выполнена.
Проблема 4 каскадного процесса: планирование занимает слишком много времени и выполняется неправильно. Начальное планирование сводится к постановке цели и определению наиболее ценных функциональных возможностей, производительности и особенностей, необходимых для ее достижения. Затем определяются ориентировочная стоимость и срок разработки. Планирование до первой итерации, как правило, занимает 20 % времени от того, что обычно мы привыкли тратить на планирование для каскадного, или предиктивного, метода. Мы планируем детальные требования для каждой итерации только непосредственно перед ее началом. Это планирование перед итерацией называется «точно в срок», и в него могут включаться требования, возникающие во время проверки предыдущей итерации, и адаптироваться лучшие требования для следующей.
Проблема 5 каскадного процесса: изменения трудно вносить в процессе разработки. В итеративно-инкрементальном процессе нет состояния середины процесса разработки. Новые требования могут возникать и быть добавлены перед каждой итерацией с минимальными затратами.
Проблема 6 каскадного процесса: ухудшение качества. Инкремент каждой итерации закончен и готов к использованию. Качество уже встроено. Каждый последующий инкремент также добавляет определенное качество. Нет этапа спешной стабилизации в конце проекта, когда нередко жертвуют качеством ради соблюдения сроков выпуска. Эта работа уже выполнена.
Проблема 7 каскадного процесса: авралы наносят моральный вред. Процесс стабилизации программного обеспечения перед выпуском исключен, как и работа в выходные и сверхурочная работа.
Как видите, итеративно-инкрементальный метод разработки, основанный на эмпирическом процессе, контролирует проблемы, которые обычно преследуют разработчиков программного обеспечения. При этом, чтобы определить нужды конкретных организаций, мы должны знать, как этими проектами управлять. Об этом мы поговорим в следующих главах и более детально в главе 6.
Работой можно управлять, используя всего три переменные. Первая (А) – это требования, функциональные возможности, которые предоставит планируемое программное обеспечение. Вторая переменная (В) – время, которое теперь мы измеряем в блоках по 30 дней. Третья переменная (С) – законченная работа, которая измеряется в пригодных к применению функциональных возможностях или в количестве требований и функциональных возможностей, выполненных в каждый из 30-дневных периодов и совокупно.
Таким образом, можно создать график для управления проектом.
1. Бэклог требований по оси Y, или вертикальной оси. Работа по выполнению каждого требования разбита по размеру. Давайте предположим, что у нас есть пять требований. Каждое требует выполнения 2, 3, 5, 3 и 8 блоков работы. Они создают объем работы по оси Y из 21 блока. Блоки расположены в порядке, в котором вы хотите превращать их в пригодные к использованию функциональные возможности. Давайте, скажем, порядок сверху вниз будет 2, 3, 5, 3 и 8.
2. Время отложим по горизонтальной оси Х. Блоки по 30 дней, что составляет протяженность одной итерации.
3. Мы предполагаем, основываясь на предыдущем опыте, что команда разработки выполняет по пять блоков работы за каждую итерацию. Реальную производительность команды разработки выясним, когда начнем работу, а пока это всего лишь прогноз вчерашней погоды. Итак, мы предполагаем, что 20 блоков работы будут закончены за первые четыре итерации и последний фрагмент будет выполнен в течение пятой итерации.
4. Объем выполненной работы и готовые к использованию функциональные возможности вычисляются в конце каждой итерации. Мы планируем, что первые два требования, которые состоят из двух и трех блоков работы, будут закончены в течение первой итерации. Мы предполагаем закончить следующий фрагмент функциональных возможностей, состоящий из пяти блоков работы, во второй итерации. К этому времени мы обычно уже корректируем планы относительно того, что же делать дальше. Мы уже видели первые два инкремента и часто на этом этапе находим непредвиденные или измененные требования для следующей итерации. Если такого не случилось, мы продолжаем, как планировалось. Тем не менее план и будущие требования без проблем могут изменяться в конце каждой итерации. Размер инкрементов измеряется в тех же единицах, что и требования по оси Y.
5. Команда разработки создала 3, 5 и 5 блоков функциональных возможностей в первые три периода времени. Получившийся график показан на рис. 2.3.
Рис. 2.3. Диаграмма сгорания работы
План, или прогноз, в начале работы показывает, что вы начали с 21 блока работы.
За каждую итерацию предполагалось выполнять пять блоков. Соответственно, мы нанесли это на график. Прогнозная линия на графике показывает, что все функциональные возможности планируется закончить за пять итераций.
Фактически завершенные требования показывают, что три блока работы были выполнены в первую итерацию, пять блоков – во вторую и еще пять – в третью. Мы показали прогресс на графике как линию фактически выполненной работы. Если мы создадим прогнозную линию из этой точки, то обнаружим, что вся работа будет закончена к середине, а не к началу пятой итерации. Однако это всего лишь прогноз, а не уверенность. Эмпиризм предполагает, что мы не узнаем наверняка, сколько работы будет сделано, пока она не будет сделана. В первой итерации мы предполагали сделать пять блоков, но получилось реализовать только три. Технология оказалась не до конца проработана, одно из наших требований было не совсем четким, и один из разработчиков болел в течение нескольких дней. Мы изучили прогресс в конце первой итерации и решили, что возврат инвестиций все еще на должном уровне, проблемы первой итерации, скорее всего, не повторятся. Основываясь на этих расчетах, мы рискнули профинансировать следующую итерацию. Такая проверка и адаптация требований происходят в конце каждой итерации.
Эмпиризм обеспечивает ряд факторов.
1. Управление. Вы точно знаете, как много и какие требования вы закончили и какие готовы к использованию в конце каждой итерации. Вы можете создавать будущие прогнозы, основываясь на предыдущем продвижении, и оценивать вероятное время завершения. Вы можете делать прогноз, зная, что он может быть изменен в конце следующей итерации.
2. Контроль. Если информация показывает, что окончание работы может быть позднее, чем необходимо, вы можете уменьшить объем требований и количество оставшихся функциональных возможностей, которые необходимо доделать. К примеру, в конце второй итерации, с оставшимися 13 блоками работы для выполнения требований, вы можете уменьшить количество оставшихся блоков до десяти. Если команда разработки продолжит выполнять по пять блоков работы за итерацию в течение последующих двух итераций, функционал будет полностью закончен к концу четвертой итерации.
3. Предсказуемость. Прогноз может быть неправильным, и завершение произойдет на несколько недель позже, чем планировалось. Эту вероятность можно предположить в конце первой итерации, возможно, после второй, и, скорее всего, она станет очевидной к концу третьей. Все, кто будет пользоваться результатами разработки, могут начать параллельно синхронизировать свои планы. Кроме того, бюджет можно пересмотреть и утвердить раньше.
4. Управление рисками. Команда разработки закончила только два блока работы в каждой из первых трех итераций. В конце третьей прогноз показал, что окончание разработки не случится ранее середины десятой итерации. Если начальный бюджет был 100 тысяч долларов, новый прогноз предполагает перерасход средств на 150 тысяч. Если возврат инвестиций в размере 250 тысяч долларов невозможен, то проект можно отменить уже после третьей итерации.
Практические методы, основанные на эмпиризме
Эмпирический подход обеспечивает наглядность того, что работает, а что нет, поэтому мы быстро изучили и систематизировали набор лучших практических методов для этого стиля разработки. Эти практические методы частично основаны на академических принципах, а также на опыте реальных команд девелоперов.
В целом мы обнаружили, что небольшие команды лучше всего выполняют работу на основе итеративно-инкрементального метода. Численность команды обычно не более девяти, но не менее трех человек. Вместе члены команды должны обладать всеми видами квалификации, необходимой для преобразования ваших требований в функциональные возможности и реализации вашей идеи. В зависимости от того, какое программное обеспечение создает команда, ее члены должны разбираться в программировании, тестировании, дизайне, анализе, документировании, архитектуре и т. п. Атрибуты команды – опыт совместной работы, продуктивность, качество, креативность и непрерывное совершенствование.
Наши идеи о качествах наиболее эффективных команд разработчиков в значительной степени опираются на работу Такеучи и Нонаки, которые изучали командную работу Гарвардском университете[3]. Они наблюдали за поведением автономных команд, мотивированных высшей целью, вовлеченных в перекрестное обучение и работавших в коротких итерациях. Активное сотрудничество этих команд способствовало генерированию цикла знаний и вело к созданию инноваций, более быстрому времени выхода на рынок и более высокому качеству.
Действия команд напоминали им игру в регби, поэтому они назвали этот стиль управления разработкой проекта Scrum – так в регби называется момент возобновления игры после того, как мяч вышел за пределы поля.
Основываясь на знаниях, полученных нами от Такеучи и Нонаки, мы определили практические методы, позволяющие дополнить структуру эмпирического процесса разработки программного обеспечения. Все эти практические методы ведут к созданию высокопроизводительных команд, которые проявляют творческий подход, демонстрируют качество, производительность и моральный дух.
Уважение к личности сотрудника. В некоторых компаниях к сотрудникам относятся как к детям, их мнение не учитывается, им просто указывают, что именно делать в каждый момент в течение дня. Для того чтобы люди были вдохновлены и вовлечены в свою работу, следует создать атмосферу содействия, когда с сотрудниками обращаются с уважением и восхищением. Scrum призван обеспечить такую обстановку. Мы были не первые, кто решил применять идеи и практические методы, используемые в Scrum. Большинство из них представляют собой передовые методы в индустрии. Тем не менее Джефф действительно сосредоточен на аспекте «люди» в среде разработки программного обеспечения Scrum.
Встроенная нестабильность. Процесс разработки начинается с установки высшим руководством общих целей или задания стратегического направления. Они не вручают команде четкий рабочий план, а дают ей свободу. Постановка сложных задач создает динамическую напряженность внутри команды.
Самоорганизующиеся проектные команды. Сама команда решает, как достичь цели, поставленные руководством. Идея в том, чтобы заставить команду не полагаться на внешнее управление, но организоваться и управляться самостоятельно. Самоорганизация очевидна, когда в команде выполнены три условия: автономность, превосходство и взаимное развитие. Автономность есть, когда управление ограничено только руководством, деньгами и поддержкой. Руководство редко вмешивается. В некотором смысле управление действует как венчурные фонды, которые открывают свои кошельки, но при этом держат рты закрытыми. Команды постоянно стараются работать лучше. Это нескончаемый поиск пределов производительности.
Взаимное развитие. Совместно размещенные кросс-функциональные команды воспитывают в своих участниках стремление к высокой производительности, качеству и креативность. Члены команды работают совместно, и границы между сферами деятельности начинают размываться. На самом деле некоторые компании требуют от каждого члена команды знаний по двум специализациям (например, программирование более чем на одном языке плюс навыки тестировщика) и в двух областях (например, дизайн и маркетинг). Интенсивное взаимодействие индивидуальностей начинает задавать пульс, или темп команды.
Пересекающиеся фазы разработки. Избегая линейной последовательности в работе, команда способна поглощать «вибрацию» или «шум», создаваемый препятствиями в процессе разработки. Когда образуется «узкое горлышко», команда не приходит к внезапной остановке, но решает проблему. Пересекающиеся фазы избавляют от традиционного понятия разделения труда. Такой подход не только обеспечивает скорость и гибкость, но и способствует разделению ответственности, поощряет сотрудничество, стимулирует вовлеченность и обязательность, а также чувствительность к рыночным условиям. Недостаток в данном случае – необходимость управления интенсивным процессом, который требует прозрачности, взаимодействия, напряжения и даже конфликта.
Многоуровневое и мультифункциональное обучение. Обучение в команде идет в разных направлениях. В 3М, например, инженерам рекомендуется использовать 15 % своего рабочего времени, чтобы заниматься своей мечтой. Если команда работает с компанией Honda, ее члены могут быть отправлены в Европу, чтобы «осмотреться и понять, что там происходит». Идея в том, что обучение часто происходит в необычных местах и необычным способом и, самое главное, инициируется сотрудниками и поощряется и направляется руководством.
Тонкий контроль. Несмотря на то что команда разработки предоставлена сама себе, она работает не бесконтрольно. Акцент делается на самоконтроле и достаточном количестве контрольных точек, которые устанавливаются для предотвращения нестабильности, неопределенности и хаоса. Контроль со стороны равного и «контроль с любовью» – основы тонкого контроля. Динамическое движение возникает только в окружении, заботливо созданном руководством. Командные лидеры тщательно отбираются, а в самой команде иногда происходит замена участников, чтобы создать правильную динамику и уверенность, что люди смогут ужиться и работать вместе. В команде должен быть набор общих ценностей, а стимулы должны быть основаны на командной работе. При этом следует допускать возможность ошибок.
Передача знаний. Чтобы компания была успешной на рынке, выстраданные знания, накопленные внутри нее, должны быть доступны во всей компании, которая нуждается в новых командах с опытными людьми. Успешные мероприятия в рамках одного проекта распространяются внутри компании как стандартная практика. В то же время разучиться так же важно, как и научиться. Рынок меняется быстро, старые трюки могут больше не работать. Управление предъявляет новые требования, которые явно не могут быть удовлетворены старыми методами ведения дел.
Мы обнаружили, что некоторые практические методы также улучшают разработку программного обеспечения.
Люди. Люди наиболее продуктивны, когда управляют собой сами. Они более серьезно выполняют данные себе поручения, чем поручения, которые им дают другие. Больше творческих моментов возникает во время бездействия, и когда возникает давление, то автоматически снижается качество.
Люди в команде. Команды и люди делают работу лучше всего, когда их не прерывают. Команды больше совершенствуются, когда сами решают свои проблемы. А общение, в том числе лицом к лицу, – наиболее продуктивный способ для команды работать вместе.
Состав команды. Команды более продуктивны, если имеют один и тот же состав участников. Продукты более надежны, когда команда имеет все кросс-функциональные навыки, сосредоточенные на работе. Изменение состава команды часто временно снижает ее производительность
Даже если мы знаем лучше
Несмотря на то что предиктивный, или каскадный, процесс испытывает трудности, многие организации продолжают пытаться заставить его работать. Мы встретились в 2005 году с СТО и персоналом компании розничной торговли Marks and Spenser из Великобритании, чтобы обсудить эмпиризм и Scrum. Компания только что модернизировала весь процесс развития, приобретя в PricewaterhouseCoopers (PWC), интернациональной консалтинговой компании, набор методологий, инструментов, обучения и услуг по внедрению. Подход PWC был предиктивным, или каскадным.
Но CTO Marks and Spenser хотел понять эмпиризм. Когда мы объяснили ему процесс, он заметно разволновался, прервал нас и сказал, что его компания тоже использует эмпиризм. Всякий раз, когда один из их больших проектов по разработке, основанный на подходе PWC, попадает в беду, они его останавливают и затем применяют другой подход, чтобы вернуть процесс на правильный путь или закончить. Он сказал, что это их «туз в рукаве», имея в виду трюк, который позволяет компании выходить из трудных ситуаций.
Мы спросили, что он делает после того, как эмпирический подход вытягивает его из трудной ситуации. Не без иронии он ответил, что они потом возвращаются к использованию утвержденного подхода PWC. Знание правильного пути не означает, что по нему позволено идти все время, а не только в критических ситуациях.
Гибкость
Поскольку наш мир становится все более сложным, для организаций и бизнеса открывается все больше перспектив. Мечта каждого предпринимателя и бизнесмена с душой предпринимателя – воспользоваться преимуществом новой возможности, выяснить, какая будет цена и какие риски нужно предвидеть. Если риски приемлемы, предприниматель захочет продолжить шаг за шагом, настолько быстро, как только можно, чтобы воспользоваться открывающимися возможностями. Тем не менее, как бы мы ни хотели контролировать риски, все может быстро выйти из-под контроля. Здесь очень желательны смелая осторожность и осторожная смелость. Мы называем способность брать преимущество от появляющихся возможностей гибкостью. Мы можем развернуться на месте, немедленно развить смелые инициативы и начать управлять рисками. Мы можем заставить наших конкурентов рыдать по утрам и мы можем радовать наших новых клиентов. Гибкость – это способность пользоваться возможностями или бороться с трудностями с расчетными рисками. Сегодня это наиболее значимое конкурентное преимущество. Мы создаем это преимущество и контролируем риски, ограничивая все наши проекты сроком в 30 дней или меньше. В этом случае мы можем пробовать идеи и без сожаления от них отказываться. Уже на ранней стадии нам понятно, что они, к примеру, слишком дорогостоящие или нереальные. И мы останавливаемся до того, как потратим слишком много денег.
Итог
Нужно уметь пользоваться открывающимися возможностями и эффективно реагировать на вызовы. Необходимо пробовать множество идей, менять свое мнение и давать ход лучшему решению.
Менее рискованно, с большим контролем и быстрее вы можете получить первый результат в течение 30 дней и затем совершенствовать его.
Эмпирический процесс разработки программного обеспечения, использующий итеративно-инкрементальные методы, с нами уже более чем 20 лет. Используя его, вы можете создать плотный контроль над рисками с помощью ограниченных по времени инкрементов программного обеспечения. Это обеспечивает прозрачность путем доставки законченного, готового к использованию прироста полезного функционала каждые 30 дней (или в меньший срок), так что потери могут быть сведены к минимуму. Это обеспечивает скорость и гибкость настройки приложения для более полного удовлетворения возникающих потребностей и тем самым значительно увеличивает применимость. Мы больше не беспокоимся, что наши требования не будут выполнены. Мы больше не волнуемся, что бюджет увеличится. Мы больше не должны зависеть от абстрактных представлений о динамике проекта, таких как диаграммы Ганта или прототипы. Мы точно знаем, где мы находимся с точки зрения ценности продукта и графика, по крайней мере каждые 30 дней.
3. Попробуй это сам: пилотный проект
Если вам все еще интересно, сейчас самое время увидеть, решает ли эмпирический подход к разработке программного обеспечения ваши проблемы и отвечает ли вашим потребностям. Пришло время создать пилотный проект – небольшое предварительное исследование, – чтобы оценить целесообразность, временные и финансовые затраты и выявить побочные эффекты. В этой главе мы вам расскажем:
1) как провести пилотное исследование этого нового метода разработки программного обеспечения;
2) какую информацию вы сможете обрести в ходе этого исследования;
3) как это работает для других людей (проблемы, которые они обнаружили, и что потребовалось для их решения).
В этой главе мы также остановимся на том, что вы должны сделать, чтобы добиться успеха, шаг за шагом, дадим более подробное описание и проиллюстрируем его примерами. Они могут быть прочитаны позже, когда эксперимент уже будет идти полным ходом.
Процесс, которому вам необходимо следовать во время пилотного проекта, достаточно прост:
1) сформируйте команду;
2) подумайте, что бы вы хотели создать;
3) закончите маленький кусочек работы полностью;
4) оцените, что бы вы хотели сделать следующим;
5) определите, что может быть улучшено, и улучшите это;
6) продолжайте повторять шаги с третьего по пятый, пока не будете удовлетворены результатом.
Прежде чем начать, обдумайте, что случится, если пилотный проект будет неудачным, или что – если он закончится успехом. Сколько времени и денег вы готовы потратить на то, что может и не работать. Что вы будете делать, если ценный функционал у вас будет получаться, инкремент за инкрементом, и вы захотите продолжить? К концу пилотного проекта вы будете знать, захотите ли вы повторить эмпирический процесс разработки программного обеспечения в большем масштабе. Конечно, у вас будет программа, которая была разработана во время пилотного проекта.
Эмпиризм используется в организации везде
Еще одна вещь, которую нужно осознать до того, как начать пользоваться эмпирическим процессом, – то, что он уже давно укоренился в других частях вашей организации и кажется новым только для разработки программного обеспечения. Например, типичная торговая организация использует эмпиризм в течение всего годового цикла. Вначале они составляют годовой план – прогнозируется ожидаемый объем продаж за год. В течение первых нескольких месяцев года перспективы понятны и шаги для продвижения продаж определены. Потенциальные клиенты, которые, вероятно, станут покупателями, уже известны и включены в прогнозы на второй квартал. Прогнозы на вторую половину года не определены и включают в себя только идеи и цели. В течение года менеджеры по продажам продолжают обновлять каналы сбыта. Возможные доходы могут быть предсказаны только на два или три месяца вперед, а в остальном план остается неясным. Каждый месяц продажи, изменения в предстоящих продажах, а также прогнозы пересматриваются. Дальнейшие усилия по сбыту и экспедиционные расходы компании соответствующим образом корректируются.
Вот как выглядит процесс.
1. Сформируйте команду. Соберите всех менеджеров по продажам вместе, обсудите, как идут дела в компании, проведите обзор конкурентов, информируйте продавцов обо всех новых продуктах компании.
2. Обдумаете, куда бы вы хотели двигаться. Создайте каналы сбыта, определите цели и доходы за год с небольшой точностью. Определите территории и доли рынка.
3. Сделайте маленький фрагмент работы полностью. Продавайте в течение месяца, чтобы посмотреть, что получилось. Также посмотрите, что получилось с будущими каналами сбыта.
4. Обдумайте, что бы вы хотели сделать следующим. Обновите каналы сбыта и сфокусируйте усилия на следующем месяце.
5. Продолжайте делать и оценивать. Повторяйте эти шаги каждый месяц.
Торговая организация никогда не будет использовать предиктивные процессы в своей работе. Слишком мало что известно и слишком многое может измениться, чтобы планировать доходы и их источники в первый день года.
Пример пилотного проекта
Как мы говорили ранее, пилотное исследование – небольшой эксперимент, чтобы оценить выполнимость проекта, временные и финансовые затраты, а также побочные эффекты. Его цель состоит в том, чтобы определить, помогут ли эмпирические процессы в разработке программного обеспечения. Мы предлагаем опробовать наш метод на том, что доставило вам серьезные проблемы. Это должно быть что-то ненадежное, сложное, в чем вы не уверены.
Следующий пример пилотного проекта может послужить вам моделью. У финансовой организации из Огайо множество совместных фондов для различных отраслей и клиентов. Большинство клиентов управляют своими счетами онлайн через интернет-портал. У вице-президента фондового отдела имелся смартфон, на котором он пользовался приложениями для оплаты счетов. У него возник вопрос, возможно ли создать приложение, позволяющее клиентам управлять своими фондами через телефон. Такое приложение повысило бы активность текущих пользователей. Если о будущем приложении для смартфона сообщить заранее, до конкурса на разработку, то за это время можно привлечь дополнительных клиентов.
Он передал свою идею в IT-отдел и попросил о помощи. В IT-отделе эта идея понравилась, и они были готовы ее развивать, это отвечало их потребности совершенствоваться в области мобильных технологий. IT-команда предложила начать с разработки требований к приложению. Они подсчитали, что на это потребуется пять или шесть месяцев. Когда станут известны требования, они смогут зафиксировать сроки и стоимость проекта. Пять аналитиков и один управляющий проектом разработают требования.
Вице-президент должен был инвестировать только лишь в первую фазу проекта 500 тысяч долларов – приличные деньги всего лишь за описание требований того, что он хотел. Цена разработки самого приложения была неизвестна, но можно было предположить, что она будет в разы выше первоначальных затрат. Ему следовало предоставить предложения своему начальнику в комитете финансов и в IT (для планирования). Никто не хотел рисковать такими средствами без полной уверенности в успехе продукта.
Пилотный проект призван был определить, насколько все это экономически оправданно. Используя эмпирический метод разработки программного обеспечения, вице-президент мог бы это быстро оценить. Также можно было бы в ходе пилотного проекта создать наиболее важную часть приложения. Вице-президент предположил, что ему нужно только три итерации разработки программного обеспечения. Для этого необходимы три разработчика и бюджет в 125 тысяч долларов.
Чтобы получить одобрение пилотного проекта, он приготовил презентацию, с которой направился к руководству, менеджерам своего отдела и в IT-отдел. Он обсудил с ними, что именно хотел бы сделать. Первый слайд презентации устанавливал цель пилотного проекта: определить, будет ли это приложение для смартфона хорошей инвестицией для организации. Он показал, как приложение встраивается в бизнес-стратегии организации, и бегло описал суть эмпирического процесса разработки – как это работает и почему он хочет его попробовать. Затем шло описание всего проекта. Он рассказал, что результатом пилотного проекта может стать работающее приложение, которое в дальнейшем можно совершенствовать. Полная стоимость приложения может быть экстраполирована на основании данных трехмесячного пилотного проекта. Также вице-президент и вся организация получат шанс понять, подходит ли эмпирический процесс для их компании.
Он немного подправил свой план по результатам замечаний, в частности добавил в команду разработки проекта менеджера из IT-отдела, который имел опыт работы с итеративным, инкрементальным процессом разработки программного обеспечения. Это увеличило бюджет до 170 тысяч долларов, но могло помочь IT-отделу дать оценку эмпирическому процессу разработки. Представитель IT-отдела должен был стать менеджером пилотного проекта. При наличии свободного времени ему также следовало помогать команде разработчиков с тестированием приложения.
Вице-президент получил одобрение при условии, что все заинтересованные лица в его отделе и в IT-отделе смогут проверять динамику в разработке приложения каждый месяц.
Формирование команды
Когда пилотный проект одобрили, первым шагом стало формирование команды с участием проект-менеджера из IT-отдела. Изначально было решено делать проект только своими силами, без привлечения сторонних разработчиков. Затем в компании выяснили, кто из сотрудников подходит для участия в пилотном проекте. О том, можно ли сотрудника считать хорошим разработчиком, можно узнать по его способности создать инкремент программного обеспечения. И конечно, лучше, если это станет ясно через месяц после начала разработки, чем по окончании 12 месяцев каскадного проекта. В итоге была создана IT-команда, каждый член которой отвечал определенным требованиям.
1. Понимает, как создать программное обеспечение, используя технологии, необходимые для пилотного проекта.
2. Имеет все необходимые навыки для разработки законченного фрагмента приложения.
3. Осведомлен об итеративно-инкрементальном процессе разработки. По крайней мере один участник команды должен иметь опыт создания программ этим методом, чтобы направлять других.
4. Каждый участник команды должен быть добровольцем, а не призывником.
5. Участник должен быть увлечен проектом.
Менеджер проекта помог обеспечить соответствующую обстановку для проведения пилотного проекта. В связи с тем что разработчики должны превращать в программное обеспечение идеи именно вице-президента, они организовали рабочее пространство в непосредственной близости от его кабинета. Менеджер проекта также предложил некоторые шаги.
1. Рабочее пространство должно быть организовано таким образом, чтобы все члены команды могли легко видеть, слышать друг друга и друг с другом эффективно взаимодействовать. Это позволит быстро обнаруживать и устранять недопонимания. Рабочее пространство должно быть открытым, без разделяющих перегородок.
2. Флипчарты и лекционные доски в рабочем пространстве могут помочь членам команды визуализировать возможности и найти идеи. Пространство должно обеспечивать место для работы и хранения инструментов на всем протяжении создания пилотного проекта.
3. Члены команды должны работать полный день, так как частично задействованные члены команды могут быть недоступны, когда в них нуждаются остальные. Даже когда они доступны, они могут продолжать думать о других обязанностях.
4. Вся работа должна быть ограничена обычным рабочим временем. Превращение требований в готовый к использованию инкремент программного обеспечения требует решения проблем. Отправляя членов команды по домам в конце обычного рабочего дня, вы позволяете их подсознанию найти новые подходы и обнаружить ошибки.
Итак, вице-президент сформировал команду, состоящую из него, менеджера проекта и трех разработчиков программного обеспечения.
Создание послания, притягивающего членов команды
Иногда очень сложно привлечь к проекту хороших разработчиков. Вы можете испытать такие проблемы, если люди не понимают, что эта задача значит для них. Каждый будущий участник команды должен понимать цель и масштаб работы в пилотном проекте.
Послание компании Curaspan, отталкивающее потенциальных сотрудников. Вот вам пример. Онлайн-приложение компании Curaspan используют больницы для передачи документов пациентов после выписки на реабилитацию или другие долгосрочные мероприятия, выполняемые после госпитализации. У компании Curaspan возникли проблемы. Это приложение было создано более десяти лет назад, и его работа стала неприемлемо медленной. Звонки в службу поддержки клиентов стали практически непрерывными.
Эдвина Миллера взяли на позицию вице-президента по управлению продуктами компании. Ранее он перевел несколько компаний на эмпирический метод разработки программного обеспечения. Руководство Curaspan ожидало, что он это сделает и в их компании. Миллер начал набор разработчиков для создания следующего поколения программного обеспечения. В поиске сотрудников он пошел по обычному пути: старые знакомые, люди, известные в индустрии, и агентства по набору персонала. Он просматривал резюме и приглашал подходящих людей на собеседование. Он сделал несколько предложений соискателям, но ни одно не было принято.
Проблема заключалась в том, что руководство и разработчики в Curaspan не были убеждены в том, что эмпирический подход правильный, и не понимали его. Отсутствие у них стратегической приверженности, незнание работы, которую люди будут делать, и их антипатия к эмпирическим процессам пугали соискателей. Даже в условиях экономического кризиса хорошие разработчики находили альтернативные предложения трудоустройства.
Люди чувствуют хорошие вещи. Даже если вы собираетесь экспериментировать с тем, чего вы не делали раньше, то должны создать четкое послание для людей, которых вы хотите привлечь (внутри организации или вне ее). Опишите перспективы и то, что вы для этого сделаете.
Рассредоточенная команда в Iron Mountain. Iron Mountain Digital – это компания по хранению и управлению данными стоимостью 3,1 миллиарда долларов. Она предоставляет услуги по внеофисному хранению резервных цифровых данных с помощью продукта LiveVault. В 2006 году продукт LiveVault испытывал трудности. Новая версия программного обеспечения не выходила более 12 месяцев. Отдельные люди в LiveVault читали об эмпирическом методе разработки программного обеспечения Scrum, но по-прежнему использовали старые методы. Не зная этих трудностей, маркетинговое крыло компании Iron Mountain заключило контракт с Microsoft в июне 2007 года. Microsoft обеспечивала своих пользователей программным обеспечением, постоянно создающим резервные копии. Резервные копии создавались на локальном сервере, и в Microsoft хотели предложить внеофисное хранение резервных данных в LiveVault в качестве альтернативы.
Как менеджер по продукции компании Пол Луппино заключил соглашение с Microsoft на выпуск нового релиза LiveVault. Контракт предполагал, что Microsoft начнет обеспечивать своих клиентов внеофисным хранением резервных данных к февралю 2008 года. Компания Iron Mountain предложила Полу стать менеджером по разработке этого продукта. Трудиться над ним предстояло в течение шести месяцев.
Пол был прижат к стенке, и его работу еще более затрудняло то, что ему приходилось управлять командами разработчиков, расположенных в разных местах. У Пола было множество партнеров, корпоративные обязательства, необходимость соблюдения даты выпуска, подавленная неудачами команда и 12 месяцев истории постоянных провалов.
Он слышал о Scrum, поэтому немедленно заказал обучающие курсы для всех участников проекта в Iron Mountain и одновременно начал разработку итераций. Пол не знал, какие у него могут возникнуть проблемы, но он знал, что, если все исследовать и обдумывать планы, могут пройти месяцы. Он решил начать разработку сразу, а проблемы решать по мере их поступления. Итерации позволят ему и Iron Mountain знать в пределах 30 дней, есть ли у них проблемы и выполним ли проект.
Все испытывали трудности из-за физической дистанции между командами разработчиков. Видеоконференции были дорогими, Skype работал недостаточно хорошо, и расходы на переезды также очень высоки. Каждый участник координировал свою работу во время ежедневных совещаний (используя дорогостоящие видеоконференции, электронную почту и инструменты социальных сетей), связывающих разработчиков из Iron Mountain в Массачусетсе, разработчиков Microsoft в Индии и менеджеров Microsoft по продуктам в Вашингтоне, чтобы оценивать прогресс в разработке и вносить изменения в дальнейшие планы.
Все менеджеры проверяли прогресс в создании инкремента каждые 30 дней. Сначала люди, находясь в разных местах, изучали законченный инкремент и затем в формате телеконференции обсуждали прогресс и проблемы, а также планировали объем работы для следующей итерации. Обучающие курсы помогли каждому стать более организованным. Пол обновил рабочее пространство в Iron Mountain, чтобы команда разработки стала более продуктивной и эффективной. Потери от нескоординированной работы, которую приходилось переделывать, были устранены. Потери от ручного тестирования, которое можно делать автоматически, также были устранены. Высшее руководство Iron Mountain решило развивать LiveVault. Новая маркетинговая программа и усилия по продвижению были запущены. Еще три релиза выпустили в течение следующих шести месяцев.
Подумайте, что вы хотите сделать
Вернемся к истории финансовой организации из Огайо, вице-президент которой расположил команду разработки рядом со своим офисом. Он поделился своими идеями о приложении и сказал, что хочет проверить эмпирический процесс разработки, чтобы узнать, поможет ли он быстро создать приложение. Члены команды провели целый день, узнавая друг о друге. Они анализировали, как может выглядеть приложение, и выбрали первоначальный внешний вид пользовательского интерфейса. Они оценили требования по защите, производительности и стабильности будущего приложения и составили список того, что приложение сможет делать, когда будет закончено, и что они, по их мнению, смогут реализовать за три месяца итераций.
Команда решила, что, для того чтобы оценить, будет ли разработка осуществимой, они должны выяснить в течение первой итерации следующее.
1. Может ли команда разработки создать приложение в рамках существующей технологии?
2. Можно ли приложение эффективно подключать к функционалу портала без использования интерфейса интернет-портала?
3. Как должно выглядеть это приложение?
Члены команды определили, что должно быть выполнено и какой функционал должен быть реализован, чтобы ответить на эти вопросы. Программа-минимум состояла в том, чтобы получить на экране страницу регистрации, но отклонять идентификационные данные пользователя. Максимальная же цель была в том, чтобы регистрация работала и открывала функционал портала в приложении.
Пять членов команды никогда не работали вместе, кроме того, ни один из них никогда не работал с таким типом приложений и технологий. У них было много предложений и возражений. Чем больше они разговаривали, тем больше сталкивались с трудностями совместной работы. Необходимость создать инкремент по окончании итерации добавляла больше стресса.
Чрезвычайно важны обсуждения, за которыми стоят сильные чувства участников. Но такие обсуждения возможны только тогда, когда все ощущают себя защищенными. Каждый должен чувствовать, что его мнение будет принято с уважением. Каждый должен иметь возможность спорить, не соглашаться и бороться за применение лучшего подхода к решению проблемы. Менеджер пилотного проекта уже проходил это раньше. Он рассказал членам команды об уважении и помог создать правила этикета общения в команде. В соответствии с ними было запрещено отбрасывать идеи и мнения других, относиться друг к другу пренебрежительно и использовать оскорбления. Без этих и других правил работа в команде в открытом общем офисе может стать трудной.
Сделайте маленький фрагмент работы полностью
Первоочередной задачей проекта стало планирование того, как будет выглядеть приложение. Следующий шаг – планирование того, как команда начнет превращать дизайн приложения в работающее программное обеспечение.
Команда должна была подводить ежедневные итоги и давать оценку тому, что сделано в течение дня и какие проблемы возникли, а также решать, каким наиболее важным задачам будет посвящена завтрашняя работа.
День за днем члены команды подгоняли друг к другу различные фрагменты общей головоломки. Они учили приложение подсоединяться через операционную систему смартфона к интернет-приложению портала. Кроме того, определяли коммуникационные протоколы для взаимодействия и разбирали, как активировать функциональные возможности входа в систему на портале. Вице-президент и менеджер пилотного проекта напомнили, что приложение должно быть защищенным, стабильным и производительным. Члены команда провели ряд тестов, чтобы оценить эти характеристики, и внесли изменения в программное обеспечение, чтобы соответствовать этим требованиям.
Примечание: сотрудники IT-отдела постоянно приходили в офис команды разработки с различными просьбами и мешали команде. Менеджер проекта попросил их всех уйти и решать свои проблемы где-нибудь в другом месте.
Даже то, что, казалось бы, вызывает незначительную задержку, может снизить общую эффективность команды более чем на 50 %. Вице-президент знал, что висит на крючке у руководства, желающего проверить эффективность эмпирического процесса, и не хотел все испортить из-за того, что его сотрудников отвлекают.
Оцените, что бы вы хотели сделать дальше
Команда разработала часть программного обеспечения для приложения к концу итерации. Теперь кто угодно мог скачать приложение на смартфон, запустить его и увидеть такую же страницу входа в систему, которую видят пользователи портала. Приложение работало стабильно, отвечало всем требованиям и было готово к дальнейшему безопасному улучшению. Несмотря на то что члены команды разработки надеялись добавить больше функционала, чем просто вход в систему, они были довольны полученным результатом, так же как и вице-президент.
Вице-президент организовал четырехчасовое совещание в конце итерации, чтобы провести разбор того, что получилось. Несколько человек из фондового отдела и некоторые менеджеры из отдела информационных технологий также были приглашены на совещание. С их помощью вице-президент и члены команды разработки дали оценку, как работает эмпирический процесс, обсудили политику непрерывности девелопмента и убедили остальных в ее необходимости, а кроме того, оценили дизайн приложения и то, как оно соединяется с интернет-порталом. Было предложено несколько улучшений.
В конце совещания менеджер пилотного проекта напомнил всем, что они должны решить, стоит ли продолжать разработку в оставшиеся две итерации. Несколько человек выразили мнение, что знаний, полученных в ходе пилотного проекта, вполне достаточно и он может считаться завершенным. Фондовый менеджер не был с этим согласен, его поддержали большинство участников совещания, которые решили продолжить, чтобы узнать, будет ли эмпирический процесс продолжать работать. Также они хотели дальнейшего улучшения функционала приложения для смартфонов.
Некоторые участники совещания были настроены критически. Они заявили о своем разочаровании и напомнили разработчикам, что те планировали запустить вход в систему, но не смогли этого добиться. Вице-президент возразил, заявив, что они вступили в незнакомое поле и члены команды экспериментируют и учатся. Они сделали максимум возможного в ходе первой итерации и обрели навыки и опыт.
Дискуссия пошла в сторону обсуждения различий между традиционным, или предиктивным, методом разработки и эмпирическим процессом. Вице-президент при поддержке менеджера пилотного проекта напомнил всем, что цель эмпиризма – определение границ возможностей того, что можно сделать. Так как все увидели результаты итерации, они могут планировать следующий этап работы. Он напомнил, что даже после одной итерации у них уже есть фрагмент работающего приложения. Более того, они получили ценное доказательство, что приложение жизнеспособно и уже сейчас есть что показать потенциальным клиентам. Имеется готовый блок программного обеспечения, который можно достраивать. Если бы это был предиктивный процесс, который он рассматривал изначально, то на данном этапе он в лучшем случае получил бы только документацию по требованиям к будущему приложению.
Вице-президент принял решение показать приложение некоторым своим клиентам, чтобы определить, будут ли они в действительности им пользоваться. Он станет работать с клиентами в течение каждой итерации и пригласит их на следующее совещание, чтобы они смогли высказать свое мнение.
Определите, что может быть улучшено, и сделайте это
Менеджер пилотного проекта предложил организовать встречу команды и провести ретроспективный обзор предыдущей итерации. Он хотел, чтобы члены команды открыто обсудили свои ощущения и мнения о том, как может быть улучшен порядок работы.
Все перечисленное ниже может случиться в течение итерации, и команде следует это обсудить.
Очень мало функционала было создано. Команда разработки должна всегда стараться предоставить как минимум один элемент бизнес-функционала с каждой итерацией, даже если он будет небольшим. Однако в некоторых случаях разработчики могут сделать слишком маленький фрагмент функционала или не создать полезного функционала совсем. Они, возможно, должны много сделать в областях, которыми следует заняться в первую очередь: в технологии, архитектуре или автоматизации, и это не оставит достаточно времени на реализацию функционала. Или они просто не обладают достаточными навыками в разработке, чтобы оправдать затраты, и должны быть переучены, или их надо заменить.
Предоставленный функционал недостаточно близок к желаемому. Вице-президент мог обнаружить, что разработчики не понимают, чего он хотел, поэтому ему следует более тесно сотрудничать с членами команды, чтобы более эффективно доносить до них идеи и требования и быть уверенным, что они их поняли. Если члены команды мало знают о мобильных приложениях или управлении фондами, он должен проводить больше времени, работая с ними, или найти новых членов команды.
Итерация кажется неуклюжей. Не исключено, что члены команды пилотного проекта чувствуют себя так, словно изучают новый танец. Им надо понять, как работать вместе по-другому таким образом, чтобы чувствовать себя лучше и получать более впечатляющие результаты.
Члены команды могут вообще не работать вместе хорошо. Необходимо подробно проанализировать, как члены команды взаимодействуют друг с другом, иногда бывает полезно пригласить внешнего посредника, который может показать пути более эффективной совместной работы и принятия решений. Иногда приходится реорганизовывать команду, вводить в нее новых участников. Конечно, создание новой команды означает, что предыдущий опыт будет потерян.
Основываясь на результатах обсуждения, менеджер пилотного проекта попросил членов команды сформулировать изменения, которые смогут улучшить их работу и повысить эффективность в течение следующей итерации.
Продолжайте делать и оценивать, пока не закончите
Пилотный проект создает одну, иногда две полезные вещи. Во-первых, это оценка итеративного или инкрементального процесса разработки программного обеспечения в вашей организации. Во-вторых, это, возможно, программное обеспечение, которое вы начинаете использовать и получать выгоду.
Реальный вопрос, на который отвечает пилотный проект, – работает ли эмпирический процесс в вашей организации? Итерация за итерацией накапливаются видимые свидетельства, показывающие, насколько хорошо работают команды, какова продуктивность и как ее можно повысить. Приходит понимание, насколько хорошо подготовлены сама организация и разработчики для альтернативного, инкрементального процесса девелопмента. Кроме того, становится ясно, способны ли члены команды создать нечто полезное за одну итерацию, в состоянии ли они преодолеть трудности и действовать именно как команда.
Предстоит также оценить влияние, которое итеративно-инкрементальный метод разработки окажет на остальную часть организации. Возможно, люди, задействованные в команде, имеют исключительные знания и нужны во всех подразделениях компании. Иногда члены команды имеют столько обязанностей за пределами пилотного проекта, что просто не могут состоять в команде разработчиков, и в результате общая производительность падает.
Несмотря ни на что, вы будете накапливать, итерация за итерацией, функционал программного обеспечения. Это произойдет быстрее, чем вы привыкли. Вы сможете преодолеть проблемы и построить то, что может быть впоследствии доделано и реализовано.
Когда применяется каскадный процесс, изъяны его не очевидны и влияние на общую важность девелопмента скрыто. Когда вы применяете 30-дневные циклы разработки, все, что не функционирует в каскадном процессе, все его потери становятся видимыми.
Это полезная информация, но часто она требует необходимости согласованных усилий для улучшения ситуации. Эти усилия подробно описаны в разделе II.
Члены команды могут применять новые для них методы работы
Самоорганизация
При эмпирическом процессе члены команды разработки сами решают, как превратить предоставленные им требования в пригодный к использованию функционал. Нет управляющего, который говорил бы им, что делать. Члены команды взаимодействуют друг с другом, чтобы разработать и согласовать собственный план работы. Они проводят короткие совещания каждый день, чтобы спланировать свою работу, отрегулировать ее и оптимизировать результат.
Самоорганизация кажется рискованной. Если на нее затрачивается слишком значительное время, это мешает членам команды сфокусироваться на главной идее. Однако при итерации в 30 дней или меньше этого обычно не происходит. Помните, что, пытаясь определить, на что способна команда, вы никогда не рискуете более чем 30 днями работы.
При предиктивном методе разработки программного обеспечения планы создаются так называемыми экспертами. Менеджеры проектов уверены, что девелоперы выполнят задачи, за которые они ответственны, – им не нужно взаимодействовать и изучать что-то новое, они всего лишь делают то, что им велели. Когда менеджер планирует работу и гарантирует ее выполнение, все зависит от его интеллекта, сообразительности, организационных навыков и так далее. Когда случаются неприятности и непредвиденные ситуации, члены команды не уполномочены действовать самостоятельно, они не склонны брать на себя риски по внедрению инноваций.
Самоорганизация основана на идее, что разработчики программного обеспечения – способные, образованные люди. Они могут проживать сложную жизнь за пределами своего рабочего места, умеют водить машину, имеют семьи, ходят в магазин и так далее. Когда они предоставлены сами себе в ограниченном времени итерации, то ведут себя ответственно. Результат – это сумма их способностей, и инкремент возникает из их взаимодействия.
Вот вам еще один пример. Вице-президент компании РТС по разработке программного обеспечения Сильвин Муссад работал непосредственно с Джейн Вачутка. В его подчинении находилось более 300 девелоперов ПО. Он и его менеджеры изначально считали, что необходимо распределить процесс разработки среди 50 команд. Они так и поступили и создали лучшие команды, которые только смогли. Но при этом команды оказались не очень продуктивными.
Лидеры команд сообщили Сильвину, что каждой команде была назначена цель, реализация которой в значительной степени зависит от работы других команд. Как результат 75 % времени тратилось на разрешение зависимости между командами. Иногда единственный человек, который мог сделать необходимую работу, находился в другой команде. Сильвин попросил лидеров команд обдумать более эффективный способ организации. В результате приняли решение, что во время каждой итерации лидеры станут оценивать предстоящий объем задач и определять наличие в каждой команде разработчиков, лучше всего подходящих для выполнения специфического набора заданных требований.
Вы можете спросить, как такое большое количество людей может управлять собой самостоятельно. Некоторые могут также спросить, как один менеджер может управлять таким большим количеством людей. То, что дало возможность Сильвину позволить его разработчикам перейти к самоорганизации, – контролируемый риск. Он никогда не рисковал более чем 30 днями работы. Так как текущий подход к разработке программного обеспечения показал себя не слишком хорошо, ставка на новый метод в его случае была оправдана.
Кросс-функциональность
Когда команда самоорганизуется, люди с лучшими способностями делают шаг вперед, поддерживаемые другим членами команды. Они обсуждают, как реализовать тот или иной фрагмент работы, после чего каждый участник команды отправляется делать свою часть. Члены команды часто изучают результаты, чтобы удостовериться, что они все движутся в нужном направлении для создания пригодного к использованию инкремента.
Принцип кросс-функциональности диаметрально противоположен предиктивной модели управления, в которой работы изложены в качестве детальных задач и каждая из них поставлена определенному лицу, имеющему набор конкретных навыков. Однако такой подход не дает людям работать совместно. Мы обнаружили, что разработчики программного обеспечения создают лучше решения, когда все их знания сфокусированы на проблеме. Их перекрывающиеся знания больше любых уникальных знаний единственного человека.
ВЫВОДЫ
Мы описали программу пилотного проекта, который показывает, как можно определить, каким образом вам поможет эмпирический процесс разработки программного обеспечения. Пилотный проект не только позволит вам получить уверенность, прежде чем продолжить, но и поможет предвидеть проблемы, с которыми придется иметь дело впоследствии.
4. Что могу сделать я?
Если вы читаете эту главу, значит, вы решили идти дальше с эмпирическим подходом к разработке программного обеспечения. Вы можете быть увлечены или заинтригованы, а может, вы жаждете преимуществ, продемонстрированных пилотным проектом. В любом случае вы знаете, что это лучше, чем то, что у вас есть сейчас.
Хотя многие другие части вашей организации, такие как отдел продаж и финансовый отдел, действуют эмпирически, это в новинку для ваших разработчиков программного обеспечения. И они, и заказчики использовали предиктивный метод. Они, скорее всего, знакомы с ним уже несколько лет, может, даже больше, и для них это единственный путь.
Менеджеры спрашивают, что они могут сделать, чтобы помочь эмпирическому методу разработки добиться успеха. В следующих частях книги мы обсудим практические способы применения эмпирических методов и их перспективы.
Практика – искусство возможностей
Эмпиризм позволяет достичь ваших целей лучше и быстрее. В прошлом разработка программного обеспечения начиналась с планирования – от разработчиков ждали точного выполнения плана, без учета реальности, с которой они сталкивались.
При эмпирическом подходе к разработке план создается тогда, когда он нужен. Устанавливается цель, и команда идет к ней итерация за итерацией. В план, если необходимо, вносятся изменения на основании полученного опыта. Путь к цели может отличаться от изначально задуманного, но он адаптируется и оптимизируется в соответствии с реалиями, с которыми пришлось столкнуться. Проект заканчивается, когда возврат вложенных в него инвестиций оптимален. Это может случиться даже раньше, чем вы задумали. Например, проект может быть закончен после двух итераций, если вы обнаружите, что достичь цели при разумном вложении средств невозможно. Это тоже успех – удачно избежать напрасных потерь больших денег.
Давайте поговорим об этом подробнее. Если бы F-Secure, финская фирма по разработке программного обеспечения в сфере безопасности, продолжила разработку в течение полного запланированного цикла, деньги, которые они бы потратили на последующие итерации, просто оказались бы потеряны, потому что продукт вышел бы слишком поздно. Команда оценила, сколько требований она сможет перевести в прирост функционала. Это оценка, прогноз, это не гарантия и не несомненный факт. В течение итерации член команды может заболеть, какая-то часть технологии может не работать, а сам процесс разработки может оказаться сложнее, чем ожидалось. Это сложность в действии. В конце итерации вы опытным путем определяете, сколько функционала реализовано. Это может быть больше или меньше того, что предполагалось. Тем не менее вы точно знаете, что именно уже разработано, и можете принять решение, что делать дальше, опираясь на результат. Эмпиризм не создает уверенности, он заставляет осознавать возможности.
F-Secure разрабатывает в Финляндии антивирусные программы и программное обеспечение в сфере безопасности для международного рынка. Партнер компании предложил ей войти в специфический сегмент рынка антивирусного обеспечения, где она раньше не участвовала, – предстояло разработать дополнительный функционал для партнерской компании, которая затем бы продавалась под ее брендом.
F-Secure использовала эмпирический подход к разработке программного обеспечения в течение трех лет. В компании знали, сколько в среднем полезного функционала ее команды разработки могут создать в течение одной итерации. Основываясь на этом знании, она согласовала с партнерской компанией план разработки: создать частичный релиз программного обеспечения к запланированной пресс-конференции, а вскоре после этого выпустить на рынок первый релиз. К несчастью, команды F-Secure, назначенные для разработки этого продукта, создали в течение первых трех итераций меньше функциональных возможностей, чем планировалось, – 25 % необходимого для пресс-конференции. Уже было ясно, что продукт не будет готов вовремя.
Партнер и руководство F-Secure обсудили замедление прогресса в разработке и приостановили все процессы. Деньги были потрачены, но ничего полезного не было создано. Партнер, узнав, что не получит продукт в срок, остановил все приготовления к пресс-конференции, свернул маркетинговую активность и тем самым спас себя от потери репутации на рынке. Ценным опытом, полученным в результате этого проекта, было ограничение потерь.
Многие люди испытывают трудности с эмпирическим процессом. Может так случиться, что команда не разработает столько функциональных возможностей, сколько планировалось. Тому, кто вкладывает деньги, труднее всех: он точно знает, что хочет получить после каждой итерации, и, если команда не оправдывает ожиданий, заказчика ждет разочарование. Демонстрируя его, он, по сути, разрушает эффективность и дух команды.
Эмпиризм – искусство сделать лучшее, что ты можешь, с тем, что у тебя есть. Эмпиризм открывает все виды возможностей. Однако если вы думаете, что можете решить, чего вы хотите, и давить, чтобы это получить, к сожалению, это закрывает перед вами другие возможности. Вы больше не имеете дела с реальностью, а стараетесь сделать реальностью то, что хотите, приказываете. Такой подход может быть приемлем в простой ситуации, но, когда проблема сложная, он лишь деморализует и разочаровывает.
Самая важная задача менеджера – помочь людям делать их работу. Дайте им цель и позвольте им ее достичь. Уберите с их пути все препятствия. Делайте все возможное, чтобы они стали более эффективными и продуктивными. Только в этом случае организация может превратить плоды их работы в капитал.
Требовать прозрачности и создать соответствующую обстановку для ее процветания
Чтобы принять обоснованное решение, у вас должно быть твердое понимание реальных фактов. В эмпирическом процессе разработки программного обеспечения инкремент – ясная и прозрачная информация, на которой основано принятие решений.
Люди должны чувствовать себя в безопасности, обсуждая критические вопросы, открыто выражать то, что они думают и чувствуют, и взаимодействовать с другими без препятствий и вреда. Все это – основа эмпирического процесса. Множество рабочих пространств небезопасны. Политические программы и скрытые мотивы искажают прозрачность. Основная задача менеджера – создать защищенное место, где люди уважают друг друга и чувствуют себя в безопасности.
Прозрачность нейтральна в том смысле, что это не хорошо и не плохо. Она просто должна быть. Обсуждение необходимо при принятии трудных решений. Если решения принимаются в угоду руководству, если разработчики искажают реальность, чтобы нравиться начальству, эмпирический процесс развалится на части.
Компания Kronos из Бостона – девелопер софта для планирования ресурсов организации и учета рабочего времени. Компания предприняла попытку использовать эмпирический метод, чтобы ускорить свои процессы разработки. В 2008 году правление компании было недовольно прогрессом в разработке нового релиза. Команде девелоперов дали это понять и попросили работать усердней. Те, пытаясь соответствовать требованиям руководства, стали создавать функционал быстрее, чем обычно, но с гораздо более низким качеством.
В конце каждой итерации руководство поощряло разработчиков за их тяжелый труд. Однако инкремент не был прозрачным. Руководство думало, что инкремент полностью закончен и стабилен, а он между тем был только частично законченным и практически полностью нерабочим. Когда Kronos приблизилась к дате релиза, недостатки были обнаружены, и дата выхода сдвинулась на шесть месяцев.
Рассчитывать, что ваши люди могут сделать больше
Разработчики лучше всех ориентируются в процессе и знают, как лучше. Эта мысль идет вразрез с большинством управленческих курсов. Менеджер должен ставить перед собой цели, выяснять, как их добиваться, а потом заставлять остальных следовать его плану. Однако в таком случае вся работа зависит от опыта, интеллекта и организаторских способностей конкретного менеджера.
Если люди, делающие свою работу, свободны решать, что им делать, они могут адаптироваться к обстоятельствам и реальности, с которой сталкиваются. Они могут поделиться идеями и опытом, чтобы прийти к лучшему решению. Когда они пробуют какой-то подход и он не работает, то они могут предложить что-то другое. Это называется самоорганизацией и повышает общий уровень знаний всех членов команды. Они не ограничены мышлением менеджера и свободны сделать свою работу лучшим способом.
Роль менеджера при таком подходе – только устанавливать цели, содействовать и устранять препятствия. Он наделяет членов команды правом принимать решения.
Помогите людям ослабить их желание определенности
Мир изменчив. Разработка программного обеспечения тоже изменчива. Но решения по-прежнему нужно принимать, и организация, которая принимает лучшие решения, процветает. Программное обеспечение за 30 дней дает вам надежную, полезную информацию о том, что будет происходить по крайней мере каждые 30 дней. Итерация – ограниченная по времени авантюра. Команда способна практически без сбоев создать программное обеспечение, представляющее определенную ценность. Даже в худшем случае, когда команда не создает ничего, это дает ценную информацию о том, что пока это невозможно.
Расположенная в Филадельфии компания Primavera, которой сейчас владеет Oracle, создает программное обеспечение для управления проектами, основанными на предиктивном процессе. Учредители понимали иронию: использовать эмпирический процесс разработки программного обеспечения для создания своих предиктивных (прогнозируемых) инструментов. Тем не менее, чтобы решить свои проблемы, они должны были к нему прибегнуть.
В конце самой первой итерации команда разработки и высшее руководство собрались посмотреть демонстрацию инкремента. Функционал работал прекрасно. Однако СТО указал на то, что команда планировала создать семь функций, а реализовала только пять. СТО почувствовал себя некомфортно. Он попросил команду собрать статистику – как много времени занимает та или иная работа. Он подумал: если собранная статистика будет объединена в базу данных, команда станет более тщательно выполнять задачи. Они могли бы оценивать размер предстоящей работы по статистике из базы данных в начале новой итерации. Тогда они могли бы знать заранее, что сделают только пять функций.
Разработка программного обеспечения непредсказуема. Прошлое не может предсказать будущего, так как разработка программного обеспечения отличается каждый раз. База данных не будет полезной.
Мы все хотим определенности, но это часто недостижимо. Однако мы можем действовать с умом, принимать правильные решения и держать под контролем риски. Вот почему эмпирический процесс разработки программного обеспечения выигрывает и вот почему короткие итерации снижают риск.
Выводы
Степень успеха, которого вы добьетесь при применении эмпирического процесса разработки программного обеспечения, существенно зависит от управления в вашей организации и того, как это управление приведет всех к вышеуказанным изменениям.
Раздел II. Как создать программное обеспечение за 30 дней
Организации хотят стать более гибкими, более творческими и более продуктивными, а также увеличить свою прибыль. Они хотят радовать своих клиентов и обгонять конкурентов. Многие организации решили использовать Scrum как одну из ключевых стратегий. Иногда его применяют только для самых важных задач, иногда организация создает новый IT-отдел параллельно с существующим, использующим каскадный процесс. Иногда вся организация трансформируется, чтобы стать более гибкой, конкурентоспособной. Вне зависимости от поставленной цели требуется изменение обычного подхода к делу. Как и в большинстве значительных изменений, неорганизованный подход независимо от его достоинств обречен на провал. Переход к Scrum, описанный в этом разделе книги, – пошаговый.
Мы начнем с быстрого знакомства с ним, затем разделим метод на три шага, каждый из которых рассмотрим в отдельной главе.
Scrum на уровне проекта. Этот подход применяется «по необходимости» (от лат. pro re nata (PRN), что означает «бери, когда нужно»). Например, когда кто-то нуждается в программном обеспечении за 30 дней или меньше. Глава 6 объясняет, как реализовать Scrum на уровне проекта с минимальными расходами и самыми быстрыми результатами.
Scrum на уровне возможностей. Студия разработки программного обеспечения, в которой реализуются Scrum-проекты, создается отдельно от остальной части организации. Студии ставится задача создать конкурентное преимущество с помощью использования Scrum. Она управляется с высокой степенью автономии и свободна от бюрократии. Когда преимущество от использования Scrum становится очевидным, студию используют чаще. Глава 7 описывает этот шаг.
Scrum на уровне организации. На этапе организации опыт и знания, полученные студией разработки, распространяются на всю компанию, ее общую производительность и гибкость. Глава 8 описывает этот шаг, а кроме того, рассказывает, как применять Scrum, чтобы внедрить его в организации. И как отделить разговоры о применении Scrum от реального его использования.
5. Знакомство со Scrum
Scrum – это фреймворк (программная платформа) для управления сложным процессом, таким как разработка программного обеспечения. Он очень простой, состоит только из трех ролей, трех артефактов и пяти событий (табл. 5.1). Scrum связывает их вместе правилами игры.
Таблица 5.1. Основы Scrum
Разрабатывать программное обеспечение будет Scrum-команда, состоящая из того, кто хочет получить программное обеспечение (владелец продукта), менеджера (Scrum-мастер), а также разработчиков. Чтобы избежать путаницы, может быть только один владелец продукта, который решает, что будет разработано в каждой итерации, или спринте – в терминологии Scrum, – и оценивает результаты приращения функционала в конце каждого спринта. Scrum-мастер управляет проектом согласно правилам Scrum. Некоторые Scrum-мастера прошли обучение, другие имеют значительный, проверенный опыт в успешном его использовании. Главное – знание, как управлять Scrum-командой и проектом.
Создание Scrum-команды и планирование спринта
Первая задача Scrum-мастера – поиск разработчиков и создание команды разработки. Люди в этой команде должны иметь необходимую квалификацию по превращению потребностей и требований владельца продукта (бэклог продукта) в рабочие инкременты программного обеспечения после каждого спринта.
Все члены Scrum-команды собираются для знакомства, обсуждения предстоящей работы и создания условий для совместной работы. Scrum-команда должна знать видение продукта (необходимый и желаемый результат), какие результаты будут означать успех или неудачу и какие есть ограничения. Команда рассматривает только самые важные требования и выбирает максимальное количество тех, что имеют хорошие шансы быть реализованными в предстоящем спринте. (Разработчики должны иметь опыт по разделению больших требований на маленькие осуществимые фрагменты, которые они смогут завершить в спринте.)
Scrum-команда оценивает усилия по разработке требований в законченные функциональные возможности программного обеспечения. Так как они будут выполнять работу, они и должны делать прогнозы. Точность этих прогнозов зависит от того, как долго они работали вместе, как они понимают применяемые в проекте технологии и насколько хорошо они понимают бизнес или сферу, в которой им предстоит работать.
Когда планирование закончено, члены команды дают прогноз, какой объем работы они прогнозируют сделать к концу спринта. Это эмпиризм в действии: дать прогноз, посмотреть, что получилось в реальности, и принять решение на основании результата.
В силу необходимости двигаться дальше этот начальный этап должен быть протяженностью в один день.
Участники Scrum-команды работают вместе, пока все имеют четкое понимание проблемы и подхода к ее решению, пока все знают, что должно быть разработано в предстоящем спринте. Вещи, которые не были очевидными, станут проясняться, как только команда начнет создавать программное обеспечение.
Спринт за ценностью
Теперь Scrum-команда начинает создавать программное обеспечение, начиная с дня, непосредственно после дня планирования спринта. Инкремент функциональных возможностей программного обеспечения разрабатывается в течение первого спринта. Он может быть больше или меньше того, что прогнозировалось. Все члены Scrum-команды взаимодействует в течение спринта, проясняя задачи. Работа может быть переопределена, требования могут добавляться или удаляться по необходимости, если команда разработки определит, что время остается или оставшегося времени недостаточно.
Каждый день в течение спринта разработчики проводят 15-минутные совещания, называемые Scrum-митингами, чтобы спланировать предстоящую работу, все время стремясь достигнуть того, что было договорено. Чтобы максимизировать продуктивность разработчиков, задачи спринта должны быть согласованы как разработчиками, так и владельцем продукта. Они соглашаются, что создадут столько требуемого функционала, сколько возможно, и могут быть переориентированы перед каждым новым спринтом. Владелец продукта соглашается, что требования, над которыми работает команда, не будут меняться в течение спринта. Все, что не было запланировано (включая, например, участие разработчиков во встречах с потребителями), может подождать до следующего спринта. Производительность разработчиков повышается, когда их не прерывают. Применение более коротких спринтов обычно обеспечивает внесение более частых изменений – об этом мы поговорим в следующей главе.
Проведение обзора спринта
В конце спринта Scrum-мастер встречается с разработчиками для проведения обзора спринта. Эта встреча не должна продолжаться более четырех часов. Scrum-команда и ключевые заинтересованные стороны собираются и дают оценку результатам предыдущего спринта и прироста функционала. Обзор включает следующее: что было сделано, каков объем реализованных задач, насколько эффективна разработка и насколько полезен ее результат. Инкремент должен быть законченным фрагментом пригодного к применению программного обеспечения. Пункты бэклога продукта, которые выполнены не полностью, остаются в списке как «все еще требующие выполнения». Новые требования часто возникают в течение обзора спринта. Также часто появляются новые возможности и трудности. Иногда достаточно просто увидеть инкремент, чтобы зародились новые идеи.
Результаты обзора спринта могут включать один или несколько из следующих пунктов:
• начало использования разработанного функционала;
• решение, что делать в течение следующего спринта, и подготовка к нему;
• решение остановить работу.
В этом случае риск ограничен инвестициями в проведение одного спринта. Ценность достигается в конце каждого спринта, и формулируется новый спринт. Если вы собираетесь продолжить спринт для создания большего количества инкрементов программного обеспечения, проводится ретроспектива спринта.
Проведение ретроспективы спринта
Каждый участник Scrum-команды старается совершенствоваться спринт за спринтом. Ретроспектива спринта – мероприятие, где формулируются улучшения. Эта встреча ни в коем случае не должна длиться более четырех часов.
Ретроспектива спринта – естественный разрыв между спринтами, когда команда садится и обсуждает события предыдущего спринта, а также ищет пути улучшения своей работы и способов, которыми эта работа ведется.
Обсуждение может включать следующие вопросы:
• хорошо или плохо работают члены команды вместе и почему;
• больше или меньше работы, чем предполагалось, делает команда и почему;
• обладает ли команда всеми необходимыми навыками и обеспечением, требующимся для выполнения работы;
• понимают ли разработчики требования и почему;
• способна ли команда закончить спринт в соответствии с требованиями, и если нет, то почему;
• что можно добавить или выбросить из следующего инкремента функционала;
• что команда думает об использовании подхода Scrum.
Затем команда определяет несколько вещей, которые можно сделать по-другому в предстоящем спринте и которые могут повысить креативность, эффективность и продуктивность. В общем, Scrum-команда должна постоянно улучшаться. Это шанс для нее сделать свою работу и жизнь лучше.
Продолжение спринта
Scrum-команда продолжает повторять шаги, описанные ранее, пока цели не будут достигнуты, возможности максимально использованы, возврат инвестиций достигнут или пока не столкнутся с непреодолимым препятствием (рис. 5.1).
Рис. 5.1. Scrum в действии
Выводы
Scrum прост. Мы рассмотрели его и знаем его составные части. Мы знаем, как двигаться от планов к реализации. Теперь мы посмотрим, как заставить Scrum работать в вашей организации.
6. Scrum на уровне проекта
Использовать Scrum можно, когда это необходимо, например когда у вас есть безотлагательная возможность или очень важный проект. Эта глава поможет понять, как начать это делать немедленно, без суеты и затрат. Вы научитесь получать ценность каждые 30 дней.
Организационные воздействия не должны рассматриваться. В данном случае первостепенное значение имеют краткосрочные выгоды, а не долгосрочное улучшение организации. Преимущества будут получены быстро. Scrum-проект проводится в отрыве от традиционных методов и процессов, используется только то, что позволяет получить ценность для выполнения работы.
Снизу вверх и невидимый Scrum
В течение предыдущих 20 лет многие Scrum-проекты проходили внизу организации, скрытые от взгляда. Команда, работающая над проектом, пробовала применить Scrum и создавала впечатляющие результаты. Затем другая команда пробовала его, и скоро команды внутри организации начинали разрабатывать программное обеспечение быстрее и чаще. Довольно скоро Scrum-проекты стали проявляться повсюду в организации. Мы называем такой Scrum PRN.
Как и в медицинском случае, PRN, когда применение лекарства оставлено на усмотрение медсестры или пациента сообразно возникающим обстоятельствам, Scrum-PRN необходим, когда возникает важная возможность или критическая трудность и программное обеспечение требуется быстро. Он может быть использован незамедлительно. Исключения в обычном подходе допускаются для разрешения кризиса или для того, чтобы не упустить возможность. Использование Scrum-PRN не требует разрешения. Разрешение для его применения – безотлагательная потребность в программном обеспечении.
Преимущества и открытия
Затраты на 30-дневный спринт могут варьироваться от 50 до 150 тысяч долларов в зависимости от размера Scrum-команды, заработной платы ее членов и других факторов. Каковы же преимущества метода?
Знание об уровне навыков разработчиков. Во время процесса разработки вы поймете, смогут ли ваши специалисты создать необходимый функционал программного обеспечения и сколько они смогут сделать в течение спринта.
Функционал. Возможности продукта, которые могут быть использованы по окончании каждого спринта, не важно, насколько мало это количество. Этот функционал добавляется к любому предыдущему инкременту.
Перепланирование. Инвестиции могут быть переоценены и изменены для каждого спринта. Это называется планирование «точно в срок». Так как изменения предполагаются, перепланирование делается, чтобы приспособить их. Время, потраченное на планирование того, что может никогда не быть реализовано, полностью исключается.
Scrum-проект открывает всё: и то, на что мы надеялись, и то, что произошло вопреки нашим ожиданиям. Scrum готовит это блюдо так, что мы всегда знаем, что происходит, и можем принимать разумные решения относительно того, что делать дальше. Преимущество в данном случае – возможность контролировать, что произойдет в будущем, чтобы эффективно управлять инвестициями.
Управление работой: диаграммы сгорания задач
Одно из главных преимуществ Scrum – информация, которой он обеспечивает и которую можно использовать для максимизации ценности и контроля за риском.
В конце каждого спринта отслеживается, сколько задач было решено и какой функционал готов к использованию. Исходя из этого, прогресс может быть измерен и использован (очень осторожно) для прогнозов на будущее.
Работа может управляться с использованием трех переменных. Первое – это требования, функциональные возможности, которые составляют видение. Часть из них небольшие, часть средние и некоторые большие в плане требуемых усилий. Второе – это время, измеряемое в спринтах. Третье – законченная работа, которая измеряется в готовых к использованию фрагментах предоставляемых функциональных возможностей.
Когда требования трансформируются в инкременты функционала. проявляется тенденция. Например, в начале первого спринта команда разработки оценила размер требований в 140 единиц работы. Она представила 20 единиц работы в спринте № 1, 40 единиц – в спринте № 2 и 40 единиц – в спринте № 3. Это может быть прослежено при помощи диаграмм сгорания задач, измеряющих требования в единицах работы, которую еще предстоит сделать. Оставшаяся работа вычисляется в конце каждого спринта. Она равна единицам работы, прогнозируемой в начале спринта, за вычетом единиц законченной работы, которая была переведена в инкремент к концу спринта. Как выглядит диаграмма сгорания задач для примерного проекта, показано на рис. 6.1.
Рис. 6.1. Пример диаграммы сгорания задач
Это дает представление о прогрессе, достигнутом в направлении, когда вся работа будет закончена.
Чтобы прогнозировать будущее, можно использовать средние значения прошедших спринтов. В первых трех средняя единица законченных требований была 33,3 со стандартным отклонением 11,5. Прогнозная линия строится, как показано на рис. 6.2.
Рис. 6.2. Пример прогноза
Прогнозная линия на диаграмме сгорания задач показывает, что проект будет закончен к концу четвертого (следующего) спринта. Конечно, разработка программного обеспечения редко бывает настолько простой. Это сложный процесс, и в его ходе встречается больше неизвестного, чем известного. Прогнозирование разработки софта – дело рискованное, каждый день подверженное влиянию используемой технологии, способности людей, делающих разработку, состоянию рынка, причем новые требования могут появиться внезапно. Прогнозная линия теряет надежность, чем дальше она спроектирована в будущее.
Новые требования появляются, когда проект продвигается вперед. В ходе тестов выясняются новые потребности клиентов. Когда инкременты изучаются, появляются новые возможности. К примеру, со 140 единиц требований в начале первого спринта, если 20, 40 и еще 40 единиц новых требований возникнут и будут добавлены в бэклог продукта в начале каждого из трех спринтов, диаграмма выгорания задач будет плоской, давая неправильное впечатление, что никакой работы не сделано (рис. 6.3).
Рис. 6.3. Реальная и предполагаемая диграммы сгорания задач
Так получилось, потому что было найдено и добавлено в бэклог столько же новой работы, сколько команда разработки закончила.
Чтобы сохранить тренд снижения диаграммы сгорания, вычисляется новая конечная базовая линия: [(начальная базовая линия + дополнительные единицы работы над новыми требованиями) – (законченные единицы работы над требованиями) = новая конечная базовая линия]. Эта новая конечная базовая линия показана на рис. 6.4. Она помогает нам спрогнозировать, что проект, скорее всего, будет закончен гораздо позднее, чем ранее предположенный конец четвертого спринта.
Рис. 6.4. Конечная базовая линия отражает бэклог продукта
С помощью Scrum мы можем остановить финансирование дальнейших спринтов, как только оставшиеся требования будут признаны не очень ценными. В этой точке программное обеспечение выпускается, и мы начинаем получать обратную связь от пользователей. Дополнительный функционал, запрошенный пользователями, очень часто не совпадает с начальным видением, предполагаемым Scrum-командой. С этой обратной связью подготовка следующего релиза переформулируется, чтобы включить запрошенные пользователями требования и исключить те, которые остаются в списке, но не включены в первый релиз и не запрошены пользователями.
The Standish Group оценила, что 50 % всех функций программного обеспечения очень редко или никогда не используются пользователями[4]. К примеру, 80 % пользователей применяют только 14 % функционала массивного сайта hp.com[5].
Таким образом, чтобы оптимизировать ценность, владелец продукта должен решить, когда остановить спринты, чтобы остановить дальнейшую разработку и не заполнять продукт функционалом с низкой ценностью. При использовании только этой тактики проекты могут занять лишь 40 % времени от того, что обычно затрачивается. Эта продуктивность остается за вами, просто нужно обращать внимание на ценность того, что вы разрабатываете.
Не игнорируйте сложности – всегда держите глаза открытыми
Мы знаем, что можем использовать Scrum для преодоления вызовов или для того, чтобы воспользоваться преимуществом появившейся возможности. Перед тем как начать первый спринт, мы часто хотим знать, как много времени займет проект и сколько он будет стоить. Мы можем получить начальную оценку, экстраполируя результаты первых нескольких спринтов. Например, мы разработали по 20 единиц функционала за два спринта и предполагаем, что система, как мы ее себе представляем, состоит из 220 единиц функционала. Нам остается создать еще 180 единиц. Со скоростью 20 единиц за спринт нам понадобится еще девять итераций. Если мы добавим или вычтем часть функционала во время разработки программного обеспечения, то разделим оставшуюся работу с учетом необходимого времени выпуска.
Конечно, нужно соблюдать крайнюю осторожность при экстраполяции фактов из прошлого для создания прогноза будущего. Экстраполяция – это процесс построения новых точек данных. Он похож на процесс интерполяции, при котором строятся новые точки между известными точками, но результаты экстраполяции менее значимы и подвержены большей неопределенности. Мы знаем, что разработка программного обеспечения – сложная задача. Мы можем экстраполировать, но должны постоянно проверять. В конце каждой итерации мы проверяем, где мы действительно находимся, а не где должны быть в соответствии с экстраполированными данными. Реальность – это более твердая основа, чем ожидания.
Проблема новых возможностей в том, что они новые. Пути их достижения, как правило, – либо создание чего-то нового, либо новое использование старого подхода. В любом случае всегда есть много новых вещей, которые нужно продумать, найти красивое решение, написать новое программное обеспечение либо перепрофилировать старое. Традиционно нас просят сначала обдумать, а потом уже начинать разработку. Это называется планирование требований, и результатом планирования становится документация продукта или документация маркетинговых требований. Проблема в том, что мы точно не знаем, чего хотим. Даже когда у нас есть четкие идеи, лучший подход обычно появляется во время разработки, потому что определение сложных проблем при планировании – задача трудная, чреватая ошибками и упущениями. С помощью Scrum мы планируем по мере продвижения, находя то, что нам нужно, в процессе работы над проектом. Предсказуемость появляется из своевременного принятия решений, основанных на реальных результатах. Хотя мы и планируем время и стоимость в начале проекта, но постоянно оцениваем его по мере продвижения вперед. В случае с традиционными проектами время и стоимость также прогнозируются в самом начале, но они не предоставляют эффективных данных для внесения изменений в планы до тех пор, пока как минимум 90 % работы не будет закончено.
Длина спринта
Организации, которые применяют Scrum, имеют тенденцию к использованию 30-дневных спринтов, но Scrum также позволяет более короткие спринты наравне со спринтом в один месяц. Более длинные спринты хороши для более стабильных ситуаций, а более короткие – для более сложных и требовательных.
Рис. 6.5. Переменные, влияющие на длину спринта
Лучшая длина спринта для вашего проекта определяется после оценки следующего (рис. 6.5):
• перерасходы на короткие спринты;
• увеличение гибкости и контроля;
• длина спринта.
Спринт никогда не должен превышать один месяц.
Доводы в пользу более коротких спринтов
Четыре недельных спринта дают большую гибкость и контроль, чем один длиной в 30 дней. Вот некоторые из переменных, способных повлиять на ваш выбор длины спринта.
1. Неустойчивая ситуация на рынке. Длина спринта определяет, как часто вы можете перенаправлять или перепланировать продукт. Рынок для вашего продукта может быть новым или неустойчивым. Другие организации и конкуренты также представляют свои продукты. Вы хотите сохранить большую гибкость для приспособления и быстрого реагирования на представляющиеся возможности. Или вы не хотите много инвестировать в каждую отличительную особенность своего продукта, прежде чем иметь возможность поменять направление.
2. Неустойчивая команда. Scrum-команде иногда требуется до одного года работы, чтобы стать эффективной. Более короткие спринты дают каждому четкое представление о динамике команды, таким образом, проблемы могут быть быстро обнаружены и продуктивность улучшена.
3. Нестабильная технология. Всякий раз, когда используются новые технологии, необходимо как можно раньше узнать об их новых возможностях и преимуществах. В новых продуктах возможности новых технологий зачастую определяют успех. Опробуйте новые технологии в попытке создать небольшой фрагмент функционала. Посмотрите, как они работают, работают ли вообще, вписываются ли в вашу систему. Например, если продукт должен поддерживать одновременно подключение множества пользователей или иметь высокую степень безопасности, необходимо очень рано понять, поддерживает ли это новая технология. Если нет, вам надо внести изменения в проект или отменить его.
4. Создание стабильной скорости. Лучший способ прогнозировать стоимость проекта – обзор продуктивности предыдущих подобных проектов, с идентичной технологией и командами, долгое время работающими вместе. В случае если данные о подобных предыдущих проектах недоступны, следующий хороший способ прогнозирования – запуск коротких спринтов. По мере того как разработчики будут учиться взаимодействовать друг с другом и технологиями над вашим проектом, они начнут показывать стабильную скорость разработки или количество функциональных возможностей, которые могут создать в каждом спринте. Когда скорость стабилизируется, вы можете осторожно прогнозировать возможности команды разработки, чтобы определить стоимость продукта и дату релиза. Помните, однако, что прогноз – это не гарантия.
5. Предоставление обучающего опыта. Люди любят быть успешными. Когда они учатся ездить на велосипеде, кататься на коньках или лыжах, то для начала делают короткие попытки. Неудача может быть оценена и внесены изменения. Затем они пробуют снова. Короткие спринты способствуют обучению.
6. Контроль рисков. Желаемый возврат инвестиций в проект может быть недостижимым. Когда рыночная ситуация нестабильна или неизвестна, технологии не проверены, а люди делают новую для них работу, ранний сбор информации о затратах и прибыли может стать чрезвычайно важным, и короткие спринты дают такую информацию, делая возможным более частый контроль над проектом. Еще до того, как решение об отмене проекта принято, появляется шанс потратить меньше денег.
В целом более длинные спринты используются там, где меньше риска, нестабильности или неопределенности. К примеру, продукт или система предназначены только для внутреннего пользования. В таких или подобных случаях тридцатидневный спринт будет более чем адекватным.
Доводы против более коротких спринтов
Два двухнедельных спринта стоят больше, чем один 30-дневный. Будет в два раза больше мероприятий по планированию спринта, обзору спринта и ретроспективе спринта. Scrum-команда должна будет формулировать новый дизайн в два раза чаще. Естественные процессы разгона и спада скорости во время спринта будут и происходить в два раза чаще.
Цена, которую приходится платить за более короткие спринты, – увеличение времени, необходимого для планирования и разбора. Вы можете сами выбирать, хотите ли вы платить за дополнительную страховку. Таблица 6.1 показывает, какое примерно время необходимо на спринты разной длины. В примере время на проведение мероприятий спринтов разной длины приведено к эквиваленту 30-дневного спринта. Стоимость мероприятий спринта, таких как планирование спринта, обзор спринта и ретроспектива спринта, принята одинаковой. Стоимость Scrum-команды, о которой идет речь в примере, составляет 200 тысяч долларов за тридцатидневный спринт.
Таблица 6.1. Стоимость коротких спринтов
Многие организации считают приемлемой дополнительную плату за большую предсказуемость, контроль и гибкость, которые обеспечивает более короткая продолжительность спринта.
Не пытайтесь делать спринты такой длины
Когда спринт короче недели, времени на превращение требований в пригодный к употреблению функционал часто недостаточно. Команде разработки трудно создать что-либо стоящее или предоставить руководству информацию за срок меньше одной недели.
Также мы рекомендуем, чтобы спринт не превышал одного месяца, иначе возникает ряд проблем.
1. Заинтересованные лица теряют внимание и забывают о проекте.
2. Так как количество требований увеличивается, общая сложность возрастает, и процесс разработки перестает быть линейным. Чтобы управлять увеличившейся сложностью и помнить предыдущие решения, команде разработки требуется вести больше документации и средств проектирования.
3. Объем информации для обзора и изучения, а затем для принятия решений разрушает эффективность коротких Scrum-мероприятий.
В пределах проекта применяйте спринты одной длины
Когда это возможно, сохраняйте длину всех спринтов для разработки проекта, от первого и до последнего, одинаковыми. Scrum-команды будут делать максимум возможного, если смогут держать темп, потому что разработка – это ритм. После шести 30-дневных спринтов члены команды создают структуру – как планировать и делать свою работу. Если вы переключитесь на недельный спринт, они вначале станут придерживаться 30-дневной структуры, которая слишком растянута.
Часто они обнаруживают, что прогнозируют больше сделанной работы, чем реально могут сделать в течение трех первых спринтов после смены длины. Команда должна устанавливать новый темп работы каждый раз, когда длина спринтов меняется, и члены команды обычно при этом теряют продуктивность. Постоянная длина спринтов способствует продуктивности.
Конечно, может быть важная причина для смены длины спринта во время работы над проектом. Например, вы можете обнаружить, что результаты спринта – катастрофа, или члены команды плохо работает вместе, или требования непонятны, или очень много времени тратится на решение каждой проблемы и так далее. Эти проблемы станут очевидны быстрее в условиях более коротких спринтов. Перенаправление разработки или реформирование команды разработки может быть осуществлено быстрее. Потери могут быть меньше. Изменение длины спринта может быть необходимым, но не делайте этого чаще, чем нужно. Если вы будете продолжать менять продолжительность спринтов, все участники рискуют потерять фокусировку, ясность и понимание своих возможностей. Разработка программного обеспечения – развивающаяся и сложная отрасль, поэтому упрощайте все, что только возможно.
Примеры проектов Scrum-PRN
В Fidelity Investments применили Scrum в 1997 году, чтобы предоставлять интернет-услуги для своих пользователей. Чарльз Шваб и клиенты E-Trade уже управляли своим капиталом онлайн, а пользователи Fidelity – еще нет. В то время Fidelity представляла собой жесткую каскадную организацию. Многочисленные попытки по предоставлению интернет-услуг заканчивались неудачей. В отчаянии компания обратилась к Scrum. За несколько месяцев первый вариант сайта Fidelity.com был разработан и запущен, и в течение 18 месяцев инвесторы были счастливы работать с Fidelity.com, который стал не хуже решений конкурентов. Успех был достигнут, и Scrum выведен из оборота компании. Следующие семь раз, когда Fidelity критически нуждалась в разработке программного обеспечения, она создавала Scrum-проекты. Однако компания не воспользовалась всеми преимуществами, которые могла бы получить, приняв во внимание предыдущий опыт. Каждый Scrum-проект мог быть более эффективным, чем предыдущий. Тем не менее Fidelity сделала выбор – использовать Scrum только в чрезвычайных ситуациях, PRN.
7. Развитие возможностей Scrum
Шаг на следующую ступень в организации – переход Scrum с уровня проекта на уровень студии разработки программного обеспечения. Как только студия создана, у организации появляется постоянная база для быстрого запуска Scrum-проектов по разработке программного обеспечения.
Студия разработки программного обеспечения – это новая, обособленная организация внутри большой организации. Некоторые организации используют студии для разработки всех своих проектов. Другие – для разработки только сложных, больших и рискованных проектов. Как и Scrum-PRN, этап студии позволяет избежать трудностей и потенциального провала по внедрению на уровне всей организации.
Студию разработки программного обеспечения иногда также называют фабрикой разработки[6], хотя фабрика предполагает выполнение повторяющейся, стандартизированной, простой работы, в то время как разработка программного обеспечения отнюдь не такая работа.
Студия – научающаяся организация
Большинству организаций, которые адаптируют Scrum, требуется несколько лет, чтобы в полной мере начать пожинать плоды наиболее значительных его преимуществ. С самого начала их производительность увеличивается, а проекты становятся более управляемыми, чем до этого. Однако выгоды от улучшения качества, ценности и интеллектуального уровня достигаются позже. Организация нуждается в систематическом применении знаний, получаемых в предыдущих проектах. Студия – то место, где обретаются знания для быстрого накопления и создания устойчивого преимущества[7].
Вся работа в студии основывается на Scrum. Каждый разрабатываемый проект содействует накоплению знаний, квалификации, производительности и ценности всех последующих проектов. Чем больше проектов произведено в студии, тем больше накапливается опыта, знаний и технических средств. В результате каждый последующий проект становится более продуктивным и создает больше ценности.
Студия имеет собственную культуру, включающую изменения и поддержку, необходимую для разработки программного обеспечения и управления с использованием Scrum. Каждый, кто хочет использовать эту культуру для разработки систем или продуктов, может это сделать, однако он должен изучить эти культурные нормы и подчиниться им. Только люди, которые хотят применять Scrum, используют студию. Остальные продолжают делать работу старым способом.
Менеджер студии
Первый шаг – поиск сотрудника, который создаст студию по разработке программного обеспечения и будет ею управлять. Менеджер студии также и Scrum-мастер, в его функции входит поддержка работы студии с теми техническими средствами, которые есть в его распоряжении. Менеджер студии обязан:
• иметь за плечами несколько лет опыта работы Scrum-мастером, менеджером в Scrum-среде;
• понимать процесс разработки программного обеспечения;
• иметь квалификацию и опыт по внедрению изменений и упрощению процедур;
• обеспечивать обучение и инструктаж разработчиков в студии;
• быть уверенным, что Scrum-мастера, работающие над проектами, хорошо делают свою работу;
• помогать оптимизировать результаты проектов;
• постоянно совершенствовать технические средства студии, чтобы последующие проекты становились более экономичными и эффективными.
Менеджер студии изучает индустрию программного обеспечения для поиска лучших, наиболее экономически оправданных методов автоматизированных средств и программного обеспечения. Приложения и инструменты могут варьироваться от элементарных до сложных, в зависимости от того, как долго работает и улучшается студия.
Цель менеджера студии – обеспечить рабочую обстановку с максимально возможной стоимостью. Как минимум цель студии – сделать более легким запуск новых Scrum-проектов.
Обучение и условия использования
Обучение чему-то отличающемуся от привычного, такому как Scrum, может быть трудным. Люди должны иметь желание учиться новому подходу к управлению и разработке программного обеспечения. Обучение будет успешным только для тех, кто хочет и стремится изучить и потратить на это усилия. Если департамент планирует проводить все свои проекты в студии разработки, все, кто связан с этим, обязаны научиться работать по-другому.
Пользователи, столкнувшиеся со Scrum впервые, должны пройти двухдневный базовый курс обучения. Они обучаются Scrum и теории и принципам, лежащим в его основе. Они проходят через многочисленные симуляции различных ситуаций, пока не поймут ощущение и движение Scrum-проекта. Устанавливаются основные правила, расписание мероприятий, длина спринта и тому подобное.
Способы работы оформляются и объясняются. Новые техники могут потребоваться для следующего:
• увеличение вклада в работу команды по сравнению с личной производительностью;
• создание структуры отчетности и проверки производительности;
• разрешение конфликтов;
• урегулирование отношений с проблемными членами команды;
• преодоление препятствий и потребностей.
Также проводится обзор оборудования и технических средств студии, чтобы члены команды знали, какие имеются средства, как их использовать и как получить помощь.
Проводятся мероприятия по тимбилдингу, члены команды учатся работать друг с другом, занимаются упражнениями по совместному решению проблем и учатся преодолевать конфликты, которые нередко случаются в самоорганизованных командах, где различные идеи имеются в большом количестве.
Сотрудники, участвующие в Scrum-командах, подписывают соглашение об условиях использования технических средств студии. Соглашение обеспечивает их пониманием того, чего от них ждут. На рисунке 7.1 перечислены типичные условия использования Scrum.
Условия сотрудничества в рамках студии
1. Каждый проект должен быть основан на процессе Scrum и его принципах: эмпиризме, накоплении знаний и самоорганизации.
2. Каждый проект будет реализован отдельной Scrum-командой, состоящей из владельца продукта, Scrum-мастера и не более чем девяти разработчиков.
3. Scrum-мастер должен иметь опыт управления Scrum-проектами. Если его опыта недостаточно, он должен не стесняться принимать помощь и проходить обучение у старших Scrum-наставников.
4. Владелец продукта будет активно сотрудничать со Scrum-командой по вопросам формулирования требований, оценке проделанной работы, оценке инкремента, а также будет оптимизировать ценность проекта на основе постоянных практических проверок и тестов.
5. Scrum-команда (команда разработки) будет состоять из разработчиков программного обеспечения, обладающих всеми навыками, необходимыми для создания инкремента потенциально пригодной к использованию функциональности, основываясь на требованиях владельца продукта.
6. На протяжении всего проекта внешние связи и подчиненность должны быть приостановлены.
7. Каждый инкремент должен соответствовать определению «прозрачности» и «законченности».
8. Scrum-команда будет использовать современные методы разработки и технические инструменты, предоставляемые студией, а также по необходимости проходить обучение по их использованию.
9. Проект должен соответствовать всем политикам и стандартам студии.
10. Члены Scrum-команды по возможности должны находиться на территории студии и работать над проектом полный рабочий день.
11. Scrum-команда имеет право и возможность пользоваться всеми преимуществами и удобствами студии, помогающими в разработке.
12. Члены Scrum-команды будут способствовать возрастанию общих знаний, основанных на опыте их работы над проектом, а также будут делиться этим знанием с другими командами.
ФИО ______
Дата ______
Рис. 7.1. Условия сотрудничества в рамках студииКогда новые команды разработки запрашивают использование студии, оцениваются их подготовка, опыт и квалификация. Их проекты также оцениваются, чтобы определить, насколько они подготовлены и способны производить ценность во временных рамках. На основании этой информации разрабатывается план поддержки, который балансирует ресурсы и поддержку в студии. Внешняя поддержка тоже предусматривается, но только в самых крайних случаях.
Технические средства студии
В самом начале студия более походит на остов, где больше учебы, чем чего-либо еще. Когда менеджер студии измеряет выгоды и отчитывается о них руководству, инвестиции могут быть вложены в технические средства, которые увеличивают полезность студии. Эти технические средства могут быть доступны для любого проекта, разрабатываемого в студии. Перечислим их.
1. Рабочее помещение. Scrum-команды преуспевают в открытых помещениях, которые поддерживают взаимодействие команды, то есть следует создать пространство, где члены Scrum-команды могут легко общаться, пока разрабатывают программное обеспечение. Должно быть достаточно пространства возле каждого человека, для двух или трех человек, чтобы они могли работать вместе. Кресла должны быть удобными, а рабочие столы – легко двигаться. Интернет, локальную сеть и серверы следует настроить и обеспечить инструменты для разработки, необходимые Scrum-команде. Оборудование также должно включать средства вывода, проекторы или большие телевизоры в местах проведения мероприятий, а также множество офисных мольбертов. Также должно быть предусмотрено место для посетителей или временных членов команды. Зачастую необходимо или желательно настроить пространство на основании стиля разработки или меняющихся потребностей.
2. Инструменты для разработки и методики. Scrum-команда должна иметь полностью автоматизированное оборудование для разработки и тестирования, чтобы, как только новое программное обеспечение будет разработано или изменено, его можно было бы протестировать и посмотреть, как оно работает. Тесты могут быть большими, например функциональными, или маленькими, например модульное тестирование кода. Критические тесты проводятся для проверки стабильности, производительности и безопасности. Должны использоваться техники бережливого качества, когда качество встроено, чем когда оно достигается путем тестирования, когда функционал уже закончен. Команда разработки характеризует продукт с точки зрения тестов или вещей, которые он должен делать, и того, как он их делает. Если какой-то тест не пройден, разработка останавливается, пока причина неудачи не будет исправлена. Незаконченная или дефектная продукция требует денег на исправление. Чем больше таких багов накапливается к концу разработки, тем выше будет стоимость или технические усилия по их исправлению. Это работа и стоимость уже не подчиняются линейному закону. Scrum-команда не только должна проводить тесты, чтобы удостовериться в том, что разработанное ими сейчас функционирует правильно, но также должна применить все предыдущие тесты, чтобы убедиться, что вся система не подорвана.
3. Планирование и отчетность. Полный набор стандартизированного планирования, контроля, управления рисками и процедуры отчетности должны быть доступны в студии, также должны быть предоставлены шаблоны, и Scrum-командам необходимо их использовать.
Изменения и дилемма
Как и единичный Scrum-проект, Scrum-студия осуществляет культурные изменения, требующиеся для эмпиризма и самоорганизации. Это не всегда легко, Scrum отличается от всех остальных методов. Scrum – дилемма для всех. Он бесспорно лучше предиктивного метода разработки, но привычки прошлого трудно преодолеть.
Только практика и способность проникнуть в суть преимуществ могут помочь осуществить переход от предиктивных процессов к эмпирическим. Для того чтобы помочь разрешить дилемму, мы разработали инструмент, показанный в табл. 7.1.
Таблица 7.1. Опросник
В первой части инструмента мы просим респондентов рассмотреть принципы, о которых они узнали при изучении Scrum, с точки зрения передового опыта, а иногда и просто с точки зрения здравого смысла. Мы просим их выбрать вариант ответа: полностью согласны, частично согласны, не знают, не согласны с утверждениями.
Если менеджер согласен с большинством этих утверждений, он, вероятно, сможет использовать Scrum. Это означает, что он не будет полагаться на традиционные методы, которые могут отвлечь команду, снизить ее креативность, инициативу и продуктивность. Он не станет от имени команды принимать обязательства относительно того, сколько они смогут сделать и к какой дате, а затем пытаться убедить команду, что эти обязательства достижимы. Менеджер не будет распределять задачи, рассказывая команде, как ей выполнять свою работу, или подталкивать членов команды работать так, чтобы исполнить обязательства, взятые на себя менеджером. Короче говоря, дилемма в том, что сейчас вы знаете одно, а должны действовать по-другому. Дилемма в том, чтобы меняться с помощью интеллектуального понимания своих действий день за днем.
Управление с помощью цифр
Все проекты в студии оцениваются с помощью измерений. Стандартный, комплексный набор показателей применяется к любым проектам, осуществляемых в студии. Scrum-команда использует эти показатели для отслеживания и улучшения производительности.
Эти показатели объединены на общей инструментальной панели студии, которая отслеживает историю проектов и отражает тенденции. Эти показатели используются и для оценки затрат и прибыли студии, и для оценки финансирования ее необходимого развития. Руководство организации может использовать совокупные показатели для определения общей рентабельности инвестиций (ROI) студии и решить, должно ли быть применение студии расширено или сжато. Рисунок 7.2 показывает первичные показатели на инструментальной панели студии. Каждый может иметь много подчиненных показателей.
Рис. 7.2. Инструментальная панель проекта
1. Продуктивность – это количество единиц бизнес-функционала, которое разработано на определенное количество денег (например, на 100 тысяч долларов инвестиций). Продуктивность также называют скоростью. Это показатель не ценности, а только количества произведенного функционала. Изначально произвольная единица функционала определяется и измеряется. Размер измеряется в функциональных точках, объективной и абстрактной системе измерений для программного обеспечения[8]. Функциональные точки универсальны и могут быть применены везде в пределах системы, продукта или для любой другой системы. Весь другой функционал определяется относительно базовой единицы. Эта система измерений (измерение размера единицы функционала в функциональных точках) становится стандартным показателем студии. Базовая единица требует периодической калибровки, чтобы гарантировать ее соответствие.
2. Качество измеряется в дефектах по отношению к стандартному размеру единицы работы в студии. Scrum-команда разрабатывает инкременты функционала программного обеспечения. Когда владелец продукта хочет реализовать этот функционал, количество дефектов подсчитывается со дня, когда единица функционала передается владельцу продукта, до трех месяцев его использования.
3. Ценность – мера того, насколько ценен созданный функционал для организации. Это мера эффективности (в процентах) от каждого доллара, потраченного на разработку программного обеспечения, которая создает ценность для организации. Показатель ценности не включает рыночную ценность. Рыночная ценность отражает показатель ROI, о котором мы не станем говорить в рамках этой книги. В среднем в общем уровне затрат на создание ценности в организации на разработку программного обеспечения затрачивается меньше 10 % от каждого доллара. Значительный процент расходуется на поддержание и сохранение существующих систем. Также большое количество средств идет на разработку функционала, который используется не очень часто. Большая часть денег тратится на создание программного обеспечения, которое могло быть полезным где угодно, но не в пределах организации, которая за него платит.
Инструментальная панель студии отражает тенденции по повышению продуктивности и качества, как показано на рис. 7.3.
Рис. 7.3. Инструментальная панель качества и продуктивности
Следующая панель отражает тенденции в увеличении ценности и ROI, как показано на рис. 7.4.
Рис. 7.4. Инструментальная панель ценности и возврата инвестиций
Можно учитывать еще несколько показателей.
1. Стоимость владения. Программное обеспечение имеет три составляющие расходов для организации разработчика, которые определяют полную стоимость владения продуктом:
• разработка – средства, выделяемые на разработку продукта или системы;
• техническое обслуживание – затраты на поддержание, сохранение и развитие продукта;
• эксплуатационные затраты – средства, выделенные для запуска и управления продуктом, когда он доступен для использования по назначению.
2. Проекты. Количество проектов, чьи данные объединяются и отображаются.
3. ROI студии. Это показатель накопительного возвращения инвестиций, или общее значение прибыли, полученной от проектов, деленное на затраты на содержание студии. Это также показатель экономии, полученной в процессе улучшения производительности, в сравнении с затратами на поддержание и улучшении студии. Многие организации не знают показателей продуктивности своих подразделений, занятых разработкой программного обеспечения, особенно с точки зрения предоставляемого бизнес-функционала. Scrum-студии часто вынуждены создавать первые измерения производительности. Они используются в качестве исходных условий для всех последующих улучшений.
Таблица 7.2 показывает примеры показателей, которые могут быть сделаны в студии.
Таблица 7.2. Инструментальная панель тенденций
Решения, принятые в ходе разработки продукта, оказывают глубокое воздействие на стоимость владения системой.
Рассмотрим некоторые из этих воздействий.
• Функциональные возможности, которые редко используются, по-прежнему должны быть сохранены и увеличивают эксплуатационные расходы.
• Качество программного обеспечения, созданное в процессе разработки, определяет дальнейшие затраты на поддержку системы и затраты на дальнейшее улучшение. Программное обеспечение низкого качества труднее улучшить, чем высококачественное, оно оставляет наследство в виде увеличения затрат организации.
• Ремонтопригодность и устойчивость программного обеспечения могут быть сдерживающим фактором в жизненном цикле и полезности программного обеспечения. Многие организации не смогли стать конкурентоспособными, даже используя Scrum, поскольку изначальное программное обеспечение было в плохом состоянии, а разработчики, которые его делали, отсутствовали.
Вы, наверное, привыкли к гораздо большему количеству показателей, таких как «заработанная ценность». Эти показатели были для вас очень важными, потому что отсутствовал другой способ оценить прогресс и текущий риск разработки проекта. Scrum заменяет эти показатели на надежное материальное свидетельство в конце каждого спринта. У вас есть серьезный инкремент функционала, который может быть незамедлительно использован. Все показатели подчинены ценности и стоимости этого функционала.
Показатели зависят от прозрачности
Вы пришли к Scrum, потому что хотите знать, что происходит, и управлять работой для создания прибыли для вашей организации и ценности для ваших клиентов.
Scrum обеспечит вам следующие возможности.
1. Знание того, как много функционала программного обеспечения осталось создать. Даже после того, как вы внесли массу изменений, вы всегда сможете спрогнозировать, что осталось сделать.
2. Представление о том, какой функционал уже сделан. Функционал соответствует тому, сколько денег потрачено. Это прибыльно.
3. Понимание, сколько функционала было реализовано за несколько последних спринтов. Это позволит вам сделать прогноз относительно того, сколько времени займет создание оставшегося функционала. Помните, что это сложная работа и будущее может измениться, но что-то всегда лучше, чем ничего.
4. Возможность взять один или несколько инкрементов функционала, которые уже закончены, и начать ими пользоваться, изучая ценность на раннем этапе.
Все остальное, что предоставляет вам Scrum, – дополнение к этому. Вы можете создать продуктивность, качество, хорошее место для работы, привлечь пользователей и увеличить долю рынка. Но главное – вы должны знать, что делаете. Прозрачность инкремента и того, из чего он состоит, – основа.
Законченный инкремент функционала
В конце спринта у вас появится инкремент одного или нескольких требований, законченный и готовый к использованию. Испытайте его и убедитесь, что он не развалится, что он достаточно качественный для реального использования. Опробуйте этот инкремент в сочетании со всеми предыдущими. Выполненный, законченный инкремент – то, что вы можете использовать.
Если инкремент не функционирует, как надо, и не может быть сразу установлен и использован, не принимайте его. Просите команду пересмотреть порядок и включить в него все работы, необходимые, чтобы действительно закончить инкремент. Затем верните эти пункты в бэклог продукта.
Непрозрачность вместо прозрачности
У нас есть опыт работы с последствиями отсутствия прозрачности в крупной энергетической компании в 2002 году. Scrum был опробован в одном из отделов, менеджер которого, Дэвид, был в восторге от прозрачности, обеспечиваемой Scrum. К сожалению, он не убедился, что инкремент полностью доделан и годен к употреблению. Он даже не знал, что должен это делать. Вот его история.
Дэвиду нужно было автоматизировать получение его департаментом сведений об изменении собственности – они занимались обработкой и выплатой лицензионных платежей землевладельцам в начале каждого финансового года. Дэвид должен был быть уверен, что информация актуальная, поскольку отвечал за имущество на территории Соединенных Штатов и Канады.
Всю информацию его организация получала в форме распечатанных документов. Объем становился ошеломляющим, и Дэвид хотел автоматизировать этот процесс.
Он решил, что его разработчики для создания системы должны использовать Scrum. Не только потому, что законченный продукт мог позволить ему оставаться на вершине прогресса, но и потому, что таким образом он получал возможность использовать части функционала по мере их доступности.
К концу третьего спринта разработчики автоматизировали получение и интеграцию смены собственника для одной из провинций Канады. Они продемонстрировали это, используя SQL, технический язык запросов к базе данных. Дэвид был в восторге. Он решил, что его сотрудникам необходимо выучить SQL, потому что большинство их задолженностей было из этой провинции и автоматизация могла позволить быстро устранить отставание.
Команда разработки предупредила Дэвида, что он пока не может использовать инкременты функционала. Но Дэвид в это не поверил: команда должна была строить приращения программного обеспечения, которые он мог бы сразу запускать в работу. Он видел первый, второй и третий инкременты и хотел начать пользоваться ими для облегчения бизнес-процессов. Он хотел получить ранние выгоды, пока разработка продолжается.
Команда разработки сообщила Дэвиду, что инкременты были созданы для демонстрации, но не для использования, поскольку существовал целый ряд нерешенных вопросов – например, данные не были стабильными, и база данных иногда теряла информацию и становилась искаженной. Дэвид спросил, сколько еще предстоит сделать, чтобы он мог пользоваться первыми тремя инкрементами. Ему ответили, что потребуется еще два спринта, чтобы сделать инкременты стабильными.
После этого у Дэвида был еще один, более трудный, разговор с командой разработки. Он выразил разочарование по поводу того, что прогресс не был прозрачным. Дэвид был смущен: ему преподносили процесс как Scrum, но то, что он увидел, не было реальным и готовым к полноценному использованию. Он также сказал, что ему вдвойне неловко, потому что он отчитывался о проделанной работе перед владельцем продукта так, как будто знал, что происходит.
Что думали люди о том, что происходило
Перед началом проекта Дэвид и Scrum-команда разработали план для создания системы. Дэвид удостоверился, что все знают план и он представляет собой наилучший возможный прогноз. Он пообещал, что будет показывать реальный прогресс по отношению к плану в конце каждого месячного спринта. Рисунок 7.5 показывает планируемую диаграмму сгорания задач и отчетный прогресс для конца первых трех спринтов. Они были идентичны.
.
Рис. 7.5
Что произошло на самом деле
Разработчики Scrum-команды только начали использовать Scrum. Они поняли принцип итераций, инкрементов, спринтов, Scrum-митингов и все остальное. Однако они не поняли важность прозрачности и законченности инкрементов. До этого они использовали каскадный процесс, при котором программное обеспечение не должно собираться и интегрироваться для попыток использования до окончания проекта. Разработчики решили, что могут так делать и при использовании Scrum. Они создавали столько, сколько могли, в каждом спринте. Они рассчитывали, что, когда Дэвид захочет использовать программное обеспечение, у них будет дополнительное время на то, чтобы сделать это обеспечение рабочим.
Команда разработки планировала проект с Дэвидом, основываясь на текущем уровне своих способностей. Она была недостаточна квалифицирована, чтобы создавать законченные инкременты в конце каждого спринта, – ее члены только изучали новые методы, и требуемые инструменты для разработки были заказаны, но еще не использовались. Разработчики еще не были достаточно профессиональными, чтобы построить законченный инкремент в течение одного спринта, или создать инкременты, которые добавляются к созданным ранее, как показано на рис. 7.6.
Рис. 7.6. Инкрементальный прогресс в сторону готовой к использованию функциональности
В самом начале проекта они думали, что сделают все инкременты действительно готовыми к употреблению, когда все спринты будут закончены.
Дэвид уловил идею прозрачности и предсказуемости. Команда разработки – только общую идею Scrum. Они перенесли непредсказуемость разработки каскадного процесса внутрь Scrum.
Прозрачность инкрементов должна была позволить Дэвиду управлять рисками и добиваться предсказуемости. В начале проекта Дэвид со Scrum-командой определили план выпуска. После спринта № 1 он оценил динамику приближения к будущей цели путем оценки того, что, как он думал, было рабочим инкрементом, и принял решение о том, что необходимо сделать в спринте № 2 в рамках движения к цели. Если бы он знал, что прогресс был недостаточным, то мог бы отменить проект. Однако из-за того, что инкремент был непрозрачным, он не мог эффективно принять решение.
Когда команда разработки оценила объем работы, которая не была доделана в течение первых трех спринтов, это добавило еще 14 единиц работы. Расхождение между планом и реальным прогрессом в конце третьего месяца разработки отражает эти «скрытые» 14 единиц работы, как показано на рис. 7.7.
Рис. 7.7. Реальная и планируемая законченная работа
В конце третьего спринта Дэвид верил, что 30 % работы уже сделано, как показано на рис. 7.5. Он думал, что может начать использовать эти 30 % готового продукта. К сожалению, инкремент не был законченным. Как показано на рис. 7.7, чтобы устранить расхождение между диаграммой сгорания задач, которую Дэвид считал правдивой, и реальной диаграммой, нужны два дополнительных спринта, чтобы сделать три предыдущих инкремента пригодными для использования в бизнесе.
Если вы, как Дэвид, когда-либо начнете принимать незаконченные инкременты, они вернутся и станут вас преследовать. Недоделанную работу гораздо труднее закончить, когда она перекрывается новыми задачами. Кроме того, незавершенная работа нарушает прозрачность, делая невозможным прогнозирование того, как далеко вы находитесь от достижения цели и каковы будут реальные затраты на проект. Вы окажетесь неспособны эффективно управлять своими инвестициями.
Когда проект «закончен», «завершен» или «финализирован», не должно быть недоделанной работы. Этот важный момент – одно из наиболее неявных, но фундаментальных требований Scrum-подхода.
Аналогия
В холодном климате, когда температура падает, всякий раз, когда вы включаете воду в кране или используете стиральную или посудомоечную машину – словом, когда система отопления включается, трубы начинают стучать друг о друга, об ограждение или стены. Иногда они звучат как отбойный молоток, особенно если это происходит посреди ночи. Они дребезжат, потому что плохо закреплены. Стучащие трубы трудно починить, точный источник стука сложно установить – стучать может не там, где труба расшаталась. Часто, чтобы обнаружить, где именно стучит, приходится делать большое отверстие в стене, удалять изоляцию, чтобы осмотреть трубы в поисках источника повреждения. Затем, при везении, вы сможете закрепить трубу должным образом. Стоимость правильного крепления труб при монтаже не сильно отличается от неправильного. Стоимость исправления креплений, когда здание уже построено, гораздо выше.
Каждый инкремент программного обеспечения должен быть таким же крепким, как и правильно закрепленная труба. Если мы надстроим на него больше инкрементов, то не захотим долго копать вглубь, чтобы починить то, что не работает должным образом. Починка после того, как строительство завершено, оказывается очень дорогой. Это называется техническим долгом.
Устранение технических долгов для получения готовых к использованию инкрементов
Множество Scrum-команд, с которыми мы сотрудничали, поначалу не были способны разработать готовые к использованию инкременты программного обеспечения к концу спринта. В прошлом от них не требовалось прозрачности, и они часто не имели достаточной технической квалификации или необходимых инструментов, чтобы быстро создать готовый для использования функционал.
Таблица 7.3 предоставляет в первой колонке типичную работу, которую проделывает команда девелоперов, чтобы превратить требования бэклога продукта в стабильный функционал. Вторая колонка, обозначенная «Обычно», содержит количество единиц работы, которую команды привыкли делать предварительно до конца предиктивного, традиционного, проекта для каждой задачи из первой колонки. К примеру, разработчики привыкли тратить 12 единиц работы на анализ требований. Они привыкли тратить 10 единиц работы, создавая компоненты архитектуры. Это относительные цифры, показывающие, что разработчики тратят на две единицы больше работы в первом пункте, или на 20 % больше работы, чем по второму пункту.
Таблица 7.3
Третья колонка, названная «Сделано», содержит единицы работы, которые им требуется выполнить, чтобы создать полностью законченные, прозрачные инкременты функционала по каждому пункту из первой колонки. Общая сумма работы для создания прозрачных инкрементов составляет 171 единицу. Большинство разработчиков привыкли заканчивать только 71 из этих единиц работы, когда они переходят на эмпирические Scrum-проекты, как это показано в колонке «Обычно». Они привыкли оставлять на потом 100 единиц работы в каждом фрагменте функционала, который они создают. спринт за спринтом, эта незаконченная работа накапливается по экспоненте до самого конца проекта.
Перед тем как вы начнете ваш первый спринт, попросите Scrum-мастера и команду разработки оценить табл. 7.3. Пусть они сделают новую таблицу в соответствии с тем типом программного обеспечения, которое вы создаете. Затем попросите их, до того как вы начнете первый спринт, обдумать, как они планируют закончить все работы. Чтобы увидеть, все ли они сделали, как надо, попросите у них один или несколько инкрементов для начала использования по назначению в конце любого спринта. Если они скажут, что это невозможно, или вы попробуете сами, но инкремент не работает как надо, значит, команде разработки требуется больше обучения или практики.
Компания Adobe и технический долг
Продукт Adobe Premiere Pro – ведущий в отрасли набор программного обеспечения для нелинейного видеомонтажа. Программы канала BBC и The Tonight Show («Сегодня вечером») создаются с его помощью. Вице-президент подразделения Стив Уорнер управлял Premiere Pro. Питер Грин был программным менеджером пакета Creative Suite в его составе. Развивающиеся стандарты и запросы на новые возможности требовали от них очень быстрого выпуска новых релизов.
Premiere Pro CS3 (Creative Suite, версия 3.0) был выпущен в июле 2007-го. Для его создания были использованы традиционные методы, и программное обеспечение поставлялось одним большим фрагментом после 18 месяцев разработки. Когда дата выпуска стала приближаться, разработчики начали собирать CS3 к релизу. Было очень много «стучащих труб» (то есть дефектов или ошибок). Разработчики не располагали достаточным количеством времени, чтобы их все исправить, поэтому собрали релиз так, как смогли в эти временные рамки, и выпустили его. Вот какие комментарии оставляли пользователи о CS3:
«Если вы хотите легкую в использовании, дружелюбную по отношению к пользователю программу для редактирования видео, это точно не она. Были вещи, которые я от нее ждал, а она их не делает. Или я не смог их запустить»[9].
«…это программное обеспечение – заведомо плохой код с большим количеством утечек памяти. Если вы попробуете перекодировать большой видеофайл в mpeg2, Premiere, скорее всего, выдаст ошибку из-за плохого управления памятью. Единственное решение – просто перезапустить систему и молиться, чтобы это опять не случилось»[10].
Следующий релиз, Premiere Pro CS4, должен был устранить дефекты CS3. CS4 должен был улучшить стабильность, скорость и легкость в использовании, а также остановить утечки памяти. Питер Грин услышал об этом и решил, что короткие циклы разработки позволят Adobe создать законченные инкременты общего продукта после каждого спринта. Затем инкременты будут складываться в нечто работающее, и это должно понравиться пользователям. Питер также хотел знать реальное положение дел в каждом спринте, поэтому поручил нескольким командам, работающим над CS4, попробовать Scrum.
У Adobe было более 100 девелоперов в 18 Scrum-командах, работающих над выпуском этого релиза. Все решили, что интегрирование всех инкрементов от всех 18 команд после каждого спринта будет слишком большой работой. Они решили подождать до даты, близкой к релизу, чтобы интегрировать все инкременты. Прямо перед выходом CS4 команды пытались соединить фрагменты своей индивидуальной работы в один объединенный продукт. Все противоречия и неразрешенные зависимости, которые препятствовали интеграции, выявились в виде ошибок, и фрагменты CS4 не работали вместе. Рисунок 7.8 показывает медленное увеличение в течение разработки до попытки интеграции и затем резкий скачок в количестве дефектов. Разработчики героически исправляли максимум возможного, но все-таки им пришлось выпустить продукт с заметными дефектами. Имена разработчиков, которые были госпитализированы по причине стресса и переработки в Adobe, стали легендой.
Рис. 7.8. Дефекты в Adobe CS4 и CS5
CS4 был выпущен в сентябре 2008 года и вызвал критические обзоры и негативные отзывы пользователей. Adobe использовал Scrum, чтобы стать более продуктивным, однако более продуктивной стала только каждая отдельная команда. Работа всех команд не была интегрирована и не стала прозрачной. Потенциальные проблемы интеграции были отложены для краткосрочной продуктивности. Качество продукта, отзывы критиков индустрии, своевременный выпуск новых возможностей, удовлетворенность клиентов, моральный дух и здоровье сотрудников в результате пострадали. Что-то надо было менять.
Стив и Питер решили в работе над CS5 использовать Scrum как можно шире, а также обучить методу всех разработчиков и программных менеджеров. Новой задачей Питера было обучать и инструктировать команды, чтобы они могли создать качественное программное обеспечение после каждого спринта. Все инкременты всех команд интегрировались и тестировались после каждого спринта. Каждый спринт естественным образом производил продукт уровня релиза CS5. Рисунок 7.8 показывает, что дефекты никогда не выходили из-под контроля в течение всего процесса. Более того, ко всеобщему удивлению, разработчики закончили работу быстрее, чем было запланировано. Неожиданные дефекты и ошибки от интеграции инкрементов больше не замедляли их прогресс. В дополнительное время перед выпуском разработчики исправили часть проблем, оставшихся от релиза CS4. CS5 был выпущен в апреле 2010-го, обзоры и отзывы пользователей были на этот раз одобрительными.
Питера попросили разработать показатели, которые могли быть использованы для управления Scrum-разработкой в Adobe. Он отметил три таких показателя. На первом месте было удовлетворение сотрудников Scrum процессом во время работы над CS5 и их вера в то, что Scrum улучшил их методы разработки программного обеспечения. Adobe предложил 200 разработчикам из 25 команд ответить на 50 вопросов[11]. Результаты были проанализированы командами, и выявлены области, в которых требовались улучшения. Впечатляет, что 80 % разработчиков отметили, что продолжат использовать Scrum даже без распоряжения руководства. Среди наиболее производительных команд так ответили 100 % разработчиков. Уровень дефектов уменьшился значительно, и практически ни один продукт не был выпущен с «отложенными» дефектами. Удовлетворение пользователей заметно возросло.
Adobe опробовал Scrum, потому что испытывал проблемы, которые только усугублялись. Благодаря настойчивости, обучению и согласованности усилий многие проблемы были решены, и релизы программного обеспечения стали занимать меньше времени, а качество улучшилось.
Происхождение греха
Давайте рассмотрим типичный проект. Перед запуском проекта команда разработки сделала оценку, что бэклог продукта содержит 80 единиц работы над требованиями. Вы надеетесь выпустить это программное обеспечение после десяти спринтов длиной в один месяц. По привычке команда разработки делит 80 на 10 и сообщает, что будет выполнять по восемь единиц работы над требованиями за один спринт, причем станет выбирать восемь единиц работы для каждого месячного спринта, независимо от того, какое качество ожидается и сколько работы придется пропустить, чтобы все сделать вовремя.
В предиктивных проектах по разработке программного обеспечения организация оценивает требования и намечает дату выпуска и стоимость, затем следует обеспечить соответствие реальности планам. В Scrum-проектах команда разработки поставляет столько инкрементов функционала, сколько сможет, с учетом продуктовых приоритетов. И вы можете управлять этим процессом путем приоритезации потребностей, и каждый инкремент продукта будет работоспособен и будет соответствовать необходимому уровню качества.
Качество традиционно было переменной в сфере разработки программного обеспечения. Системы заканчивались с минимальной просрочкой срока выпуска, если качество понижалось. Однако ухудшение качества на самом деле снижает продуктивность, увеличивает стоимость и становится причиной еще больших просрочек. Команды отягощаются дополнительной работой по исправлению обнаруженных дефектов и ошибок, с той только разницей, что причина задержки и увеличение стоимости становятся невидимыми для вас. Сегодня качество перестает быть переменной.
Продолжаем наш пример. Вы ожидаете, что к концу десятого месяца сможете использовать весь функционал программного обеспечения. Однако в конце концов узнаете, что накопилось 48 единиц недоделанной работы, и вас это, конечно, не радует. Что делать? Просить разработчиков закончить недоделанные задачи, чтобы увеличить процент законченного для каждой строчки бэклога продукта как можно быстрее? Но мы ошибаемся, если требуем закончить работу как можно быстрее. Обычно на это уходит еще шесть месячных спринтов (48 единиц, деленные на предполагаемую скорость восемь единиц). Оставшаяся несделанная работа отражена на рис. 7.9 как пробел между работой, которая была заявлена как законченная, и аккумулированной незавершенной работой.
Рис. 7.9. Накопление технического долга по мере выполнения работы
В конечном счете команда разработки завершает часть недоделанных задач, и менеджмент признает, что продукт начинает работать. Однако вскоре пользователи принимаются жаловаться, что продукт не соответствует их ожиданиям. С этого момента незаконченная работа замораживается. Это технический долг, который ограничивает людей в эффективном использовании продукта. Начинаются звонков клиентов в службу поддержки и исправление ошибок, которое съедает наше внимание и прибыль. Хуже всего, что это может заставить пользователей искать лучшие альтернативы. Мы не получаем выгоды, которых ожидали. Технический долг прогрессивно уменьшает долговечность продукта, его предполагаемый жизненный цикл.
Предположим, команда разработки состоит из трех программистов и двух инженеров по качеству. Они применяют традиционные, предиктивные, методы. У них имеется контроль качества, чтобы посмотреть, все ли работает. Любые ошибки или дефекты обнаруживаются и возвращаются программистам на исправление. Пока это происходит, другие программисты могут написать много нового программного обеспечения поверх дефектного. Усилия по устранению изначальной проблемы теперь занимают больше времени, а усилия по исправлению сборок программного обеспечения еще больше увеличивают эти временные затраты. Очень важно обнаруживать и исправлять проблемы, как только они появляются. Затем разработчики могут продолжить без усложнения проблемы и отложенных проблем при сборке.
Технический долг затуманивает прозрачность и делает решения сомнительными. Мы измеряем наш прогресс путем сравнения законченных, готовых к использованию фрагментов функциональных возможностей программного обеспечения с оставшимися необходимыми фрагментами. Мы не берем в расчет незаконченную работу. Тем не менее очень много разработчиков программного обеспечения производят незаконченные инкременты. Обычно, когда членов команды спрашивают, почему они частично закончили некоторое количество требований бэклога продукта, вместо того чтобы выбрать меньшее количество и закончить полностью, они говорят: «У нас не было времени». Мы должны обратиться к нашему Scrum-мастеру, чтобы убедиться, что такого не произойдет.
Программное обеспечение за 30 дней обеспечивает предсказуемость, контроль рисков и оптимальную ценность. Краеугольный камень этих возможностей – постоянная прозрачность. Как минимум каждые 30 дней вы можете увидеть то, что покупаете. Многие разработчики борются со старыми привычками и недостаточными профессиональными навыками, чтобы создать эту прозрачность. Есть множество разработчиков, которые переступили эту пропасть. Вам следует выбирать разработчиков и инвестировать в них, пока они не смогут надежно создавать программный продукт, или найти других специалистов, которые смогут это сделать для вас.
Выводы
Scrum-студия разработки программного обеспечения – обособленная организация внутри вашей общей организации. Студия не делает попыток изменить существующий процесс разработки всей организации – скорее она организуется для того, чтобы каждый, кто хочет использовать Scrum для разработки программного обеспечения, мог туда пойти. Студия начинает с малого и растет, пока не подтвердит свою ценность, постепенно становясь местом, где разработка программного обеспечения продуктивна, отличается высоким качеством и ценностью. Риск находится под контролем, а проекты управляются предсказуемо. Тестирование и показатели используются для достижения результатов опытным путем, чтобы вдохновить постоянное совершенствование.
Scrum-студия – простой и быстрый путь для начала использования инкрементального, непрерывного улучшения в разработке программного обеспечения. Scrum и показатели студии помогают выявить проблемные области.
8. Scrum на уровне организации
Многие организации принимают решение перейти на Scrum. Как и в случаях со многими другими типами организационных преобразований, результаты зависят от многих факторов. Некоторые фактические результаты описаны в этой главе наряду с обстановкой, которая создана для каждого из них.
Мы работали со многими организациями, большими и маленькими, чтобы помочь им трансформироваться и получить эти преимущества. Первая публикация об этих усилиях, The Playbook for Achieving Enterprise Agility («Пособие для достижения бизнес-гибкости»), выпущена в 2005 году в результате сотрудничества Кена Швабера с корпорацией Rally. Она не была доступна широкой публике, но часто используется при развертывании Scrum. С этой публикацией можно ознакомиться в Приложении 2.
Позже, в 2007 году, Кен написал книгу об адаптации Scrum на уровень организации, The Enterprise and Scrum[12]. Он описал стратегию и тактику для этой адаптации. Тактика применения Scrum для управления самой трансформацией также объяснялась.
Глубокое, но переходное изменение
Тип адаптации, который мы уже увидели, как правило, весьма приятен. Организация регулярно выпускает качественные, ценные релизы программного обеспечения, и они хорошо принимаются пользователями. Отделы разработки и продвижения продуктов эффективно работают вместе, чтобы формулировать и предоставлять новые релизы.
В процессе перехода к Scrum вся работа организации переворачивается, находясь в контролируемом хаосе в течение нескольких лет.
В конечном счете релизы программного обеспечения станут лучше, сотрудники будут ходить на работу с удовольствием, а потребители полюбят сотрудничество с вашей организацией. Тем не менее преобразование зависит от высшего руководства, которое его запускает. Очень часто этот человек идет на повышение, или его нанимают где-то еще до того, как другие люди, которые понимают новый способ мышления и работы, развиваются в рамках всей организации, и до того, как трансформации закреплены в самой организации. Поэтому, когда он покидает организацию, улучшения не закрепляются. Старая культура работы, на которую новые методы накладывались, не искоренена полностью и вновь проявляет себя. Совершенство и непрерывное улучшение медленно снижаются. Организация остается во много раз лучше, чем она была до того, как стала использовать Scrum, но не на том уровне, на котором могла бы быть. Люди начинают стараться. В течение нескольких лет организация становится лучше, чем в самом начале, но это еще не гибкая Scrum-организация. Возможность была упущена.
Сравнивая записи, мы обнаружили, что это правда почти для каждой преобразованной компании, которую мы знаем и в которой принимали участие.
Компания Primavera служит примером такого типа трансформации. Primavera производит пакет программного обеспечения для управления проектами, TeamPlay, созданного для индустрии разработки программного обеспечения. Все аспекты каскадного процесса автоматизированы в этом продукте. В начале 2000-х Primavera билась изо всех сил, чтобы закончить новый релиз TeamPlay. Выпуск выбился из графика, стоил дорого, был не закончен и имел неудовлетворительное качество. В 2003 году Primavera изучала использование Scrum. Возглавляемая Бобом Шацем, исполнительным директором по разработке программного обеспечения, организация трансформировала себя. Управление продуктами, продвижением, продажами, штатный персонал, поддержка и разработка продукта – все стало гибким, приспособленным и в высшей степени конкурентоспособным. Ирония была в том, что Primavera использовала эмпирический процесс, Scrum, для создания инструмента для предиктивного процесса TeamPlay. Вся история рассказана на сайте Боба[13].
Боб покинул Primavera в 2005 году. Его главный помощник Ибрагим Абдельсафи ушел из компании почти сразу за ним. СТО и СЕО Primavera действительно никогда не нравился Scrum – точнее, их устраивали результаты, но не устраивало, что это подрывает использование их продуктов. Когда Боб и Ибрагим покинули компанию, не осталось высшего руководства, приверженного Scrum. Все использовали форму Scrum, но делали это все хуже и хуже. Прозрачность стала затуманиваться, предсказуемость пропала и так далее. Когда в 2008 году компания Oracle приобрела Primavera, она была лучше, чем до использования Scrum, но уже не превосходна. Важно отметить, что сотрудники больше не мечтали скорее прийти на работу и делать великие дела.
Глубокие и стойкие изменения
Наиболее успешная персона в организации – топ-менеджер, который разворачивает Scrum по всей компании. Этот человек знает, что требуется, чтобы добиться значительных организационных преобразований. Он знает, что культурная трансформация должна быть глубокой и полной, чтобы затронуть корни. Когда такой человек описывает успехи, он говорит не о том, что сделал он, а о том, что сделали другие. Джон П. Коттер, профессор Гарвардской школы бизнеса и автор книг по изменениям, сказал: «Когда я иду говорить с CEO о трансформации организации, он обычно просит меня провести встречу с ним и его персоналом. Если его персонал участвует в разговоре, я высоко оцениваю их шансы на успех. Если все переговоры ведет руководитель, у организации нет ни единого шанса».
Настоящие изменения могут быть достигнуты старомодным путем: с помощью упорного труда. Чтобы трансформация произошла как надо, вся организация должна понять новую культуру и создать ее. Даже при вынужденных обстоятельствах трансформация организации – очень сложная задача. Коттер, один из самых профессиональных агентов по внедрению изменений, посчитал, что этот тип трансформации требует от пяти до семи лет и только 30 % организаций успешно изменяются. Мы должны посмотреть на General Motors, Ford и Chrysler. Перед лицом жесткой конкуренции они не смогли поменяться за 40 лет, и только сейчас изменения начинают проявляться.
Если вы заинтересованы в таком типе изменений, мы адресуем вас к экспертам. Советуем начать с прекрасных книг Коттера, включая Leading Change[14] и Changing and Succeeding under Any Conditions[15]. Затем свяжитесь с его организацией или какой-либо другой, специализирующейся на организационных изменениях.
Трансформации и упорство компании Carbonite
Carbonite была основана в 2005 году и стала публичной компанией в августе 2011 года. Продукты компании предлагают автоматическое онлайн-резервирование персональных компьютеров, везде и в любое время. Роб Рубин, вице-президент по разработке, сотрудничал с основателями Carbonite, Джеффом Флауэрсом и Дэвидом Френдом, с самого начала. Это был их шестой стартап, поэтому Роб полагался на их дальновидность и управленческие качества, а Джефф и Дэвид полагались на профессионализм Роба в управлении разработкой. Тем не менее к 2008 году основной продукт Carbonite внутри называли «болото». Для выпуска нового релиза потребовалось очень много времени.
В 2008 году у Carbonite было семь высококлассных разработчиков, но все они работали не в офисе, а удаленно. Имелось также семь владельцев продуктов, каждый со своей сложной задачей высочайшей важности.
Как Carbonite сломала шаблон
Роб присутствовал на презентации Scrum в Массачусетском технологическом институте в 2006 году. Ему действительно понравилась идея, что Scrum даст ему то, что он сможет измерить. В работе по управлению измерение результатов было для него на первом месте, а действие основывалось на этом измерении. Без измерений невозможно управлять. Роб хотел, чтобы Scrum обеспечивал четкие, прозрачные измерения прогресса навстречу цели каждые 30 дней и надежное измерение прогресса следующих 30 дней каждый день. Роб также верил, что технологические проекты и продукты – трудные, потому что их природа сложна, невозможно предсказать, когда они потерпят неудачу. И неудачи в них случайны. Ежедневная и 30-дневная информация о прогрессе или неудаче может быть критической для такого типа работы.
Результаты
Роб обучил свою организацию Scrum в 2008 году. С тех пор Carbonite улучшил свой цикл выпуска продуктов, распространившись по всему миру. На недавней презентации Роб и Джефф Флауэрс сообщили, что без Scrum Carbonite никогда бы не смогла стать публичной компанией. Scrum дал организации стандартный процесс для внутреннего пользования и расширения компании. Самое ценное – то, что Scrum не был навязчивым. Если компания, внедряющая его, уже имела высокий уровень мастерства и налаженные процессы, Scrum сохранял их, их оказалось легко комбинировать с моделью Scrum для обеспечения нужной измеримости и предсказуемости.
Роб и Джефф верили в своих сотрудников. Они использовали Scrum, чтобы создать окружающую среду, в которой сотрудники Carbonite могут быть креативными и работать эффективнее. Все они понимали суть проблем и работали вместе над их решением. В дополнение команды Carbonite в конце каждого спринта проводили ретроспективу. Это мероприятие было интенсивным. Все, что в работе могло быть сделано лучше и повышало производительность продукта, было открыто для дискуссий. Споры возникали жаркие, но продуктивные. Складывались крепкие рабочие команды, даже несмотря на то что количество сотрудников возросло с семи человек почти до сотни. Они создали свое будущее. В 2011 году «Бостонская деловая газета» назвала Carbonite одним из лучших рабочих мест в Бостоне[16].
Два непременных элемента для любой Scrum-адаптации
При попытке трансформации организации надо иметь в виду два предостережения.
Не пытайтесь изменить или адаптировать Scrum
Scrum – это не такой метод или процесс, который может быть изменен, чтобы приспособиться к существующей организационной культуре; культура должна быть изменена, чтобы Scrum заработал. Scrum устраняет все культурные дисфункции, которые мешают разработке программного обеспечения в манере, описанной в этой книге. Для организации Scrum – «канарейка в угольной шахте»[17]. Если Scrum не используется с целью создать гибкий, прозрачный процесс разработки, проблемы остаются невидимыми и продолжают наносить вред организации. В результате главная выгода от Scrum теряется.
Не сомневайтесь
Не пытайтесь облегчить организационные изменения. Важно, чтобы продвижение было очевидным, энергичным и первоначальный импульс сохранялся. После того как люди начинают использовать Scrum, наиболее важные препятствия легче идентифицировать. В некоторых организациях наблюдается тенденция излишне тщательно планировать и обдумывать. Это не подход Scrum.
Scrum требует действий, испытаний, оценки, изучения, устранения препятствий и более активных действий, для того чтобы создать вещи, представляющие ценность для всех заинтересованных сторон.
9. Преобразование организации: глубокое и устойчивое изменение
Счастлив тот руководитель, который провел организационную трансформацию в Scrum. Так же счастливы и сотрудники организации. Теперь у них есть отличное место работы и прекрасный способ быстро производить и продавать ценное программное обеспечение, и они достигли этого ценой тяжелого труда.
Проект трансформации организации
Путь от начала проекта трансформации до реализации видения состоит из многих видов деятельности и может занимать пять или шесть лет до завершенного перехода, когда глубокие и устойчивые изменения окажутся достигнуты. Основные изменения будут происходить быстро, и польза появится уже в течение первого года трансформации. Значительное конкурентное преимущество будет достигнуто в пределах двух лет. Даже когда трансформация окажется полностью закончена, постоянные улучшения, ключ к успеху, будут продолжаться.
Вы применили Scrum в одном или нескольких проектах и убедились, что хотите использовать его повсеместно в организации. Для начала следует решить, имеют ли изменения, воплощенные в Scrum, достаточно ценности, чтобы стоить инвестиций в проект трансформации. Вы должны собрать основных людей, с которыми будете работать на протяжении проекта, чтобы они, как и вы, обрели эту уверенность.
После того как вы решили реализовать Scrum в вашей организации, начинается путь с верой в то, что усилия будут вознаграждены более эффективным процессом создания программного обеспечения и более отзывчивой и конкурентной компанией. Также факт, что теперь в прогнозе значительное количество организационных изменений.
Подготовка
В этом разделе описаны некоторые типичные примеры того, как можно реализовать Scrum в вашей организации. Он может служить сценарием, заполненным примерными техниками, которые вы можете применять для достижения необходимого изменения. Полный сценарий вы можете найти в Приложении 3.
Основные направления деятельности проекта преобразования приведены в табл. 9.1 наряду со средней продолжительностью каждого вида деятельности. Некоторые виды деятельности могут частично перекрываться.
Таблица 9.1. Основные виды деятельности проекта преобразования
Около видов деятельности, которые необходимы, чтобы сделать переход постоянным, стоит «Да» в колонке «Требуется для перманентности».
Начало проекта трансформации
Первое действие закладывает основу для всего проекта – это действие описано в табл. 9.2, из которой вы узнаете, что такое Scrum и как его использовать для улучшения, чтобы стать гибким. Основные показатели производительности для измерения гибкости и оценки достигаемой ценности строятся на тех же принципах, что обсуждались для Scrum-студии в главе 6. Видение, цели, стратегии и тактика проекта разрабатываются в этом действии наряду с бюджетом и дорожной картой. Дорожная карта проекта носит предварительный характер и полностью зависит от энергии и приверженности переходной команды и способности организации меняться.
Таблица 9.2. Начало проекта трансформации
Энергия трансформации зарождается здесь, и каналы коммуникаций начинаются в этой точке.
Определить полезность и срочность
Безотлагательная необходимость возникает из необходимости организации предоставлять конкурентоспособные услуги и продукты. Если она не сможет это делать, ее клиенты обратятся к другим компаниям. Пункт о срочности отражает необходимость решения двух важных задач. Первая – необходимость оставаться конкурентоспособным, чтобы просто не выходить из игры и обеспечить выживание бизнеса. Вторая – желание расти и процветать, увеличивать долю рынка и предлагать наиболее инновационные продукты. Люди, которые считают, что преобразование должно быть срочным, должны представить убедительные аргументы в пользу этого. Цель необходимо заявить всеми возможными способами: важными можно считать официальные презентации, а также финансовые модели. Самое важное – описание того, что произойдет, когда преобразование случится. Оно может быть анекдотичным, метафоричным или в виде макета. Но оно должна стать частью воображения сотрудников компании.
Команда по преобразованию, которая будет управлять этими изменениями, формируется в этой фазе. Определение проекта как срочного может быть отличным инструментом привлечения участников в эту команду.
Причина срочности трансформации может быть простой, например:
Мы знаем, что у нас есть проблемы при использовании программного обеспечения для нашего преимущества. Наши продукты часто задерживаются, не отвечают нашим нуждам и стоят больше, чем мы готовы давать. Это было допустимо только до тех пор, пока мы не имели альтернативы. Теперь она есть, и это Scrum. Его уже используют некоторые наши конкуренты, создавая с его помощью высококачественные продукты быстрее и с меньшими затратами. Они расширяют долю рынка, и если мы не научимся делать то, что они делают, лучше них, у нас начнутся проблемы. Наши доходы будут снижаться, клиенты пойдут к конкурентам, и сотрудники уйдут от нас. Нам нужно трансформировать нашу организацию.
Сформировать команду изменений
Самый старший руководитель, который хочет изменений, формирует новый проект преобразования организации. Он лидер проекта и должен быть заинтересован в трансформации. Он формирует команду проекта, называемую командой трансформации, и эта команда – сердце изменений. В нее входят ключевые руководители, которые заинтересованы в этой трансформации. Думающие лидеры по всей организации, которые понимают актуальность и хотят преобразований, также привлекаются.
Эта команда будет работать в течение всего проекта. Вам может понадобиться назначить некоторых ее членов на важные для перехода позиции внутри организации, что позволит привлечь новых членов команды. Ядро команды трансформации будет состоять не более чем из семи – девяти членов. Все участники должны быть остро заинтересованы в использовании Scrum, чтобы стать гибкими, повысить свой профессионализм и делать хорошую, высококачественную работу, создавая тесные, продуктивные и успешные отношения со своими клиентами.
Сформулировать видение и стратегию
Задача команды трансформации – направлять организацию из текущей критической ситуации к желаемому состоянию. Сначала она разрабатывает видение: как будет выглядеть организация, когда трансформация будет закончена. Например, книга Our Iceberg Is Melting, о которой мы уже упоминали, описывает колонию пингвинов, живущих на тающем айсберге. К сожалению, колония считает айсберг своим любимым домом. Пингвины должны уходить, но мыслят свою жизнь только на этом айсберге. Для них создается новое видение – миграционная колония. Этот текущий айсберг – их настоящий дом, но важнее становится то, что они – колония. Они продолжат свое существование как колония и тогда, когда этот айсберг совсем растает. Они все вместе просто будут жить на другом айсберге. Это видение дает колонии точку опоры, контекст, в котором можно увидеть надвигающиеся изменения. Новая цель для них – спасти колонию, и движение становится способом это сделать. Волнение о процессе трансформации все еще присутствует, но не о будущем.
Каждое видение содержит полезность необходимости его реализации. Формулировка видения может быть следующей:
Наша организация извлекает выгоду из возможностей и вызовов в нашей рыночной нише. Мы постоянно создаем новые, полезные, инновационные предложения и продукты. Мы делаем это, привлекая интеллект и творческие способности каждого в организации. Мы совершаем ошибки и учимся на них. Мы открытая, прозрачная организация, которая честна по отношению к себе и объективно оценивает свои силы, слабости, текущей ситуации и возможности. Мы организация, созданная из наших сотрудников и для них. Мы ценим честный диалог и спор, из которых рождаются истина и возможности.
Эта формулировка видения создает пространство для ценных качеств Scrum, таких как прозрачность, эмпиризм, повышение интеллектуального уровня и создание знаний.
Во время подготовки трансформации команда очерчивает начальную задачи и создает бэклог. Например, задача начала обсуждения следующих этапов деятельности определяется, разбивается на пункты, проясняется и заносится в бэклог трансформации. Работа упорядочена и проверяется в течение времени. Из этого выкристаллизовываются конкретные проекты. Эти проекты – спринты, а инкремент изменения организационной структуры – результат каждого спринта. (Следующая глава, «Скрамить Scrum», объясняет, как команда трансформации использует Scrum для управления трансформацией.)
Результаты начальной деятельности – функционирующая команда трансформации, заявление о необходимости, изложение видения, коммуникационная стратегия, бэклог трансформации, процессы для продолжения, определение выполнимости работы по изменению для следующих нескольких месяцев и идентификация показателей, которые будут использованы для отслеживания прогресса.
Связь видения и стратегии
Должна быть создана четкая стратегия связей по трансформации. Это действие заложено в табл. 9.3. Вне зависимости от того, какие связи имеют место, их всегда недостаточно. Во время работы с организациями мы слышим невероятные вещи, которые принимались за правду. Часто тому причиной становится недостаток ясности. Если люди беспокоятся, потому что они не знают, что делать, или не знают, как делать что-либо, значит, средства связи неэффективны.
Таблица 9.3. Связь видения и стратегии
Плохая коммуникация – причина непрозрачности, сплетен и слухов. Информация, которую разрабатывает и распространяет команда трансформации, должна быть ясной. Уведомление о необходимости трансформации должна идти сверху вниз, снизу вверх и во всех направлениях. Информирование о новом видении и стратегиях должно проводиться всеми способами, включая презентации, распоряжения руководства, рабочие заседания, неформальные форумы, соревнования. Это следует делать на обедах, встречах один на один с сотрудниками, которые обеспокоены судьбой компании, в блогах, почтовых рассылках, в документах и при личном посещении командой трансформации и руководством всех подразделений организации. Общение должно быть частым, актуальным и постоянным.
Общение включает поведение. Все, что руководство и менеджеры говорят и делают, должно последовательно поддерживать изменения. Их поведение должно быть образцом поведения, которого они ждут от подчиненных. Если это не так или они говорят одно, а делают другое, трансформации наносится вред.
Развеять сомнения и сопротивление
Люди видели книги о Scrum на столах и слышали «внутреннюю информацию». Начинают ползти слухи. Проблема слухов в том, что они анонимны, люди вкладывают в них собственное мнение и худшие страхи. Слухи могут остановить каждого на его пути, потому они должны быть развеяны при любом значительном изменении.
Все знают существующий порядок в организации: как менеджеры действуют, как добиваются выполнения, как подняться по карьерной лестнице, как получить повышение зарплаты или бонусы, как исправить ошибки и так далее. Даже если сотрудникам не нравится, как все происходит в организации, им комфортно от того, что они знают порядок. Если люди не понимают образа изменений и того, как они в него будут встроены, не важно, какими бы хорошими ни были изменения, они будут им сопротивляться. Сотрудники на всех уровнях должны точно знать, какое влияние предложенные изменения окажут на них, их работу и безопасность их семей. Многие инстинктивно пытаются проигнорировать или подорвать любые изменения, если они чувствуют, что изменения лично им несут опасность. Если они не поймут, что предлагаемые изменения значат для них персонально, то будут им сопротивляться и сейчас, и в будущем.
Сопротивление принимает множество форм, и самая пагубная из них – пассивное сопротивление. Люди не протестуют, они не спорят и не возражают. Они не хотят быть отождествлены как помеха, но они не хотят меняться.
Жизненно важно усадить менеджеров и остальных сотрудников в одну лодку перед приближением перемен. Эти люди – основа организации. Они знают свое дело, потребителей, системы и продукты. Без них не будет изменений.
Создать и запустить методы коммуникации
Первое уведомление о трансформации должно исходить от руководства компании и сразу во всей организации. Руководители должны описать проблему, необходимость срочных перемен и свое видение. Им необходимо представить команду трансформации и дорожную карту, которую они разработали, а также перечислить все способы, которыми люди могут общаться по этому поводу.
Менеджеры и другие сотрудники должны провести небольшие собрания внутри отделов для ответов на вопросы. Следует подготовить проспекты, описывающие объявленные решения руководства. Покидая это собрание, сотрудники должны знать, с кем связаться внутри организации для получения ответов на возникшие вопросы.
В распоряжении команды трансформации должны иметься способы работы с людьми, для того чтобы узнать реакцию сотрудников на решения руководства в формальной и неформальной обстановке внутри отделов и в целом в организации.
Распространение по всей организации
Первые проекты по разработке программного обеспечения начинаются в действии 3 (табл. 9.4). Ваша организация уже имеет некоторый опыт работы со Scrum, из пилотного проекта (глава 3), разовых проектов (глава 4) или работы Scrum-студии (глава 5). Эти проекты – часть устойчивого внедрения и использования Scrum путем разработки продуктов организаций. Также они – причина изменений во всех смежных областях.
Таблица 9.4. Распространение по всей организации
Команда трансформации создает бэклог работы, которая изменит организацию. Коммуникации были вверху списка задач. Теперь команда начинает работать над большим количеством пунктов в бэклоге трансформации. Очень важно, чтобы они включали действия, перечисленные ниже.
Обучение и внедрение нового видения, процессов и ценностей. Сотрудники должны понимать, что их ждет и почему это важно для них. Учебные мастерские помогут им лучше понять и укрепить связи.
Уберите очевидные препятствия. Начните устранять некоторые из хорошо известных помех. Каждый должен иметь список вещей, продуктивных для разработки программного обеспечения. Измените то, что сейчас требуется, но раздражает. Обременительные циклы проверок и согласования – обычно первое, что можно урезать. Найдите еще элементы для раннего исключения. Люди начнут верить, что происходит что-то особенное, выгодное для них.
Измените структуры и процессы, которые подрывают видение изменений. Некоторые организационные структуры и процессы прямо конфликтуют со Scrum. Роли традиционных менеджеров, функциональных менеджеров и менеджеров по разработке должны быть переоценены. Изменение практики обеспечения качества может дать возможность ранней победы.
Поощряйте инициативу и нетрадиционные идеи. Вдохновляйте все, что помогает двигать организацию вперед. Убедите менеджеров, что сотрудников следует поощрять за изучение, эксперименты и работу над ошибками. Убедите сотрудников, что инициатива поощряется и идет обучение, поэтому текущие возможные неудачи – часть процесса. Убедите всех в необходимости учиться делать выводы из своих и чужих ошибок, гарантируя, что это один из уроков и за неудачи не наказывают.
Достичь воздействия
Каждый в организации должен видеть прогресс в достижении видения, как определено в действии 4 в табл. 9.5. Некоторые ранние успехи указывают путь и обеспечивают комфорт. Мы советуем команде трансформации выбрать два проекта по разработке программного обеспечения, которые сформируют базу для ранних успехов:
1) проект улучшения, встраивающий новые возможности в существующую систему, которой не больше пяти лет;
2) проект по созданию новой системы, использующей новые технологии.
Таблица 9.5. Достичь воздействия
Эти проекты должны быть продолжительностью от трех до шести месяцев каждый. Один из проектов, желательно новая разработка, должен состоять из 20–30 человек, организованных в три или четыре Scrum-команды. Другой проект должен состоять из одной Scrum-команды. В связи с тем что почти любой процесс работает с легким проектом, оба проекта должны включать трудные технологии и требования, в противном случае оценки будут иметь ограниченную ценность.
Дайте командам выполнить проекты. Они создадут готовое к использованию программное обеспечение для организации. Они также будут выявлять препятствия, которые могут быть добавлены в бэклог трансформации. Люди лучше поймут, какие вещи будут происходить. Те, кто проявил себя и сделал успехи возможными, должны быть выделены и вознаграждены.
Измерение, оценка и укрепление достижений
Действие 5, которое показано в табл. 9.6, – тело проекта. Три области: разработка, изменения и управление – взаимодействуют, чтобы постепенно создавать всё лучшие продукты, и организация последовательно структурируется для закрепления этих преимуществ. Команда трансформации и остальной коллектив реально погружаются в работу по трансформации в течение этой деятельности.
Таблица 9.6. Измерение, оценка и укрепление достижений
Сердце Scrum – инспекция и адаптация. Адаптация – возникновение новых способов разработки программного обеспечения и управления им. Команда трансформации продолжает инспектировать, что происходит, что отражают показатели и о каких препятствиях сообщается. Команда ставит высокий приоритет этим потребностям в бэклоге трансформации. Спринты, основанные на этом бэклоге, создают инкременты организационных изменений и улучшений, которые ведут к реализации видения.
Проникновение
Некоторые сотрудники в организации полностью поймут и примут Scrum и лежащее в его основе мировоззрение. Настало время выдвинуть этих сотрудников на ключевые влиятельные и управляющие позиции. Они будут сохранять начальный импульс преобразований. В противном случае результат может быть получен на короткое время, а затем нивелируется, поскольку лидеры неизбежно покинут организацию. К концу четвертого года новое руководство должно быть разработано таким образом, чтобы обеспечение непрерывности преобразований больше не становилось проблемой.
Развитие
Используйте надежность из ранних проектов, чтобы изменить все системы, структуры и политики, которые не совпадают с видением трансформации.
Внедрение, расширение и сохранение
Закрепление преобразования означает встраивание изменений в организацию так, чтобы она приобретала новую культуру. Действие 6 обращается к этому, как показано в табл. 9.7. Любые процедуры, процессы, привычки, способы выполнения работ или привычки, которые были частью старой культуры организации, необходимо искоренить и заменить новыми способами ведения дел, которые поддерживают видение трансформации.
Таблица 9.7. Внедрение, расширение и сохранение
Закрепление продолжается на протяжении всего процесса трансформации. Это не цель, а практический способ, который становится частью непрерывного улучшения организации и стремления к совершенству. Все, что до этого не работало, заменяется тем, что работает лучше. Это ведет к появлению создающей знания и обучающейся организации.
По мере того как внедряются новые методы ведения дел, связи между видением, новыми моделями поведения и организационными успехами усиливаются с помощью признания заслуг, продвижения по службе и премирования. Это цементирует понимание каждым важности происходящего.
Организация станет чувствовать себя иначе, возможности будут использоваться с преимуществом по скорости, и проблемы начнут обнаруживаться и быстро решаться. Системы и программные продукты, используемые организацией, будут иметь гораздо более высокое значение. Разработка станет более продуктивной и творческой. Сотрудники будут эффективно взаимодействовать и разделять друг с другом воодушевление и радость от общей работы.
Выводы
Проект трансформации вызывает серьезные потрясения внутри организации. Он должен управляться сверху и использовать отличную и последовательную систему связей. Видение преобразований должно быть четким. Всей организации необходимо принимать участие и понимать выгоды. Цель – постоянное обучение, которое последовательно обновляет и улучшает организацию. Наградой будет превосходство.
10. Скрамить Scrum
Скрамить Scrum означает использовать его для внедрения Scrum, для выполнения организационной трансформации. Чтобы внедрить Scrum, следует произвести два главных изменения. Во-первых, необходимо разработчиков программного обеспечения сформировать в команды и обучить создавать программы, используя Scrum. Во-вторых, любые препятствия на пути к созданию и доставке программного обеспечения должны быть устранены. Эти препятствия обнаруживаются, когда разработчики используют Scrum. Первое изменение будет улучшать выдачу программного продукта, второе – исправлять затруднения продуктивности и возвращать инвестиции. Оба трудны и требуют тяжелой работы. Несмотря на энергию и приверженность руководства, время, требуемое для этих изменений, не может быть уменьшено, потому что эти изменения – ключевая часть проекта трансформации.
Опыт компании Seachange
Интернациональная компания SeaChange – мировой лидер в продуктах по передаче мультиэкранных видеоматериалов. Ее технологии представлены такими партнерами, как NBC, Comcast, Telus, PBS, SKY, Vodacom, Verizon, Cox, Time Warner Cable и другие, распространяющими высококачественные видеоматериалы. Корпорация Digital Equipment запустила SeaChange в 1993 году.
Стив Дэйви, глава отдела разработки SeaChange, расположенного в Бостоне, должен был разработать новые функциональные возможности и новые релизы продуктов – это было необходимо, чтобы поддерживать продукты SeaChange на продвинутом технологическом уровне и постоянно добавлять новые функциональные возможности и особенности для повышения конкурентоспособности. Этого было достаточно, чтобы оставаться в бизнесе. Вызов заключался в том, чтобы вводить новшества и создавать новые возможности, которых не имелось у конкурентов. Стратегия Стива состояла в том, чтобы нейтрализовать преимущества конкурентов и сокрушить их с помощью преимуществ SeaChange.
Стив столкнулся со множеством вызовов. Большинство требований были смутными и все очень срочными. Постоянное добавление новых критически важных требований становилось результатом задержек в выпуске релизов и разработки ненужных возможностей. Тем не менее Стив полагал, что изменение требований, даже путем задержки выпуска, – конкурентное преимущество, если это возможно выполнить.
SeaChange договорилась о продаже компании Verizon следующего выпуска продукта с добавлением некоторых дополнительных функций. Договор обязывал запустить релиз в течение трех месяцев. Стив счел это невозможным, но, как и раньше в подобных случаях, ему сказали, что это нужно сделать. Он со своей командой упорно работал, даже ночью и в выходные. В течение трех месяцев им удалось поставить Verizon около 90 % релиза. Продукт был полон дефектов и проблем производительности. В течение следующих шести месяцев Стив часто посещал Verizon в Баскинг Ридж, постоянно выслушивал жалобы на низкое качество продукта и обещал, что исправит проблемы.
Неудивительно, что Verizon не выпускал на рынок новое программное обеспечение SeaChange в течение шести месяцев после поставки. Если бы Стив мог объединить три месяца разработки с дополнительными шестью месяцами после, его частые визиты в Нью-Джерси не потребовались бы.
Как Seachange сломала шаблон
Стив знал, что он должен понять, как избежать повторения этого опыта. В то же время SeaChange быстро распространялась по всему миру, приобретая новые компании и интегрируя их продукты. Стиву нужен был способ управлять продуктами, который бы работал и мог присоединять дополнения.
Люди, применявшие Scrum, в большинстве случаев делали это, потому что в этом нуждались. Если бы их метод работал, им не нужно было бы меняться. Изменения – это всегда трудно, травматично и рискованно. Только отчаявшиеся или дальновидные люди берутся за это. Проблемы должны ощущаться сильнее, чем трудности или риски. Более того, многие руководители квалифицированы в текущем управлении, но не в управлении изменениями. К счастью, одним из умений Стива Дэйви было управление изменениями. В 2005 году он опробовал Scrum на одном продукте: новом, основанном на использовании интернета, нацеленном на рынок социальных средств коммуникаций. Scrum показал себя очень хорошо, и продукт был быстро разработан. К сожалению, ниша этого продукта оказалась неактуальной до 2009 года, поэтому его отложили. Тем не менее SeaChange получила уверенность в пользе Scrum.
Более того, Стив использовал Scrum для управления переходом к Scrum! Он собрал маленькую группу ключевых менеджеров и руководителей. Группа создала список того, что требуется для изменений, описала специальные действия, необходимые для создания изменений, и проблемы, с которыми они сталкивались. Команда работала по этому списку, создавая реальные изменения каждые 30 дней. Они ежедневно встречались для оценки прогресса и обзора непредвиденных проблем и часто сообщали всем, что происходит и почему, поскольку изменения затрагивали каждого и люди хотели знать, как это отразится именно на них.
Руководству поручили содействовать, но не направлять. Функция руководства изменилась: больше нет необходимости заставлять сотрудников делать то, что указано в плане, – надо было просто помогать им уложиться в план. «Ресурсами» стали творческие люди. Подобные изменения в корпоративном мировоззрении оказались особенно сложны для менеджеров среднего звена, поэтому они сопротивлялись переменам. Один из менеджеров покинул компанию, потому что не смог работать по-новому.
Еще одна сложная задача появилась в рамках торговых и маркетинговых операций. Scrum призывает к упорядоченной последовательности новых и улучшенных возможностей продукта. План меняется часто, но всегда явно. Разработчики трудятся только над ним. Чтобы сделать этот процесс эффективным, сотрудники отдела продаж и маркетинга, участвующие в составлении плана, должны знать, что их требования и пожелания пользователей будут учтены на одном уровне со всеми другими требованиями. Они должны были согласиться с решениями на основе видения и направления развития продуктов компании, а не на основе их личных желаний и потребностей. Это было существенное изменение. Персонал отдела продаж и маркетинга должен взаимодействовать, вырабатывать идеи и принимать решения, которых станет придерживаться.
Как часть изменений персонал SeaChange и руководство часто встречались на ретроспективных собраниях. Они давали оценку тому, что происходило, и тому, насколько это эффективно. Они совместно разрабатывали и реализовывали способы стать более эффективными. Ранее за качество были ответственны специальные сотрудники. Инженеры разрабатывали перед выпуском продукта как можно больше функциональных возможностей, а те, кто контролировал качество, смотрели, работают эти возможности или нет. Но при использовании Scrum за качество отвечает каждый. Оно не проверяется только перед самым завершением работы и выпуском продукта. Каждый инкремент должен быть высокого качества, и каждый следующий инкремент строится на качестве предыдущих.
Результаты
SeaChange теперь использует Scrum по всему миру. Все приобретаемые компании должны его адаптировать. Приобретения могут сохранять все свои успешные практики, как это было сделано в Carbonite. Они используют Scrum, чтобы окружить эти практики для создания предсказуемости, регулярности, управления информацией и интегрировать работу каждого. Используя Scrum, SeaChange смогла идти в ногу со временем и оторваться от конкурентов. Кроме того, компания теперь способна быстро интегрировать новые компании и использовать их продукты.
Распространение Scrum в Iron Mountain
В главе 3 мы обсуждали, как Iron Mountain боролась с разработчиками и как Пол Луппино успешно решил эти проблемы. Scrum распространился по всей организации разработки программного обеспечения Iron Mountain.
Пол получил повышение и теперь работает на президента компании Iron Mountain Гарольда Эббигхаузена. Он применил принципы Scrum к управлению бизнесом, и теперь шесть линий бизнеса должны отчитываться о законченных инкрементах работы каждые 30 дней вместо их одно-, трех- и шестимесячных планов. Руководящая работа, такая как создание экономических связей, изменение процессов, работа с потребителями по улучшению взаимосвязей и решению организационных вопросов, представлена в бэклоге, называемом бэклог трансформации продукта, который более подробно мы опишем в этой главе далее. Определенные пункты должны быть закончены в течение каждого спринта. Когда что-то не заканчивается, вся команда управления работает, чтобы понять причину. Насколько задача трудновыполнима? Возможно, какая-то ее часть слишком велика, не нужно ли ее разбить на более мелкие фрагменты? Требуется ли менеджеру помощь? После этого работа для следующего спринта формулируется иначе. Iron Mountain также применил принципы Scrum для общего управления. Так как обе сферы, разработка программного обеспечения и общая организация, очень сложны, Scrum был эффективен в применении в обеих сферах.
Команды трансформации
Две Scrum-команды задействованы во время трансформации организации:
1) команда трансформации, которая использует Scrum, чтобы трансформировать организацию и достигнуть видения;
2) команда развертывания, которая использует Scrum для выполнения актуальной работы по трансформации, вызывающей изменения.
Команда трансформации
Руководитель, ведущий проект трансформации организации, становится владельцем продукта в команде трансформации. Он может решить организационные, ведомственные и личные противоречия на благо всей организации. Заинтересован в этом каждый сотрудник организации. Scrum-мастер, имеющий большой опыт в области упрощения процедур и организационного развития, также приглашается в команду. Он удерживает целостность проекта трансформации, следит за продвижением изменений и за сохранением использования Scrum-процессов.
Команда трансформации может добиться успеха, только если ее члены работают вместе и слаженно. Если индивидуальные успехи высшего руководства признаются более важными, чем командный успех, трансформация потерпит неудачу. Изменение не может произойти без взаимодействия и командной работы. Прекрасный пример такого типа командной работы – The Five Dysfunctions of Teams Патрика Ленсиони[18].
Команды развертывания трансформации
Команда трансформации создает команды развертывания, чтобы повлиять на организационные изменения. Эти команды выбирают пункты работы по трансформации из бэклога продукта и трансформируют организацию, шаг за шагом, через инкременты изменений. Команда трансформации создает эти команды развертывания по мере надобности. Они могут быть как постоянными, так и временными. Члены команды могут быть членами руководства, Scrum-мастерами или думающими лидерами со всей организации. Члены команды не должны работать на условиях полной занятости. Они могут быть экспертами и лидерами в областях, где должны случиться изменения. Их доступность и квалификация будут определять скорость трансформации.
Команды развертывания отличаются от команды трансформации, которые управляют и направляют к изменению (рис. 10.1).
Рис. 10.1. Команда трансформации и развертывания
Они также отличаются от Scrum-команд разработки, которые создают программное обеспечение, инкремент за инкрементом. Команды развертывания создают изменения.
Процесс трансформации
Трансформация организации – сложный процесс. Команда трансформации управляет усилиями через Scrum. Наиболее важные и возможные изменения выбираются из бэклога продукта трансформации командой трансформации и назначаются командам развертывания. Трансформация происходит инкремент за инкрементом.
Перед каждым спринтом команда трансформации дает оценку предстоящей работы в бэклоге трансформации. Команды развертывания организуются, основываясь на типе задач в бэклоге. Участники для каждой команды определяются и привлекаются для предстоящего спринта.
Мероприятия планирования. Мероприятия планирования спринта должны длиться не более одного дня. Команды развертывания встречаются с владельцем продукта трансформации, который обсуждает предстоящие изменения и помогает командам развертывания разработать тактику и планы для создания изменений. Затем команды развертывания дают прогноз по пунктам бэклога продукта для спринта.
Спринт. Команды развертывания проводят спринт, чтобы создать инкремент изменений. Они ежедневно встречаются для оценки прогресса и пересмотра предстоящей работы, если необходимо. Каждая команда включает Scrum-мастера, который сообщает владельцу продукта в команде трансформации о препятствиях и помехах, с которыми они столкнулись.
Обзор спринта. Обзор проводится в конце каждого спринта. Демонстрируются ощутимые изменения. Результатам изменений и работе по изменению дается оценка. Иногда командам развертывания нечего продемонстрировать. Это может означать, что для команд развертывания были выбраны неправильные люди, что члены команд трансформации тратили недостаточно времени для решения проблемы или что проблема была гораздо сложнее для решения, чем казалось в текущих условиях. Средством решения проблемы должна быть реструктуризация бэклога продукта трансформации или очередная попытка.
Продолжая движение спринт за спринтом, организация трансформируется и трансформирует себя. Команда трансформации должна быть в постоянном поиске новой работы. Самоуспокоение и расслабление часто происходят до того, как изменения закрепляются. Тогда изменения непостоянны, ограничены сроком полномочий людей, которые привели к этим изменениям.
Выводы
Scrum – процесс для управления сложной работой. Нет более сложной работы, чем изменение организации с одного способа ведения бизнеса на другой. Мы рассказали, как для этого использовать Scrum. Scrum остается неизменным, только тип работы, записанный в бэклоге, меняется, так же как и результат этой работы.
Приложение 1. Глоссарий
PRN – по обстоятельствам (от лат. pro re nata – «бери, когда нужно»). Обозначение PRN в предписании означает «принимать, когда это необходимо».
Scrum – итеративный, инкрементальный процесс, использующий эмпирический метод для контроля и управления. Scrum – один из нескольких гибких процессов.
Scrum-команда состоит из владельца продукта, команды разработки и Scrum-мастера. Scrum-команды – самоорганизующиеся и кросс-функциональные.
Scrum-мастер – методический лидер Scrum-команды, который отвечает за то, чтобы Scrum-процесс был понятен и принимался. Scrum-мастера добиваются этого путем соблюдения Scrum-командами теории Scrum, практических приемов и правил.
Scrum-митинг – 15-минутное, ограниченное по времени совещание команды разработки для синхронизации действий и создания плана работы на следующие 24 часа. Это делается путем проверки работы, выполненной с момента последнего Scrum-митинга, и прогнозирования работы до следующего.
Scrum-митинг проводится каждый день в одном месте и в одно время для уменьшения путаницы. Во время совещания каждая команда разработки рассказывает о следующем:
• что было завершено со времени последнего совещания;
• что будет сделано до следующего совещания;
• какие есть препятствия на пути.
Базовая линия – линия, базовая для измерения. В диаграмме выгорания задач она отражает точку во времени, когда не останется работ по выполнению требований перед выпуском продукта.
Бэклог продукта – упорядоченный список всего, что может потребоваться в продукте; является единственным источником требований для всех изменений, которые должны быть сделаны при его разработке. За бэклог продукта, включая его содержание, пригодность и порядок, отвечает его владелец.
Бэклог спринта – набор пунктов бэклога продукта, выбранных для спринта, а также план по созданию инкремента и реализации цели спринта. Бэклог спринта – прогноз команды разработки, которая определяет, какие функциональные возможности будут в следующем инкременте и какое количество работы необходимо для создания этого функционала.
Бэклог спринта определяет работу, которую сделает команда разработки, чтобы превратить пункты бэклога продукта в «законченный» инкремент. Бэклог спринта делает видимой всю работу, которую команда разработки определяет как необходимую для достижения цели спринта.
Видение – частично оформленная идея того, что функционирует определенным способом, может быть использовано для решения задач, меняет подход к работе или рабочее место его пользователей определенным образом, создает новую полезность или меняет распространение в мире или в рыночной нише. Идея, которая раньше не существовала в этой форме.
Владелец продукта отвечает за максимальное значение ценности продукта и производительности команды разработки. Способы его работы могут быть различными в разных организациях, Scrum-командах и зависят от конкретных людей.
Диаграмма сгорания задач отслеживает количество работы по выполнению требований, оставшейся до выпуска продукта, где время измеряется в спринтах.
Инкремент – сумма всех пунктов бэклога продукта, законченных во время текущего спринта и всех предыдущих спринтов. В конце спринта новый инкремент должен быть «законченным», что означает, что он должен быть готовым к использованию и соответствовать определению «законченности», принятому в Scrum-команде. Это должно быть пригодное к использованию состояние, вне зависимости от того, решит ли владелец продукта выпустить его.
Итеративно-инкрементальный процесс – способ разработки системы или продукта через последовательность итераций, каждая из которых генерирует законченный инкремент функциональных возможностей, строящийся на всех предыдущих инкрементах. Итерации продолжаются, пока цель не будет достигнута или необходимая ценность не станет оптимальной.
Итерация – повторяющееся действие, серия шагов или процессов, как правило, приближающих к желаемой цели или результату. Каждое повторение процесса также называется итерацией, и результат одной итерации используется как стартовая точка для следующей.
Каскадный процесс – последовательный процесс проектирования, часто используемый в процессах разработки программного обеспечения, где прогресс рассматривается как стабильный поток вниз (как каскад водопадов) через фазы концепции, инициации, анализа, проектирования, разработки, тестирования, выпуска/реализации и технического обслуживания.
Команда разработки состоит из профессионалов, которые делают работу по предоставлению потенциально готового к выпуску приращения функциональных возможностей «готового» продукта к концу каждого спринта. Только члены команды разработки создают инкременты.
Качество – количество дефектов подсчитывается со дня, когда единица функционала передается владельцу продукта, и в течение трех месяцев использования функционала пользователями.
Обзор спринта проводится в конце спринта для оценки инкремента и внесения, если необходимо, изменений в бэклог продукта. Во время обзора спринта Scrum-команда и заинтересованные стороны совместно обсуждают, что было сделано в спринте. Исходя из этого и любых других изменений в бэклоге продукта, в течение спринта участники совместно работают над списком следующих действий, которые можно было бы сделать. Это ограниченное по времени (четыре часа для спринта продолжительностью один месяц, для более коротких спринтов отводится меньше времени) неофициальное мероприятие и презентация инкремента предназначены для выявления обратной связи и укрепления сотрудничества.
Планирование спринта – мероприятие, где планируется работа, которая должна быть выполнена в спринте. План создается совместными усилиями всей Scrum-команды. Время мероприятия по планированию спринта ограничивается восемью часами для спринта продолжительностью один месяц. Для более коротких спринтов время пропорционально сокращается. К примеру, для двухнедельного спринта продолжительность мероприятия составит четыре часа. Планирование спринта состоит из двух частей, каждое продолжительностью в половину общего времени. Две части планирования спринта отвечают на следующие вопросы соответственно.
• Что будет предоставлено в инкременте по завершении предстоящего спринта?
• Какая работа необходима, чтобы достигнуть этого приращения?
Прогноз – предположение, основанное на опыте, как много усилий по переводу требований в бэклоге продукта может быть преобразовано в инкремент. Прогноз не является гарантией.
Прогнозная линия – проекция скорости во времени, чтобы предсказать, что может произойти, если все в будущем останется подобным тому, что было в прошлом.
Прозрачность – природа инкремента как завершенного фрагмента функциональных возможностей, который мы можем использовать для наших целей и определить наш прогресс в направлении видения или цели.
Продуктивность – количество единиц бизнес-функционала, которая разработана за определенное количество денег (например, на 100 тысяч долларов инвестиций). Продуктивность также называют скоростью.
Разработчик программного обеспечения – сотрудник, связанный с аспектами процесса разработки программного обеспечения. Его работа включает в себя исследование, создание дизайна, разработку и тестирование программного обеспечения.
Ретроспектива спринта – возможность для Scrum-команды проверить себя и создать план для улучшений, которые будут предприняты в следующем спринте. Ретроспектива спринта происходит после обзора спринта и перед следующим планированием спринта. Это трехчасовая встреча для спринта продолжительностью один месяц. Для более коротких спринтов время пропорционально уменьшается.
Самоорганизация – процесс, при котором структура, или конфигурация, появляется в системе без центрального управления или внешних элементов, диктующих ее при помощи планирования.
Скорость – мера измерения количества бизнес-функционала, который создается в течение определенного периода или на единицу денежных средств.
Спринт – сердце Scrum-процесса, ограниченный промежуток времени, протяженностью один месяц или меньше, в течение которого производится «законченный», пригодный к использованию и потенциально готовый к выпуску инкремент продукта. Спринты складываются в последовательные периоды на протяжении всего процесса разработки. Новый спринт начинается непосредственно после завершения предыдущего.
Требования – уникальные, документально описанные физические и функциональные качества, которые должны иметь конкретный продукт или услуга. Это формулировка, определяющая необходимые атрибуты, производительность, характеристики или качество системы, которые имеют ценность или полезность для пользователя.
Цель спринта дает команде разработки некоторую гибкость касательно функциональных возможностей, выполняемых в пределах спринта. Во время работы команда разработки держит эту цель в голове и, для того чтобы ее достичь, реализует функциональные возможности и технологии. Если работа оказывается отличной от ожиданий команды разработки, ее члены взаимодействуют с владельцем продукта, внося изменения в бэклог в течение спринта.
Функциональная точка – единица измерения для выражения количества бизнес-функционала, которую информационная система предоставляет пользователю. Стоимость (в долларах или часах) одной единицы вычисляется по предыдущим проектам.
Эмерджентность – путь, которым сложные системы и структуры возникают из множества относительно простых взаимодействий. Эмерджентность занимает центральное место в теории интегративных уровней и комплексных систем.
Эмпирический – полученный с помощью наблюдения или эксперимента.
Приложение 2. Scrum-гайд
ИСЧЕРПЫВАЮЩЕЕ РУКОВОДСТВО ПО SCRUM. ПРАВИЛА ИГРЫ
Разработаны и поддерживаются Кеном Швабером и Джеффом Сазерлендом
Статья I. Цель Scrum-гайда
Scrum – это фреймворк для создания и поддержки функционально сложных продуктов. Данное руководство содержит определение Scrum, состоящее из описания ролей, событий, Scrum-артефактов, а также правил, связывающих их вместе. Кен Швабер и Джефф Сазерленд разработали Scrum и представили Scrum-гайд.
Статья II. Общее представление о Scrum
Scrum (сущ.) – фреймворк, в рамках которого люди могут решать сложные адаптивные проблемы и в то же время продуктивно и креативно поставлять продукты наивысшей возможной ценности.
Scrum обладает следующими характеристиками:
• легковесен;
• прост в понимании;
• чрезвычайно труден в освоении.
Scrum используется для управления процессами разработки сложных продуктов с начала 1990-х годов. Scrum – это не процес или техника создания продуктов; скорее это фреймворк, в рамках которого вы можете применять разнообразные процессы и технические приемы. Scrum показывает относительную эффективность вашего управления продуктом и практических методов разработки; при помощи Scrum вы можете их улучшить.
Раздел 2.01. Фреймворк Scrum
Фреймворк Scrum состоит из Scrum-команд и связанных с ними ролей, мероприятий, артефактов и правил. Каждый элемент фреймворка служит определенной цели и является ключевым для успеха и использования Scrum.
Существуют различные стратегии использования фреймворка Scrum, их описание выходит за пределы данного документа.
Правила Scrum объединяют мероприятия, роли и артефакты, регулируя отношения и взаимодействия между ними. Правила Scrum описаны в данном документе.
Статья III. Теория Scrum
Scrum основывается на теории управления эмпирическими процессами, или эмпиризме. Эмпиризм утверждает, что знание приходит с опытом и решения принимаются на основании того, что известно. Scrum использует итеративно-инкрементальный подход для оптимизации прогнозируемости и управления рисками.
Три столпа, на которых держится каждое применение эмпирического процесса управления: прозрачность, инспекция и адаптация.
А. Прозрачность. Значимые аспекты процесса должны быть видимы тем, кто отвечает за его результат. Прозрачность требует, чтобы эти аспекты определялись общими стандартами. Все наблюдатели должны разделять одно и то же понимание видимого.
Примеры:
• общая терминология, относящаяся к процессу, должна использоваться всеми его участниками;
• общее определение «законченности» (см. статью VIII «Определение “законченности”») должно разделяться и теми, кто производит работу, и теми, кто принимает продукт этой работы.
Б. Инспекция. Участники Scrum-процесса должны часто инспектировать Scrum-артефакты и динамику движения к цели для своевременного выявления нежелательных отклонений. Однако инспектирование не должно быть настолько частым, чтобы мешать работе. Проверки приносят наибольшую пользу, если усердно выполняются квалифицированными инспекторами во время работы.
В. Адаптация. Если по результатам проверки инспектор делает заключение, что один или более аспектов процесса отклонились от допустимых пределов и производимый продукт будет неприемлемым, инспектор должен внести изменения либо в процесс, либо в рабочие материалы. Изменения должны вноситься как можно раньше для уменьшения дальнейшего отклонения от нормы.
Scrum предписывает четыре формальные возможности для инспекции и адаптации, описанные в статье VI «События Scrum»:
• планирование спринта;
• Scrum-митинг;
• обзор спринта;
• ретроспектива спринта.
Статья IV. Scrum
Scrum – это фреймворк, структурированный для поддержки разработки сложных продуктов. Scrum состоит из Scrum-команд и с ними связанных ролей, событий, артефактов и правил. Каждый компонент в пределах фреймворка служит специфической цели и необходим для успешного использования Scrum.
Статья V. Scrum-команда
Scrum-команда состоит из владельца продукта, команды разработки и Scrum-мастера. Scrum-команды – самоорганизующиеся и кросс-функциональные.
Самоорганизующиеся команды сами выбирают лучший способ выполнения работы, а не ждут указаний от тех, не входит в состав команды. Кросс-функциональные команды имеют все необходимые навыки, чтобы выполнять работу и не зависеть ни от кого извне. Командная модель Scrum создана для оптимизации гибкости, креативности и продуктивности.
Scrum-команды предоставляют продукты итеративно и инкрементально, максимально увеличивая возможности для обратной связи. Инкрементальные поставки «законченного» продукта гарантируют, что потенциально пригодная рабочая версия продукта всегда доступна.
Раздел 5.01. Владелец продукта
Владелец продукта отвечает за достижение максимальной ценности продукта и работы, выполняемой командой разработки. Способы достижения этой цели могут широко отличаться среди различных организаций, Scrum-команд и отдельных людей.
Владелец продукта – единственный человек в команде, отвечающий за бэклог продукта. Управление бэклогом продукта включает в себя:
• четкое описание пунктов бэклога;
• упорядочивание его пунктов для лучшего достижения целей и поручений;
• обеспечение ценности работы, выполняемой командой разработки;
• обеспечение видимости, прозрачности и понятности бэклога продукта для всех, а также отображение тех требований, над которыми Scrum-команде предстоит работать в ближайшее время;
• достижение понимания командой разработки на необходимом уровне требований бэклога продукта.
Владелец продукта может либо сам выполнять вышеперечисленные задачи, либо делегировать их выполнение членам команды разработки. Однако ответственным за это остается именно он.
Владелец продукта – один человек, а не группа людей. Владелец продукта может представлять интересы группы людей в бэклоге продукта, но желающие изменить приоритеты требований должны в первую очередь убедить в этом именно его.
Для успешного выполнения владельцем продукта своих обязанностей все в организации должны уважать его решения. Все решения владельца продукта видны через содержимое и порядок элементов бэклога продукта. Никому не позволено давать задание команде разработки работать над другим набором требований, а команде разработки запрещается действовать по указанию кого-либо другого.
Раздел 5.02. Команда разработки
Команда разработки состоит из профессионалов, создающих потенциально «законченный», готовый к выпуску инкремент продукта к концу каждого спринта. Инкремент создают только члены команды разработки.
Команды разработки создаются организацией и обеспечиваются полномочиями самим организовывать свою работу. Получаемая в результате синергия усиливает продуктивность и эффективность команды разработки.
Команды разработки обладают рядом характеристик.
• Они самоорганизованные. Никто (даже Scrum-мастер) не может указывать команде, каким образом превращать пункты бэклога продукта в инкременты потенциально готового к выпуску функционала.
• Команды разработки кросс-функциональны и обладают всеми навыками, необходимыми для разработки инкремента продукта.
• Scrum не признает никаких других должностей в команде разработки, кроме как разработчик, вне зависимости от вида работы, выполняемой человеком; у этого правила нет исключений.
• Отдельные члены команды разработки могут владеть различными специализированными знаниями, но ответственность лежит на команде в целом.
• У команды разработки нет подкоманд, которые выполняли бы отдельные функции, как, к примеру, у команды тестирования или бизнес-анализа.
А. Размер команды разработки. Оптимальная по численности команда разработки достаточно мала, чтобы оставаться простой в управлении, и в то же время достаточно велика, чтобы выполнять значительный объем работы в течение спринта. Если в команде разработки менее трех человек, взаимодействие уменьшается, что приводит к снижению продуктивности. Небольшой команде может не хватить навыков в течение спринта, что помешает завершить работу над потенциально готовым к выпуску инкрементом продукта. Если же в команде более девяти человек, потребуется больше усилий для координации их работы. Большие команды разработки создают слишком много сложностей для управления эмпирическим процессом. Роли владельца продукта и Scrum-мастера не учитываются при подсчете размера команды разработки, за исключением случаев, когда они также выполняют работу из бэклога спринта.
Раздел 5.03. Scrum-мастер
Scrum-мастер отвечает за то, чтобы Scrum был понятен всем участникам и применялся. Scrum-мастер добивается этого, наблюдая за тем, чтобы все участники Scrum-команды придерживались теории, практик и правил Scrum.
Scrum-мастер – методический лидер для Scrum-команды.
Scrum-мастер также помогает людям, не входящим в состав Scrum-команды, понять, какие взаимодействия со Scrum-командой полезны, а какие нет. Scrum-мастер помогает каждому изменить эти взаимодействия для увеличения ценности, создаваемой Scrum-командой.
А. Scrum-мастер на службе владельца продукта. Помощь Scrum-мастера владельцу продукта заключается в следующем:
• находит практические методы эффективного управления бэклогом продукта;
• проясняет путем общения видение, цели и пункты бэклога продукта для команды разработки;
• учит Scrum-команду создавать лаконичные и понятные элементы бэклога продукта;
• помогает достичь понимания долгосрочного планирования в эмпирической среде;
• помогает понять гибкие методы разработки и управления;
• содействует проведению событий Scrum по просьбе владельца продукта или по необходимости.
Б. Scrum-мастер на службе команды разработки. Обязанности Scrum-мастера на службе команде разработки:
• проводит тренировки команды разработки по самоорганизации и кросс-функционалу;
• обучает команду разработки создавать продукты высокой ценности;
• устраняет помехи, мешающие прогрессу команды разработки;
• содействует проведению событий Scrum по просьбе команды или по необходимости;
• тренирует команду разработки в организационной среде, где Scrum еще не полностью адаптирован и понятен.
В. Scrum-мастер на службе организации. Обязанности Scrum-мастера на службе организации:
• направляет и тренирует организацию на ее пути адаптации к Scrum;
• планирует этапы внедрения Scrum в организации;
• помогает сотрудникам компании и заинтересованным лицам понять и принять Scrum и принципы эмпирической разработки продуктов;
• выступает инициатором изменений, которые повышают продуктивность Scrum-команды;
• работает совместно с другими Scrum-мастерами для повышения эффективности использования Scrum в организации.
Статья VI. События Scrum
Предписанные мероприятия используются в Scrum для создания регулярности и минимизации потребности в совещаниях, не оговоренных Scrum. Продолжительность всех мероприятий фиксирована. Это гарантирует, что на планирование будет тратиться необходимое количество времени, потому что дополнительные траты времени непозволительны.
Сам спринт, как и мероприятия, из которых он состоит, дает возможность для инспекции и адаптации. Мероприятия специально разработаны таким образом, чтобы обеспечить критическую прозрачность и контроль. Отказ от одного из таких мероприятий приводит к уменьшению прозрачности и потере возможной инспекции и адаптации.
Раздел 6.01. Спринт
Сердце Scrum – спринт длительностью в один месяц или менее, в течение которого создается «законченный», потенциально готовый к выпуску и использованию инкремент продукта. Спринты составляют непрерывную последовательность разработки. Следующий спринт начинается сразу же по окончании предыдущего.
Спринты состоят из планирования, Scrum-митингов, разработки, обзора спринта, а также ретроспективы спринта.
Во время спринта:
• не допускается внесение никаких изменений, которые могли бы поставить под угрозу цель спринта;
• состав команды разработки остается неизменным;
• цели относительно качества не должны сокращаться;
• объем работ может быть уточнен и повторно обговорен между владельцем продукта и командой разработки по мере накопления знаний.
Каждый спринт – проект длительностью не более одного месяца. Как и другие проекты, спринт используется для достижения целей. Каждый спринт состоит из определения того, что нужно разработать, дизайна и гибкого плана, служащего ориентиром при разработке, работы по проекту и полученного в результате продукта.
Продолжительность спринта ограничена календарным месяцем. Если спринт слишком длительный, может измениться само определение того, что должно быть реализовано, могут возникнуть дополнительные сложности либо вырасти риски. Спринты делают процесс разработки прогнозируемым, обеспечивая инспекцию и адаптацию на пути к цели проекта как минимум каждый календарный месяц. Спринты также ограничивают риски по тратам одним календарным месяцем.
А. Отмена спринта. Спринт можно отменить до его завершения. Только у владельца продукта есть право на то, чтобы отменить спринт, хотя он может сделать это и под влиянием заинтересованных лиц, команды разработки или Scrum-мастера.
Спринт отменяют в случае, если его цель перестает быть актуальной. Это может произойти вследствие изменения направления работы компании, изменения рыночных условий или технологий. В общем, спринт нуждается в отмене, если в силу некоторых обстоятельств в нем уже нет необходимости. Однако, принимая во внимание его небольшую продолжительность, отмена редко имеет смысл.
Когда спринт отменяют, все «законченные» элементы бэклога продукта рассматриваются. Владелец продукта их принимает при условии, что они представляют потенциально готовый к выпуску инкремент функционала. Все незаконченные пункты бэклога продукта переоцениваются и возвращаются в список. Объем работы, проделанный над ними, быстро убывает, поэтому нуждается в пересмотре.
Отмена спринта требует дополнительных ресурсов, так как все должны перегруппироваться для следующего планирования спринта и приступить к новому спринту. Отмена спринта – травматическое событие для Scrum-команды и, в общем, нетипична.
Раздел 6.02. Планирование спринта
Работа на предстоящий спринт планируется во время процесса планирования. План действий создается при совместной работе всей Scrum-команды.
Для спринта длиной в месяц встреча ограничена восемью часами. Для более коротких спринтов на планирование обычно выделяется пропорционально меньше времени. Например, для двухнедельного спринта проводится четырехчасовое планирование.
Мероприятие по планированию спринта состоит из двух частей, и на каждую отводится половина общего времени собрания. Каждая часть последовательно отвечает на следующие вопросы:
• что может быть получено в инкременте продукта следующего спринта?
• как будет выполняться работа, необходимая для создания инкремента продукта?
А. Часть 1. Что будет сделано в этом спринте? В этой части команда разработки прогнозирует функционал, который будет разработан в течение спринта. Владелец продукта озвучивает упорядоченный список задач команде разработки, и вся Scrum-команда совместно вырабатывает понимание работы, которую необходимо проделать в этом спринте.
Входные параметры для этой встречи – бэклог продукта, последний разработанный инкремент, текущие возможности команды разработки, а также ее последняя производительность. Количество элементов из бэклога, которые команда способна выполнить до окончания спринта, определяется исключительно самой командой. Только команда разработки может оценить объем работы, который она в состоянии завершить в следующем спринте.
После того как команда разработки спрогнозировала элементы бэклога продукта, которые она выполнит в спринте, Scrum-команда формирует цель спринта, то есть задачу, которая будет достигнута в результате спринта благодаря реализации бэклога продукта и которая объясняет команде разработки, для чего она создает инкремент.
Б. Часть 2. Как выбранная работа будет сделана? После того как цель спринта определена, команда разработки решает, каким образом воплотить функционал в «законченном» инкременте продукта. Элементы бэклога продукта, выбранные для этого спринта вместе с планом для их разработки, называются бэклогом спринта.
Команда разработки обычно начинает с проектирования системы и работы, необходимой для того, чтобы превратить бэклог продукта в функционирующий инкремент. Работа может быть разного объема, и предполагаемые усилия также могут различаться. Однако обычно во время планирования спринта команда разработки рассчитывает на достаточный объем работы. Задача, запланированная командой на первые дни спринта, разбивается на части длительностью в день или менее. Команда сама организовывает свою деятельность как во время планирования спринта, так и на протяжении его.
Владелец продукта может помочь внести ясность в выбранные элементы бэклога и пойти на компромисс. Если команда разработки решает, что у нее слишком много либо слишком мало работы, она может повторно обсудить требования бэклога с владельцем продукта. Команда может пригласить людей со стороны для получения информации по технической или предметной области продукта.
По окончании планирования спринта команда разработки должна быть в состоянии объяснить владельцу продукта и Scrum-мастеру, каким образом она, работая как самоорганизованная команда, достигнет цели спринта и создаст ожидаемый инкремент.
В. Цель спринта. Цель спринта дает Scrum-команде некоторую гибкость в отношении разрабатываемого функционала в спринте.
Пока команда работает, эта цель служит для нее ориентиром. Для ее достижения команда реализует функционал и технологию. Если же работа отличается от ожидаемой, то команда договаривается с владельцем продукта об изменении объема бэклога спринта в текущем спринте.
Цель спринта может быть шагом к большей цели в дорожной карте разрабатываемого продукта.
Раздел 6.03. Scrum-митинг
Scrum-митинг – это 15-минутное мероприятие для команды разработки с целью синхронизации действий и создания плана работы на ближайшие 24 часа. Он проводится для инспекции проделанной работы с момента предыдущего ежедневного Scrum-митинга и для прогноза того, что может быть сделано до следующего.
С целью избежать путаницы Scrum-митинги проводятся в одном и том же месте, в одно и то же время. Во время встречи каждый член команды разработки рассказывает коллегам следующее:
• что было сделано с момента прошлой встречи?
• что будет сделано к моменту следующей встречи?
• какие препятствия есть на пути?
Команда разработки использует Scrum-митинг для оценки динамики продвижения к цели спринта и оценки отклонения от планируемого объема работ бэклога спринта. Scrum-митинг оптимизирует вероятность, что команда разработки достигнет цели спринта. Команда разработки часто встречается сразу же после ежедневного Scrum-митинга для более детального обсуждения или перепланирования оставшейся работы в спринте. Члены команды разработки должны быть готовы ежедневно объяснять владельцу продукта и Scrum-мастеру, как они намерены работать вместе в качестве самоорганизованной команды для достижения цели и создания предполагаемого инкремента в оставшееся время спринта.
Scrum-мастер отвечает за то, чтобы команда разработки провела встречу, однако ответственность за управление Scrum-митингом лежит именно на команде разработки. Scrum-мастер следит, чтобы время, отведенное на Scrum-митинг, не превышало 15 минут, и контролирует, чтобы в Scrum-митингах участвовали только члены команды разработки.
Scrum-митинги делают более эффективным общение внутри команды, сводя к минимуму другие встречи, помогают определять и устранять препятствия на пути разработки, способствуют быстрому принятию решений, а также повышают уровень осведомленности команды разработки. Это ключевое мероприятие для инспекции и адаптации.
Раздел 6.04. Обзор спринта
Мероприятие по обзору проводится в конце спринта для инспекции инкремента и при необходимости адаптации бэклога продукта. Во время обзора спринта Scrum-команда и заинтересованные лица обсуждают выполненную во время спринта работу, а также изменения, которые могли возникнуть в бэклоге продукта за время спринта, и намечают дальнейшие шаги, которые могут быть предприняты для оптимизации ценности. Это не официальная встреча, а скорее презентация инкремента, предназначенная для получения обратной связи и развития сотрудничества.
Обзор спринта длиной в месяц представляет собой четырехчасовое мероприятие. На более короткие спринты обычно тратят пропорционально меньше времени. Например, обзор двухнедельного спринта занимает два часа.
Обзор спринта включает следующие элементы:
• владелец продукта определяет, что можно считать «законченным», а что нет;
• команда разработки обсуждает, что во время спринта прошло гладко, с чем возникли трудности и как эти проблемы были решены;
• команда разработки проводит демонстрацию уже сделанного и отвечает на вопросы об инкременте;
• владелец продукта обсуждает состояние бэклога продукта и делает предположения касательно возможной даты завершения, принимая во внимание скорость продвижения к этой дате;
• вся группа совместно решает, что делать дальше; таким образом, обзор спринта дает ценный вклад в последующее мероприятие по его планированию.
Результатом обзора спринта служит пересмотренный бэклог продукта, в котором определены возможные его элементы на следующий спринт. Бэклог продукта может быть полностью пересмотрен из-за вновь открывшихся возможностей.
Раздел 6.05. Ретроспектива спринта
Ретроспектива спринта дает Scrum-команде возможность инспектировать себя и создавать план улучшений для следующего спринта.
Ретроспектива спринта происходит после его обзора и перед последующим планированием. Это ограниченная тремя часами встреча для одномесячного спринта. Для более коротких спринтов обычно выделяется меньше времени. Scrum-цели ретроспективы спринта следующие:
• инспекция успешности спринта: отношения между людьми, процессы и инструменты;
• определение и упорядочение того, что прошло успешно, и того, что нуждается в улучшении;
• разработка плана по внедрению улучшений в процесс работы Scrum-команды.
Scrum-мастер поощряет Scrum-команду пересмотреть процессы разработки в рамках фреймворка Scrum, чтобы сделать ее более эффективной и приятной в следующем спринте. Во время каждой ретроспективы спринта Scrum-команда ищет пути улучшения качества разрабатываемого продукта, адаптируя определение «законченности».
До окончания ретроспективы Scrum-команда должна определиться с улучшениями процесса работы, которые она реализует в следующем спринте. Внедрение этих изменений в следующем спринте – адаптация после инспектирования самой Scrum-команды. Хотя изменения могут быть внесены в любое время, ретроспектива спринта предоставляет формальную возможность сфокусироваться на инспекции и адаптации.
Статья VII. Scrum-артефакты
Scrum-артефакты – работа для обеспечения прозрачности и возможностей для инспекции и адаптации. Определенные Scrum-артефакты специально спроектированы таким образом, чтобы обеспечить максимальную прозрачность ключевой информации, необходимой для обеспечения Scrum-команды возможностями по успешной поставке «законченных» инкрементов.
Раздел 7.01. Бэклог продукта
Бэклог продукта – упорядоченный список всего, что может быть в нем нужным, единственный источник требований для любых изменений, которые может потребоваться внести в продукт. Ответственность за бэклог продукта, включая его содержимое, доступность и упорядочение, несет владелец продукта.
Бэклог продукта никогда не бывает полным. Начальная версия этого документа содержит только первоначально известные и наиболее понятные требования, он постоянно обновляется по мере обновления самого продукта и среды, в которой он разрабатывается. Бэклог продукта динамичен, он постоянно меняется, чтобы соответствовать требованиям продукта, его конкурентоспособности и пригодности, и существует ровно до тех пор, пока существует сам продукт.
Бэклог продукта содержит все особенности, функции, требования, усовершенствования и информацию по исправлению дефектов, то есть те данные, которые и определяют изменения, необходимые в следующих релизах продукта. Каждому элементу бэклога продукта присваиваются описание, порядковый номер и стоимость.
Бэклог продукта часто упорядочивается по ценности, риску, приоритету и необходимости. Наиболее высокие позиции в списке приводят к немедленным действиям по разработке.
Более высокие позиции – более четкие и детализированные. На основании большей ясности и детализации даются более точные оценки. Те требования бэклога продукта, которые команда разработки будет реализовывать во время текущего спринта, детализированы и разбиты на части таким образом, что любое из них может быть выполнено и «закончено» в рамках одного спринта. Требования бэклога продукта, которые можно выполнить в течение одного спринта, считаются «подготовленными», или «применимыми», для следующего планирования спринта.
Со временем продукт начинает использоваться и приобретает ценность, а рынок дает обратную связь, и бэклог становится более объемным и исчерпывающим. Требования никогда не перестают меняться, поэтому бэклог продукта – живой артефакт. Изменения в бизнес-требованиях, условиях рынка или технологиях могут привести к изменениям в бэклоге продукта.
Довольно часто случается, что над одним продуктом работают несколько Scrum-команд. В этом случае используется только один бэклог продукта для определения групп работ на выполнение.
Поддержка бэклога продукта – активность по добавлению деталей, оценок и упорядочивания элементов. Это непрерывный процесс, во время которого владелец продукта и команда разработки трудятся над требованиями бэклога продукта, которые проверяются и пересматриваются. Тем не менее они могут быть обновлены владельцем продукта в любое время по своему усмотрению.
Scrum-команда решает, как и когда должна производиться поддержка бэклога продукта. Обычно это занимает не более 10 % времени Scrum-команды.
Команда разработки отвечает за все оценки. Владелец продукта может оказывать влияние на команду разработки, помогая ей понять требования и идя на компромиссы, но люди, которые будут выполнять работу, делают окончательную оценку сами.
А. Отслеживание динамики движения к цели. В любой момент можно суммировать работу, оставшуюся до достижения цели. Владелец продукта отслеживает объем этой работы как минимум на каждом обзоре спринта, сравнивая оставшийся объем работы с предыдущим, чтобы оценить динамику движения к цели и возможность уложиться в желаемое время завершения. Эта информация прозрачна для всех заинтересованных лиц.
Для прогнозирования прогресса возможно использование различных практик, таких как, например, прогнозные линии, диаграммы сгорания задач или другие прогнозные методы. Эти техники полезны. Тем не менее они не могут заменить важность эмпиризма. Только то, что уже произошло, может быть использовано для принятия решений в будущем.
Раздел 7.02. Бэклог спринта
Бэклог спринта – это набор элементов бэклога продукта, выбранных для выполнения в текущем спринте, а также план разработки инкремента продукта и достижения цели спринта. Бэклог спринта – это прогноз команды разработки относительно функционала, который станет частью следующего инкремента, а также работы, которую необходимо выполнить для реализации этого функционала.
Бэклог спринта определяет объем работы, которую команда разработки должна выполнить, чтобы превратить бэклог продукта в «законченный» инкремент. Бэклог спринта делает видимой ту работу, которую команда разработки считает необходимой для достижения цели спринта.
Бэклог спринта достаточно детализирован, чтобы прогресс работы над ним можно было увидеть на каждом ежедневном Scrum-митинге. Команда разработки вносит изменения в бэклог на протяжении всего спринта, и он постоянно изменяется. Такие изменения происходят потому, что в процессе деятельности команды разработки возникают все новые и новые задачи, которые нужно выполнить для достижения цели спринта.
Если возникает необходимость в дополнительном объеме работы, команда разработки добавляет ее в бэклог спринта. Когда же работы выполнены, оценки оставшегося объема работ обновляются. Если некоторые пункты плана считаются уже неактуальными, то их попросту удаляют. Только команда разработки может изменять свой бэклог во время спринта. Бэклог спринта – наиболее наглядный документ, показывающий реальную картину работы, которую команда разработки планирует завершить до окончания спринта, и он принадлежит исключительно ей.
А. Отслеживание прогресса спринта. В любое время можно суммировать оставшуюся в спринте работу. Команда разработки отслеживает ее по меньшей мере на ежедневном Scrum-митинге, чтобы понять вероятность достижения цели спринта. Отслеживая оставшуюся работу на протяжении спринта, команда разработки может видеть прогресс и управлять им.
Scrum не рассматривает время, проведенное над пунктами бэклога спринта. Оставшиеся время и дата – единственные переменные, представляющие интерес.
Раздел 7.03. Инкремент
Инкремент – это сумма всех выполненных требований бэклога продукта, реализованных во время текущего спринта, и ценности всех предыдущих спринтов. По окончании спринта новый инкремент должен быть «законченным», то есть пригодным к использованию и отвечать определенным Scrum командой критериям «законченности». Несмотря на решение владельца продукта относительно выпуска той или иной версии инкремента, он должен быть готовым к использованию.
Статья VIII. Определение «законченности»
Когда элемент бэклога продукта или же инкремент называется «законченным», все должны понимать, что означает «законченность». Хотя это определение Scrum-команды интерпретируют по-разному, для гарантирования прозрачности их участники должны иметь общее понимание того, что означает завершенная работа. Именно единое определение понятия «законченности» используется Scrum-командой для оценки окончания работы над инкрементом продукта.
Это же определение помогает команде разработки оценить количество выбранных элементов бэклога продукта во время планирования спринта. Цель каждого спринта – разработка инкремента потенциально готового к выпуску функционала, отвечающего текущему определению «законченности» Scrum-команды.
Каждый спринт команда разработки предоставляет инкремент функционала продукта. Такой инкремент пригоден к использованию, поэтому владелец продукта может принять решение о немедленном релизе продукта.
Каждый последующий инкремент должен дополнять все предыдущие, а также его необходимо тщательно протестировать для обеспечения стабильной работы всех инкрементов продукта.
По мере увеличения профессионализма Scrum-команды критерии «законченности» могут дополняться более строгими критериями для достижения лучшего качества продукта.
Статья IX. Заключение
Scrum – бесплатный метод, и его описание предоставлено в этом гайде. Роли, артефакты, правила и мероприятия Scrum не подлежат изменению, и, хотя возможно использование только отдельных его частей, конечный результат уже не будет Scrum. Scrum существует только в своей целостности и может быть контейнером для дополнительных техник, методологий и практик.
Статья X. Благодарности
Раздел 10.01. Люди
Среди тысяч людей, способствовавших развитию Scrum, мы хотим выделить тех, кто на протяжении первого десятилетия существования метода внес в его разработку наиболее весомый вклад. В первую очередь это, конечно же, Джефф Сазерленд и Джефф Маккенна, а также Кен Швабер, Майк Смит и Крис Мартин. В последующие годы много людей способствовали развитию Scrum, и без их содействия он не был бы настолько усовершенствован. Дэвид Старр использовал все свои редакторские навыки при создании этой версии Scrum-гайда.
Раздел 10.02. История
Кен Швабер и Джефф Сазерленд впервые представили Scrum на конференции OOPSLA (Object-Oriented Programming Systems, Languages and Applications) в 1995 году. Данное руководство основывается на опыте, приобретенном Кеном и Джеффом на протяжении многих лет применения Scrum.
История развития Scrum уже может считаться длительной. Отмечая те компании, в которых Scrum был впервые использован и усовершенствован, мы не можем не вспомнить о корпорациях Individual, Inc., Fidelity Investments и IDX (сегодня GE Medical).
Scrum-гайд описывает метод в том виде, в котором он был разработан и поддерживался в течение более 20 лет Джеффом Сазерлендом и Кеном Швабером. В других источниках вы можете найти образцы, процессы, справку и полезные инструменты, которые дополняют фреймворк Scrum. Это позволяет достичь продуктивности, ценности, проявить креативность и в итоге испытать гордость.
Приложение 3. Сценарий достижения гибкости организации
Используется с 2005 года
1.1. Введение
Давление со стороны глобальной экономики требует от современного бизнеса в большей степени полагаться на способность создавать программное обеспечение в качестве ключевого конкурентного преимущества. Программное обеспечение – для управления процессами производства и доставки до потребителя или для повышения эффективности ежедневных рутинных действий – затрагивает практически все аспекты современного бизнеса.
В то же время многие руководители предприятий считают, что их методы разработки программного обеспечения мало изменились с 1980-х годов. Повсеместно распространены предиктивные, основанные на планировании, каскадные методы разработки, несмотря на горы доказательств того, что эти процессы часто не в состоянии предоставить своевременно реальную ценность и поэтому препятствуют развитию способности компаний реагировать на быстро меняющиеся требования клиентов и условий рынка. И ситуация только ухудшается.
Современные IT-организации должны эффективно координировать распределенные по всему миру команды разработки программного обеспечения, встраивая ранее разработанные приложения в более гибкие, сервис-ориентированные архитектуры. Очевидно, что мы нуждаемся в новом подходе к управлению и разработке программного обеспечения, чтобы оставаться конкурентоспособными.
Для решения этих проблем был создан ряд более гибких и адаптивных методов разработки, которые позволяют организациям быстрее поставлять программное обеспечение высокой ценности. Scrum – один из таких проверенных методов, применяемых на многих предприятиях по разработке программного обеспечения.
В этом документе подробно объясняется, как высшие руководители могут внедрить Scrum на уровне предприятия, включая масштабирование среди большого количества различных применений и создание команд, а также рассказывается о вызовах, с которыми придется столкнуться, и наградах, которые можно получить. Документ предоставляет сценарий по адаптации Scrum на предприятиях, для которых создание качественного программного обеспечения и его количество – ключ к успеху в конкурентной борьбе на рынке.
Это «набор» идей по реализации Scrum в рамках предприятия, и это скорее сценарий, чем руководство, потому что каждая организация уникальна. Реализация Scrum в одной организации будет отличаться от реализации в другой. Типы препятствий, вещи, нуждающиеся в изменении, трудность в реализации этих изменений и люди, которые будут проводить эти изменения, везде разные, поэтому графики, приоритеты и усилия в каждой организации также будут разными.
1.2. Обзор Scrum и гибкой разработки программного обеспечения
На первый взгляд Scrum – очень простой процесс: это техника управления разработкой программного обеспечения, которая имеет относительно небольшой набор взаимосвязанных методов и правил, не слишком предписывающего характера, которым можно быстро научиться и получить возможность почти сразу повысить производительность.
Scrum естественным образом фокусирует всю организацию на создании успешных продуктов. Он обеспечивает создание через регулярные промежутки времени полезных функций, таких как требования, архитектура, дизайн, даже при использовании нестабильных технологий. Вы можете применять Scrum в начале проекта или в середине, он поможет сэкономить усилия при разработке.
Scrum эффективен, потому что оптимизирует атмосферу разработки, устраняет организационную надстройку и непосредственно синхронизирует рыночные требования со скоростью доставки необходимых функций. Scrum, основанный на современной теории контроля, производит лучшее из возможного программного обеспечения при помощи доступных ресурсов, приемлемого уровня качества и в требуемые сроки. В своей основе Scrum – итеративно-инкрементальный процесс разработки любого продукта или управления любой деятельностью. Он производит потенциально готовый к выпуску набор функциональности к концу каждой итерации.
Отличительные черты Scrum:
• инструмент, который может быть использован для достижения гибкости;
• гибкий процесс для контроля и управления разработкой;
• упаковка для существующих инженерных практик и методов;
• командный метод разработки систем в условиях, когда требования меняются быстро;
• контролирует хаос в условиях конфликта интересов и потребностей;
• улучшает коммуникации и обеспечивает максимальное сотрудничество;
• обнаруживает и устраняет все препятствия, стоящие на пути разработки и выпуска продукции;
• представляет собой способ добиться максимальной производительности;
• масштабируется от отдельных проектов до целых организаций и может управлять разработкой множества взаимозависимых продуктов и проектов с командой из более чем тысячи участников;
• позволяет каждому получать удовольствие от своей работы, вклада в общее дело и осознания, что сделал максимум возможного.
Подробное описание методов Scrum выходит за рамки этого документа (см. Швабер, 2004, и Швабер, 2002). В двух словах метод можно описать созданием бэклога продукта, где все требуемые функции организованы в список по их приоритетности (рис. А3.1).
Рис. А3.1. Модель эмпирического процесса для Scrum
Владелец продукта отвечает за утверждение изменений в бэклоге продукта. Реализация происходит после 30-дневных итераций, называемых спринтами, которые фокусируются в верхних пунктах списка в бэклоге продукта. Цель каждого спринта – поставка потенциально готового к выпуску инкремента продукта. В течение спринта контрольные точки разработки обсуждаются на совещаниях, называемых Scrum-митингами. На них сообщается прогресс и деятельность каждого члена команды и определяются проблемы, которые могут блокировать этот прогресс. Это позволяет Scrum-мастеру контролировать прогресс в отношении общих обязательств спринта и давать советы по корректировке процесса разработки для обеспечения успешного завершения спринта. Процесс разработки показан на рис. А3.1.
1.2.1. Принципы Scrum
Помимо освоения механизмов работы Scrum, для руководителей важно понимать, что Scrum руководствуется несколькими основными принципами:
• верой, что эффективная разработка программного обеспечения лучше осуществляется через эмпирический процесс, а не через процесс планирования;
• убеждением, что после устранения организационных препятствий самоорганизованная и самоуправляемая команда естественным образом будет создавать лучшее программное обеспечение, чем было бы в противном случае;
• допущением, что вы можете получить наиболее ценное программное обеспечение в отведенное время и в рамках выделенного бюджета и все же вы не можете окончательно спрогнозировать точную функциональность, которую команда будет в состоянии предоставить.
Scrum заявляет, что признание этих ключевых принципов освобождает организацию от многих ограничений, препятствующих эффективной разработке программного обеспечения. Тем не менее высшее руководство должно признавать, что применение этих ключевых принципов предполагает значительные изменения в организации, которая сделала выбор по их внедрению. Так как эти принципы составляют основу Scrum, каждый заслуживает некоторого дополнительного обсуждения.
1.2.1.1. Эмпирический процесс против процесса планирования. Scrum основан на убеждении, что сегодня большинство систем разработки имеют неправильную философскую основу, а именно что через все более и более эффективное планирование мы можем достичь более предсказуемых и более качественных результатов. Scrum определяет процесс разработки приложений как непредсказуемый и необычайно сложный (подумайте о сотнях тысяч созданных вручную строк программного кода). Ценность такого процесса может быть измерена только эмпирически. В конце концов каждое ваше приложение, разработанное другой командой в другом месте и при других обстоятельствах, будет отличаться от созданного вашей командой и в вашем контексте, поэтому готового рецепта, основанного на процессе пошагового планирования, не может быть.
Scrum определяет процесс разработки систем как свободный комплекс мероприятий, который сочетает в себе известные, эффективные инструменты и методы под управлением команды разработчиков в тесном сотрудничестве с владельцем/потребителем продукта. Так как многие из этих видов деятельности неточные, применяются средства контроля, такие как постоянный осмотр и демонстрация, чтобы управлять рисками в реальном времени и предоставлять эмпирическое подтверждение состояния проекта в любой момент времени.
Рекламный слоган Scrum прост:
Знать, где ты находишься каждый день, используя Scrum
или
Думать, что знаешь, где ты находишься, на основе хорошо составленного плана, и потом, но гораздо позднее, обнаружить, что сильно ошибался.
1.2.1.2. Устранить препятствия, чтобы команда могла делать свою работу. С годами организационные процессы и методы разработки программного обеспечения в каждой компании, как правило, накапливаются до тех пор, пока создание программного обеспечения не становится довольно сложной задачей. Когда Scrum начинает применяться, эти «организационные препятствия» на пути выпуска эффективного программного обеспечения становятся очевидными, потому что влияют на способность команды соответствовать быстрому, итеративному, пошаговому характеру Scrum. Удаление или изменение этих процессов и методов работы может выявить необходимость начала крупного проекта изменений на предприятии под контролем и управлением высшего руководства (более подробно эта тема раскрывается далее).
Более того, в Scrum команда – главное звено. В конце концов члены команды – те, кто реально проектирует, разрабатывает и предоставляет программное обеспечение, поэтому оптимизация производительности команды за счет устранения препятствий оптимизирует коммерческую производительность всего предприятия по доставке ценного продукта клиентам. Управляющий персонал делает свою работу, когда устраняет препятствия. Команда делает свою работу, когда выполняет свои обязательства, описанные в каждом бэклоге спринта.
Другими словами, в Scrum команда одновременно наделена и полномочиями, и обязанностями по доставке продукта. Команда хорошо делает свою работу, когда она самоорганизованна, самоуправляема и самостоятельно добивается выполнения целей спринта. Для многих организаций это переворачивает все с ног на голову. Иерархический, директивный стиль управления при применении Scrum естественным образом устраняется. Владелец продукта теперь только устанавливает набор задач и приоритеты, а члены команды решают, как этого добиться, и никто не должен указывать, как им это делать в процессе работы.
1.2.1.3. Лучший, хотя и не такой предсказуемый, результат против фальшивой уверенности. Scrum начинается с допущения, что создание программного обеспечения – сложный бизнес, существующий в изменчивом специализированном техническом пространстве, и никто не в состоянии надежно предсказать или точно спланировать, что команда сможет произвести, когда она сможет это сделать и какими в итоге будут качество и стоимость. Scrum считает, что только команды могут оценить эти вопросы, просчитать стоимость, договориться о ближайшем плане работы в зависимости от различных рисков и потом скорректировать этот план в процессе работы. Соглашение состоит в том, что команда предоставит лучшее из возможного в данных обстоятельствах программное обеспечение. Следование любому другому подходу, основанному на пошаговом выполнении плана, не способствует «улучшению» и только мешает команде отзываться на сложности реального мира и на его непредсказуемость.
Исторически сложилось, что пренебрежение этой философией создает ряд организационных проблем:
• руководство на самом деле считает, что может предсказать стоимость, срок выпуска и функциональность, которые будут предоставлены на основании планирования;
• разработчики и руководители проектов вынуждены жить во лжи: они притворяются, что могут планировать, прогнозировать и выполнять планы; они движутся своим путем, но делают вид, что идут по другому пути; в конце концов они, по существу, работают без контроля;
• к моменту релиза система часто оказывается неподходящей или требует существенного изменения; ключевая причина – то, что долгий процесс разработки и высокая стоимость повторной работы ограничивают нашу видимость полезности того, что команда на самом деле разрабатывает.
Признание этих реалий не происходит без проблем. Например, какой менеджер захочет сказать своему руководству, что он точно не знает, что ему предоставит команда разработки к определенной дате. Но у такого подхода имеются и преимущества: организация получит то, в чем действительно нуждается, – способность создавать лучшие продукты для конечных пользователей и делать это быстро и четко, обеспечивая себе конкурентное преимущество для ведения бизнеса.
1.2.2. Scrum и гибкость разработки программного обеспечения
Scrum используется начиная с середины 1990-х годов и в настоящее время применяется в тысячах проектов по всему миру. Наряду с ним за этот период получили признание несколько новых итеративных методологий. Как и Scrum, каждый метод представляет собой комбинацию старых и новых идей, но все они подчеркивают, что необходимо следующее:
• тесное взаимодействие между командой разработки и бизнес-экспертами;
• общение лицом к лицу (это более эффективно, чем документальная переписка);
• частое предоставление готового к развертыванию, представляющего ценность для бизнеса программного обеспечения;
• прозрачность целей, прогресса и артефактов;
• создание крепких, самоорганизованных команд;
• создание способов программирования и команды разработки, позволяющих обеспечивать непрерывную адаптацию к изменяющимся требованиям.
В 2001 году многочисленные основатели и последователи таких методологий, включая лидеров, использующих Scrum, встретились, чтобы понять, что у них всех есть общего.
Они выбрали слово «гибкий» в качестве объединяющего термина и создали Манифест гибкой разработки программного обеспечения, в котором заявили общие ценности.
Мы выявляем более эффективные способы разработки программного обеспечения, создавая его и помогая создавать его другим. Благодаря этой работе мы пришли к важным открытиям:
• люди и взаимодействие важнее процессов и инструментов;
• работающее программное обеспечение важнее исчерпывающей документации;
• сотрудничество с заказчиком важнее согласования условий контракта;
• готовность к изменениям важнее следования первоначальному плану.
Хотя то, что менее важно, также ценно, то, что для нас важнее, мы ценим больше.
Манифест инициировал тысячи новых гибких проектов. Результаты и опыт этих проектов дали дальнейшее развитие практическим способам применения многочисленных форм гибких подходов к разработке программного обеспечения. Как и в любой деятельности, некоторые из них оказались успешными, а другие потерпели неудачу. Но самым поразительным было то, что и бизнесмены, и технический персонал относились к работе в этих проектах с любовью. Это был именно тот способ разработки программного обеспечения, о котором они мечтали, и конечные пользователи и клиенты также были с ними согласны. Успешные проекты порождали больше последователей, и, как и при успешном спринте, этот гибкий цикл продолжается по настоящее время.
1.3. Подготовка к Scrum
После того как высшее руководство предприятия получает общее представление о деловых и культурных преимуществах Scrum и гибких способов разработки, оно часто хочет сделать следующий шаг и оценить, как этот метод разработки может улучшить их организацию.
В течение первых 15 лет жизни Scrum его применение в большинстве случаев происходило в организациях снизу вверх. Другими словами, команда, работающая над проектом, пробовала Scrum и добивалась впечатляющих результатов. Затем его пробовала другая команда, и очень скоро Scrum-проекты появлялись по всей организации. В последнее время, однако, многие организации стремятся внедрить Scrum сверху, в рамках процесса развития компании и работы по улучшению производительности и ускорению реагирования на рыночные условия.
Поскольку Scrum – это в основном расширение прав и возможностей команды разработки в принятии самостоятельных решений, его внедрение сверху требует вдумчивого рассмотрения и подготовки, которую мы опишем в этом разделе.
1.3.1. Скрамить сразу и процесс разработки программного обеспечения, и организацию
Многие организации в течение долгих лет вынуждены были преодолевать различные препятствия и терпеть недостатки. Scrum быстро их выявляет и требует их устранения. К счастью, повышение производительности и ценности, полученные в результате Scrum-проектов, делают усилия по внедрению стоящими, но это все еще усилия.
Чтобы применить Scrum, организация должна выполнить два типа работы. Во-первых, проекты, где команды разработки учатся создавать программное обеспечение с использованием Scrum. Во-вторых, устранение препятствий на пути оптимизации создания и выпуска программного обеспечения, с которыми могут столкнуться Scrum-команды. Первая работа улучшает поставку программного обеспечения, а вторая убирает помехи на пути повышения прибыльности и производительности.
Оба типа работ представляют собой вызов и требуют значительных усилий сверх обычного процесса разработки программного обеспечения. Полная реализация Scrum на предприятии может занять до пяти лет. Независимо от интенсивности усилий и желаний руководства этот график не может быть ускорен, поскольку ядро проекта – организационное изменение.
Ежедневные и ежемесячные циклы инспекции и адаптации при использовании Scrum делают все видимым: технические методы разработки, технологический процесс и организационные помехи. Проекты, использующие Scrum, регулярно выявляют препятствия, которые должны быть записаны, которым должна быть дана оценка, присвоен приоритет и в отношении которых следует принять соответствующие меры.
Скорость внедрения Scrum напрямую связана со следующим:
• степенью необходимых изменений внутри организации;
• срочностью в улучшении разработки и выпуска программного обеспечения в пределах организации;
• эффективностью руководства в рамках организации.
1.3.2. Роль высших руководителей как организационных Scrum-мастеров в процессе непрерывного улучшения
Scrum-мастер отвечает за исполнение Scrum-командой принципов и принятие ценностей Scrum. Scrum-мастер предостерегает команду от взятия на себя чрезмерных обязательств, которые невозможно будет выполнить во время спринта. Кроме того, Scrum-мастер постоянно работает над устранением препятствий на пути команды к успешной реализации целей спринта.
Руководитель – это Scrum-мастер изменений в организации.
На уровне предприятия эта работа ложится на плечи высшего руководителя, чья работа заключается в том, чтобы, находясь вне команды, устранять организационные барьеры, которые могут помешать успеху гибкой модели развития.
Цель Scrum-мастера в организации – заметить, идентифицировать и провести работу, чтобы вызвать изменение, которое устранит препятствие. То есть высший руководитель как Scrum-мастер в организации в первую очередь – действующая сила изменений, а список препятствий – это его бэклог продукта. Консультант по внедрению Scrum на предприятии выступает здесь как владелец продукта и устанавливает приоритетность устранения препятствий. Этот бэклог продукта из препятствий прорабатывается в организации с помощью команд, использующих Scrum-процесс, с описанием устраненных препятствий. Бэклог организационных изменений начинается на этапе пилотных проектов и продолжается до тех пор, пока не определены необходимые изменения в ходе оценочно-адаптационного цикла Scrum.
Scrum-мастер в организации периодически встречается со всеми Scrum-мастерами, владельцами продуктов и консультантом по внедрению для дальнейшей разработки бэклога продукта изменений в организации. Команды формируются, и это приводит к изменениям в организации во время спринта. В обзоре спринта изменениям дается оценка и формируются показатели, которые могут отражать прогресс в реализации изменений. Таким образом, высший руководитель вовлечен в процесс продолжающихся организационных изменений, направленных на повышение производительности и качества команд разработчиков программного обеспечения.
1.3.3. Предупреждение: изменение – трудная работа
Изменение – это трудная работа, и нет никакого другого способа ее сделать, кроме как напряженно трудиться. Организации, внедряющие Scrum, иногда ошибочно идентифицируют трудности как чью-то вину, будто виновных можно наказать – и все пойдет как по маслу. Этот тип организационной вины может убить реализацию Scrum, а следовательно, и способность организации создавать более качественное программное обеспечение. Когда что-то проходит болезненно, идет не так, признание этого – часть происходящих изменений. Это возможность для всех собраться, чтобы выяснить, как решить эту проблему. Вместе.
Реализация Scrum не может быть спланирована с помощью контрольных списков, процедур и создания форм. Scrum – просто фреймворк, каркас, который будет определять в организации все, что требуется на пути оптимального создания программного обеспечения.
Работа по управлению и устранению препятствий – трудная часть реализации Scrum, и эта часть различна в разных организациях, потому что они отличаются друг от друга.
Никто не любит страдания и трудности. Многие препятствия так прочно встроены в организационную структуру принятия решений и управления, что их очень трудно убрать. Никакой объем работы по планированию смягчить эту трудность не сможет. Поможет только настрой всех на тяжелую работу, которую необходимо сделать, чтобы стать конкурентными на мировом уровне. Scrum требует, чтобы высшее руководство было жизненно вовлечено в процесс оценки и удаления препятствий и, следовательно, требовало, чтобы руководитель, отвечающий за внедрение Scrum на предприятии, стал ведущей действующей силой перемен.
Таким образом, высший руководитель вовлечен в процесс продолжающихся организационных изменений, направленных на повышение производительности и качества команд разработчиков программного обеспечения. Это не так просто, и, как показывает письмо, направленное Кеном Швабером генеральному директору одной из организаций, лидерские качества руководителя будут решающим фактором успеха.
От: Кена Швабера
Кому: XXХ XXXXХ, генеральному директору компании XXXXXXХ
С одной стороны, Scrum предлагает очень привлекательные возможности: повышение производительности и улучшение условий труда, увеличение конкурентоспособности, а также более высокое качество продуктов. С другой стороны, это трудно реализовать. Количество изменений, порождаемых внедрением Scrum, – значительное, а изменения трудные.
Притом что изменения сложны для разработчиков и заказчиков (владельцев продукта), они получают немедленное вознаграждение за счет повышения удовлетворенности работой. Это помогает им бороться со стрессом и тревогой. А руководители среднего звена испытывают стресс без быстрого вознаграждения. Их просят помочь на этапе перехода организации от традиционного к гибкому подходу без четкого видения их личного места в конечной организации… Что я стану делать и кем я буду в обновленной организации? Этот вопрос особенно труден и таит в себе опасность, так как менеджеры среднего звена будут создавать образ новой организации. Потенциал для конфликта и сопротивления угрожающий.
Мой опыт по внедрению Scrum на предприятии сверху вниз привел меня к убеждению, что дифференциатор между успехом и провалом – вы. Ваша способность терпеливо провести персонал через процесс изменений и ваша способность убедить руководителей среднего звена в их ценности и организовать их в команду будет определять, способно ли ваше предприятие впитать изменения и реализовать преимущества.
1.4. Сценарий адаптации Scrum
Путь реализации Scrum в организации начинается с веры, что усилия будут вознаграждены более эффективным процессом разработки программного обеспечения и более гибкой и конкурентной компанией. Также становится понятно, что значительное количество организационных изменений теперь в прогнозе.
По мере того как руководитель обдумывает это начинание, понимание организационного поведения ведет к рациональному набору шагов для достижения реальных изменений:
• поиску консультанта и местного специалиста по внедрению;
• совершению небольших начальных шагов для пробы;
• размышлению об успехах и неудачах, а затем движению вперед шаг за шагом.
Следующий раздел описывает несколько типичных примеров – как внедрить Scrum в вашей организации, «сценарий», предлагающий примерные практические приемы, которые вы можете применить, чтобы достичь необходимых изменений.
1.4.1. Действие 0 – общее представление, оценка и предварительная подготовка
Цель первого действия заключается в подготовке игрового поля для последующей деятельности: а) оценки готовности организации к гибкости; б) обеспечении начального обучения для первых участников; в) создании бэклога продукта для первоначальных проектов.
Это действие включает некоторые перечисленные ниже детали.
I. Общее представление и оценка
Описание: двухдневная рабочая сессия, состоящая из следующих мероприятий:
• тест пригодности к Scrum – предоставляет руководству все типы изменений, которые будут происходить с помощью метода, и помогает принять решение, хотят ли они продолжить;
• презентация Scrum – повышает общую осведомленность и предоставляет концепцию для всей организации;
• оценка организационной готовности и определение следующих шагов;
• определение планов; выявление потенциальных управляющих, планирование обучения и определение ресурса для пилотного проекта;
• ужин с высшим руководством с обсуждением следующих шагов.
Продолжительность: два дня.
Поддержка: внешняя.
II. Предварительная подготовка
Организация готова приступить к обучению и созданию структуры, необходимой для поддержки первого пилотного проекта. Деятельность в этой фазе включает следующие этапы.
Обучение Scrum-мастера.
Описание: обучение Scrum-мастеров проведению пилотных проектов.
Продолжительность: два дня.
Поддержка: внешняя.
Обучение владельца продукта.
Описание: обучение владельцев продукта максимизации возврата инвестиций с использованием Scrum.
Продолжительность: два дня.
Поддержка: внешняя.
Командное обучение (разработчиков).
Описание: обучение всех участников работать как кросс-функциональная, самоорганизованная команда, которая предоставляет «законченные» инкременты функциональности с использованием современных инженерных практик и специфических технологических приемов.
Продолжительность: пять дней.
Поддержка: внешняя.
Создание показателей.
Описание: обзор и изменение показателей, которые будут контролировать использование Scrum в организации и определят ценность, произведенную в пилотных проектах. Создание основного ядра Scrum и проектных показателей.
Продолжительность: неделя.
Поддержка: внешняя.
Создание бэклога продукта изменений.
Описание: создание бэклога продукта для отслеживания и оценки препятствий, которые возникнут в процессе пилотных проектов. Этот бэклог будет основой для действий по изменению всей организации.
Продолжительность: один день.
Поддержка: внешняя.
1.4.2. Действие 1 – пилотные проекты
Цель этого действия – испытать Scrum на одном или нескольких реальных проектах с целью продемонстрировать преимущества улучшенной гибкости разработки программного обеспечения в организации. На этом этапе выполняются один или несколько пилотных проектов. Scrum-мастера и руководство пристально следят за проектами для определения организационных препятствий и помех для применения Scrum. Когда эти препятствия определены, они сразу устраняются, если это возможно, или записываются в бэклог организационных изменений и распределяются по категориям для дальнейшего рассмотрения.
I. Пилотные проекты
Продолжительность: три – шесть месяцев.
Поддержка: внешний/внутренний Scrum-мастер.
Описание: проводится от трех до шести итераций в течение пилотных проектов. Пилотные проекты предоставляют инкременты функциональных возможностей и определяют помехи в оптимизации разработки программного обеспечения. Определяется и корректируется план, дается оценка и назначается приоритетность препятствиям.
II. Ретроспектива
Продолжительность: два дня.
Поддержка: внешний/внутренний Scrum-мастер.
Описание: обзор пилотных проектов, показателей и препятствий. Определение, что прошло правильно, а что должно быть улучшено. Определение показателя возврата инвестиций. Оценка влияния на бизнес-операции, включая взаимоотношения между отделами организации и клиентами.
III. Перепланирование
Продолжительность: один день.
Поддержка: внешний/внутренний Scrum-мастер.
Описание: изменение мастер-плана по реализации Scrum, поддержание его на высоком уровне и разделение проектных планов и плана организационных изменений, управляемых собственными специфическими бэклогами продуктов.
1.4.3. Действие 2 – организационная экспансия
Цель этого действия, основанного на успешных пилотных проектах, заключается в расширении использования Scrum и его преимуществ значительной частью области разработки программного обеспечения организации.
К этому времени уже есть понимание того, какие полезные практики внедрены, какие препятствия стоят на пути более широкого применения и где требуется дальнейшее обучение. Например, теперь могут быть эффективны более широкие обучающие программы.
Обучение Scrum-мастеров. Перед тем как масштабировать применение Scrum для дополнительных и более крупных проектов, вы должны увеличить количество Scrum-мастеров. На данном этапе должны быть отобраны кандидаты с соответствующими навыками. Scrum-мастера, которые будут управлять Scrum над Scrum (см. ниже), теперь могут быть обучены продвинутым навыкам, таким как упрощение процедур и сбор показателей.
Обучение владельцев продукта. Потребители и менеджеры продуктов обучаются способам оптимизации отдачи от инвестиций, управлению рисками и обязательствами. Они учатся это делать, играя роль владельца продукта, который несет ответственность за управление прогрессом по оптимизации ценности и исключению сюрпризов.
Обучение разработчиков. Разработчики, задействованные в гибкой разработке, должны научиться действовать как самоорганизованные, кросс-функциональные команды, которые предоставляют законченные инкременты функциональных возможностей, используя современные инженерные практики и специфические технологические приемы.
Обучение Agile/Scrum: успешное внедрение Scrum будет в значительной степени зависеть от общего знания терминологии всех вовлеченных в процесс людей. Это может быть достигнуто в течение 2–4-часовых вступительных курсов для 30–50 % организации.
В дополнение вы можете использовать другие виды деятельности для увеличения видимости и уровня одобрения Scrum в организации.
Информационные материалы. Уведомляйте о состоянии Scrum-проектов через простые и убедительные информационные материалы, такие как панели задач, бэклог продукта и выпуска, а также диаграммы сгорания задач.
Чтение. Составить список книг и статей, способствующих дальнейшему расширению знаний, которые могут быть предоставлены всем людям в организации.
Семинары и неформальные встречи с участием руководства. Лидеры, отвечающие за изменения, должны часто и открыто общаться по поводу того, что происходит в организации. Неформальные встречи, такие как общение за обедом, имеют тенденцию позитивно влиять на протекание изменений.
Общение в корпоративных чатах, публикация отзывов людей, участвовавших в пилотных проектах. Результаты пилотных проектов должны быть доступны каждому, это расширит обсуждение и вовлеченность на всех уровнях организации.
1.4.4. Действие 3 – достижение воздействия
Так как пилотные проекты доказали, что с помощью гибких методов разработки программного обеспечения достигается реальная польза, цель этого действия заключается в достижении более значительного влияния на более широком уровне, что может быть продемонстрировано только с помощью все более и более крупных проектов. При помощи предыдущих действий организация накопила значительное количество явных и косвенных знаний, чтобы справиться со следующим шагом с высокой вероятностью успеха. На этом этапе не менее 25 % всей организации должны быть вовлечены в реализацию Scrum.
Эффективное изменение теперь должно происходить как внутри, так и за пределами отдела разработки. Внутри отдела эта работа лежит на команде разработки. За его пределами деятельностью по ликвидации препятствий руководит Scrum-мастер организации, а сама работа выполняется затронутыми ведомствами.
I. Проекты по разработке программного обеспечения
Продолжительность: постоянно.
Поддержка: внутренняя.
Описание: разработка проектов по созданию программного обеспечения с контролем показателей возврата инвестиций.
II. Проекты изменений
Продолжительность: большая часть работы приходится на один-два года, а далее по необходимости.
Поддержка: внутренняя.
Описание: проекты организационных изменений устраняют возникающие препятствия в разных ведомствах предприятия.
III. Оценка и адаптация
Продолжительность: каждый спринт.
Поддержка: внешний/внутренний Scrum-мастер.
Описание: обзор количественных и качественных показателей. Добавление дополнительных показателей и обзор того, какие показатели фиксируются каждый раз, когда происходят непредвиденные случаи.
1.4.5. Действие 4 – измерение, оценка и регулировка
Цель этого действия заключается в оценке прогресса организации и создании более широкого набора показателей, служащих основой для дальнейшего расширения. Руководитель должен быть в курсе, что предстоящее обсуждение новых показателей может вызвать как споры, так и поддержку в связи с тем, что многие традиционные показатели, которые применялись в организации до внедрения Scrum (например, показатель полноты документации), теряют свое значение. К счастью, Scrum и гибкие методы разработки – действительно контролируемые и измеряемые, поэтому использующие эти методы исполнители получают набор показателей, предоставляющих качественную и достаточную обратную связь как на уровне процесса разработки, так и на уровне проекта.
Но перед началом обсуждения новых показателей должна быть четко проведена граница между множеством традиционных процессов разработки программного обеспечения и гибкими процессами, то есть Scrum.
Основной показатель гибкого метода разработки программного обеспечения – существует ли реально работающее программное обеспечение и подходит ли оно для использования по планируемому назначению. В Scrum этот ключевой индикатор определяется опытным путем, путем демонстрации в конце каждого спринта.
Эта первичная мера качества программного обеспечения и производительности – сущность процесса гибкой разработки. Таким образом, со Scrum вы не можете отойти слишком далеко от цели, не зная, где находитесь. Все остальные показатели находятся в подчинении этой цели и постоянно повторяющегося принципа «частой поставки рабочего программного обеспечения».
На данном этапе процесса адаптации Scrum значительная часть организации уже работает в гибкой манере. Результаты спринтов первоначальных проектов – основные показатели эффективности новой модели поведения команды и новых процессов. Эти данные должны быть опубликованы и проанализированы.
Более того, теперь самое подходящее время для определения набора вторичных показателей, служащих ориентиром организации на пути реализации Scrum. При этом есть два типа показателей, которые могут быть применены.
Показатели процесса – в первую очередь качественные показатели эффективности команд и организации в усвоении Scrum. Это такие элементы, как эффективность команд по управлению бэклогом продукта, эффективность Scrum-процессов, например ежедневного Scrum-митинга, планирования спринта и так далее.
Показатели проекта – на уровне проекта дополнительный набор показателей может быть применен для оценки результатов конкретной Scrum-команды и службы, компонента или системы, за которую эта команда несет ответственность. Этот набор может включать в себя некоторые традиционные показатели, например подсчет дефектов, процент кода с юнит-тестированием, процент кода с автоматическим регрессионным тестированием и так далее. А также специфические Scrum-показатели: количество законченных пользовательских историй и демонстраций в конце каждого спринта.
Внимание на качестве в Scrum
Клиенты часто оказывают давление на организации разработчиков программного обеспечения с целью получить функциональные возможности быстрее, чем это возможно. Некоторые организации идут на это за счет снижения качества продукта, отбрасывая рефакторинг, урезая время тестирования и других необходимых инженерных манипуляций. Это не поддерживается в Scrum-процессах, так как система или продукт – корпоративный актив, который постоянно усовершенствуется и объективно оценивается, а не одноразовый проект активов. Инженерные организации, поддавшиеся этому давлению, в конце концов строят «мертвые модели» систем, которые не могут эффективно обслуживаться и улучшаться. Организация тратит огромные средства на переписывание и повторный выпуск существующей основы программного кода. Чтобы этого избежать, только на уровне высшего руководства может быть принято решение о снижении качества.
1.4.6. Действие 5 – распространение до победного конца
На основе уже выполненных в организации мероприятий с определенным набором показателей для направления и оценки прогресса в будущем теперь настало время распространить использование Scrum на всю организацию. Деятельность на этом этапе внедрения ориентирована на дальнейшее масштабирование метода в пределах организации.
Со Scrum знакомят оставшиеся команды, составляющие 25–30 % общего персонала организации. Существующие практические приемы продолжают совершенствоваться и распределяться между командами, чтобы достигнуть закрепления гибкого подхода к разработке в организации. Только теперь строгие правила, в соответствии с которыми Scrum осуществляет свою деятельность, могут быть скорректированы, чтобы лучше соответствовать потребностям организации. Клиентам может быть предложено принять участие во внедрении через обучение в качестве владельцев продукта и Scrum-мастеров. Эта фаза продолжается до тех пор, пока все команды не будут вовлечены в Scrum. Механизмы Scrum по инспекции и адаптации будут способствовать дальнейшему улучшению процессов и практических методов.
К этому моменту организация уже достигнет существенной производительности, а также оценит деловые и культурные преимущества Scrum.
Тем не менее, прежде чем мы перейдем к масштабированию Scrum на самые большие проектные условия, мы должны взглянуть на типы организационных препятствий, которые могут мешать эффективным Scrum-процессам.
1.5. Организационные препятствия при адаптации Scrum
Приложения, разработанные в любой организации, предназначены для оптимизации способности компании выполнять ее коммерческую миссию. Тем не менее с течением времени организации развиваются таким образом, что это не всегда способствует производительности команды, которая разрабатывает и поддерживает эти приложения. В самом деле, некоторые организации развились до состояния, при котором многие практические методы разработки программного обеспечения в значительной степени имеют дисфункции и, несмотря на неоднократные попытки по их улучшению, организационная структура и политика компании препятствуют эффективному изменению. Этот раздел описывает источник и природу таких препятствий, чтобы лучше вооружить руководителя, ответственного за изменения, для дальнейшей работы.
1.5.1. Выявление препятствий при помощи Scrum
Сама природа Scrum – его непрекращающиеся требование к качеству программного обеспечения, предоставляемого как можно быстрее, его постоянное требование необходимости работы с конечными пользователями для обеспечения эффективного применения и его постоянные механизмы инспекции и адаптации, быстро выявляющие плохо функционирующие методы и «блокирующие элементы». Этот эффект становится все более выраженным, когда Scrum также используется как процесс по внедрению и масштабированию Scrum в организации.
Вы не можете определить все препятствия заранее, так как они встроены в организацию и стали привычными, а потому не могут быть легко идентифицированы. Только когда вы начнете использовать Scrum, они станут очевидными. План реализации выступает в качестве доказательства того, что должно быть изменено, и готовности организации внести изменения, когда такая необходимость возникает.
1.5.2. Описание препятствий
Препятствия, как правило, встречаются в четырех областях.
1. Сам Scrum-процесс – какие препятствия стоят на пути его применения?
2. Методы работы людей – какие методы работы по разработке, выпуску, поддержке и использованию продуктов стоят на пути максимальной производительности всех вовлеченных в эту работу людей?
3. Инженерные методы разработки продукта – какие методы мешают оптимизации возврата инвестиций или максимизации целей организации с точки зрения перспективы продукта, какие препятствия есть в оптимизации разработки и выпуска продукта?
4. Организационные вопросы – какие системные организационные проблемы, которые явно лежат вне поля контроля команды, мешают командам быстрее поставлять программное обеспечение пользователям?
Мы хотим разделить отдельные категории организационных препятствий в бэклоге продукта, потому что они требуют уникальных навыков для решения. Кроме того, они должны иметь приоритет по влиянию и требуют некоторых усилий при размышлении, кто в организации лучшим образом может устранить препятствие.
1.6. Масштабирование Scrum
Экономическая выгода от применения Scrum и гибких методов наиболее легко достигается, если комплексные команды немногочисленны, работают в непосредственной близости друг от друга и в идеале состоят из 11 или меньше человек (включая владельца продукта, Scrum-мастера и команды разработки). Каждая Scrum-команда работает над специфическим продуктом или приложением, которое они могут определить, разработать, протестировать и выпустить без большой помощи извне.
Неизбежно, однако, что успех Scrum приведет к его применению в гораздо более крупных программах, системах, состоящих из подсистем, и приложениях, которые требуют участия множества часто распределенных команд по разработке и выпуску. К счастью, эффективность Scrum была доказана в проектах, состоящих из многих сотен разработчиков, следовательно, он масштабируется для решения сложных задач по разработке больших программных комплексов. Эта работа тем не менее приводит к появлению уникальных вызовов, которые должны быть решены, в частности:
1) масштабирование организации: комплексные Scrum-команды;
2) создание инфраструктуры для гибкости предприятия;
3) координация комплексных команд.
Каждый из этих вызовов рассмотрен ниже.
1.6.1. Масштабирование организации: Scrum-команды из Scrum-команд
Основанный больше на философских принципах, Scrum имеет очень небольшое количество правил. Тем не менее большинство правил, которые действительно существуют, – фиксированные и относительно нерушимые. Одно из таких основных правил – команда должна состоять не более чем из 11 участников и по возможности располагаться в общем рабочем помещении. Это наиболее эффективная и продуктивная модель, так как она: а) поддерживает требование постоянного неформального общения членов команды; б) воспитывает высокий уровень корпоративного духа; в) дает возможность для взаимной приверженности целям спринта членов команды, которые действительно знают друг друга и работают вместе каждый день.
Кроме того, некоторые механизмы Scrum, такие как планирование спринта и ежедневный Scrum-митинг, могут очень быстро разрушиться, когда численность команды начинает превышать восемь – десять человек. Если команды работают не в одном месте или их численность велика, это должно быть экономически оправдано.
Масштабирование Scrum для больших приложений (как показано на рис. А3.2) оставляет этот ключевой принцип на месте.
.
Рис. А3.2. Система, создаваемая тремя Scrum-командами в течение трех спринтов
Таким образом, масштабирование для приложения с участием 300 человек включает в себя организацию около 30 Scrum-команд. Как обсуждалось ранее, комплектация команды должна быть полной, чтобы она могла разрабатывать потенциально готовые к выпуску элементы функциональности после каждого спринта. В большинстве случаев это требует реорганизации команд вокруг отдельных свойств продукта, сервисов, компонентов и подсистем, а не по индивидуальной роли (например, команда разработчиков, команда тестирования и тому подобное). Мы обсуждали эти организационные препятствия и ранее, и, как видим, они усугубляются по мере увеличения размера нашего проекта.
Организация следует за архитектурой
Кроме того, мы не можем легко формировать Scrum-команды без понимания того, как каждая индивидуальная команда может относительно целостно предоставить функциональные возможности для конечного пользователя. В свою очередь, это предусматривает, что мы раскладываем архитектуру приложения на компоненты и подсистемы, которые имеют концептуальную целостность и могут представлять бизнес-ценность сами по себе[19]. Scrum подготавливает эту архитектурно-производственную деятельность на фазе подготовки спринта и первых спринтах, с помощью первых Scrum-команд. Этот метод особенно хорошо работает в период распространения Scrum в организации и развертывания для большого проекта. Здесь первые команды создают контрольные точки потребительской ценности и в то же время закладывают архитектуру приложения, способную принять дополнительные команды, обучение которых происходит примерно в это же время. По мере того как формируется новая команда, ее роль в большой системе становится ясной и появляется общая картина, как на рис. А3.2.
1.6.2. Координирование Scrum-команд из Scrum-команд
Конечно, наличие большого количества команд чревато значительными проблемами в координации и коммуникации между группами. Кроме того, это предполагает, что, скорее всего, возникнет некоторое количество проблем на системном уровне, которые потребуют такой же ежедневной и ежемесячной инспекционной деятельности, которая применяется на уровне локальной команды.
Опыт работы с масштабированием Scrum для больших команд привел к созданию набора полезных практических методов для координации различных команд и решения более сложных задач по планированию спринта, даты релиза системы, отслеживанию интеграции компонентов и деятельности по тестированию.
Ежедневное общение: Scrum над Scrum
Таким же образом, как Scrum обеспечивает ежедневное общение на мероприятии – ежедневный Scrum-митинг, более крупные и распределенные команды, как правило, координируют свою деятельность на мероприятии ежедневный Scrum над Scrum. На этом совещании лидеры от каждой команды используют тот же самый формат, что и на ежедневном совещании отдельной команды:
1) что вчера сделала моя команда для достижения целей спринта?
2) что моя команда будет делать сегодня?
3) какие препятствия могут помешать моей команде достичь целей спринта?
В идеальном случае это мероприятие должно проводиться непосредственно после ежедневного Scrum-митинга индивидуальных команд. Когда команды рассредоточены, это совещание часто проводится по телефону, время дня выбирается для обеспечения максимального привлечения всех участников Scrum над Scrum.
Планирование релиза на уровне системы и отслеживание.Рисунок А3.2 ошибочно дает понять, что вопрос по разделению организации на команды по работе над отдельными функциями продукта, сервисами и подсистемами довольно простой: команды сделают свою работу, и интегрированная система получится естественным образом. Опыт показывает, что это крайне маловероятно. Даже когда индивидуальным командам ставится задача достичь целей спринта и скоординировать интеграцию между командами и подсистемами, присутствует целый ряд больших трудностей. Это необходимость в создании целостной системы, когда мы встраиваем и тестируем наши интеграции со всеми подсистемами и где подсистемы работают вместе для обеспечения более широких требований пользователей, а вся система должна соответствовать требуемому уровню качества, производительности и надежности. Теперь нам требуется, чтобы любая работа отдельной команды считалась законченной и интегрированной и работа всех команд по интеграции тестированию должна быть закончена. Это показано на рис. А3.3.
Рис. А3.3. Система из трех подсистем
Для решения этих проблем многие команды добавили роль технического лидера, выполняемую на уровне системы. Архитекторы, лидеры команд, менеджеры продуктов и персонал контроля качества часто объединяются в дополнительную Scrum-команду, думающую и действующую на системном уровне. Кроме того, члены этой команды могут также применять Scrum-метод на уровне системы, устанавливать набор целей спринта и создавать пункты бэклога, включающие системные интеграции, демонстрации на системном уровне, контрольные точки проверки качества, создание пробных выпусков и других мероприятий, гарантирующих, что разработка системы идет по выбранному пути. Из всей этой работы возникает общая картина, показанная на рис. А3.3.
1.6.3. Инструментальная инфраструктура для гибкости предприятия
Даже при таком уровне структуры и координации в больших проектах и при распределенных командах могут ощущаться недостаток координации между командами и недостаточная проектная прозрачность, необходимые для надежного выпуска программного обеспечения с помощью быстрых, полностью протестированных итераций. Хотя Scrum предоставляет проверенную основу для управления проектами, касающимися разработки программного обеспечения, он не предписывает специфические методы разработки и не рекомендует конкретный набор инструментов для поддержки Scrum-процесса. Философия Scrum в этом отношении состоит в том, чтобы «сохранить его простым и позволить команде решать». Поскольку организации испытывали трудности с применением современных инженерных практик, Scrum.org представил курсы и программы для Scrum-разработчиков, ориентированных на современные инструменты управления жизненным циклом приложений.
Действительно, для идеальной команды, состоящей менее чем из десяти участников, расположенных в одном рабочем пространстве, основные артефакты управления проектом, используемые для планирования спринта и обсуждения статуса индивидуальных особенностей продукта, задач и прогресса команды, очень часто могут управляться с использованием таблицы, разработанной и обслуживаемой Scrum-мастером. Технические артефакты для требований, тестов и дефектов могут быть записаны на карточках, офисных досках или сохраняться в командном справочнике.
Люди и коммуникации
Однако масштабирование практик Scrum на распределенные команды и Scrum-команды, состоящие из отдельных команд, представляет собой специфические коммуникационные проблемы. Координация между командами действий по внедрению общих требований, отслеживанию статуса определенного признака и выявлению проблемных вопросов становится первоочередной задачей. В таких случаях механизм для частой синхронизации их работы должен быть изобретен и внедрен. Также должна быть создана более детализированная техническая архитектура продукта, чтобы работа могла быть поделена между командами (Швабер, 2004).
Традиционные инструменты управления проектами могут показать идеализированные задачи с четкими датами начала и окончания, а также временем выполнения, возможно, безрезультатного. Это очень важный путь анализа для долгих каскадных проектов. При этом основанная на планировании деятельность теряет важность для коротких итераций, когда вся команда фокусируется на получении нескольких функциональных признаков с самым высоким приоритетом. Вместо одного человека, ведущего базу отдельных задач, которые команда планирует и выполняет день за днем (например, пользовательские истории и тесты), более крупные программы нуждаются в окружающей среде, поддерживающей взаимодействие в режиме реального времени и обеспечивающей естественную передачу сигналов среди членов команды, когда они берут функциональный признак из бэклога продукта для разработки, тестирования и интеграции. Для эмуляции, расположенной в одном рабочем пространстве команды, эта окружающая среда управления гибкой разработкой проектов должна позволять всем быстро увидеть и обновить информацию, где функциональный признак находится в жизненном цикле в пределах спринта, а также определить, сколько усилий требуется для его завершения и какие конкретные вопросы блокируют его прогресс.
Кроме необходимости новых способов планирования и отслеживания итераций возможности инструментов применяются к определению, организации и распространению сведений об артефактах нашей системы, а также новых требований к ней. Управление требованиями, их тестирование на пригодность и дефекты требует поддержки, горизонтальной среди всех этапов деятельности жизненного цикла спринта, а не вертикальной, с большим набором информации об артефактах, которая плохо связана с обязательствами, которые приняли на себя команды. На самом деле с быстрыми итерациями есть реальная связь между этими артефактами, которые составляют основную заботу команд. В конце концов каждый спринт производит много частей рабочего, протестированного кода, поэтому команды должны точно понять, как эти инженерные артефакты связаны с друг другом, и быть в состоянии видеть их статус в каждый момент времени.
Возможности инструментальной архитектуры
Будучи в конце концов разработчиками программного обеспечения, команды, естественно, захотят лучше организовать свои артефакты и автоматизировать те аспекты Scrum-процесса, которые поддаются программной поддержке. В частности, они выразят желание добавить инфраструктурную поддержку для ряда видов деятельности и типов артефактов в жизненном цикле программного обеспечения.
Управление бэклогом. Так как сложность системы растет, команда захочет больше поддержки по фиксации и техническому обслуживанию списка признаков, функциональных и нефункциональных требований, сценариев использования, пользовательских историй, а также их приоритетов, стоимости и владельцев этих пунктов. Когда Scrum применяется для более крупных проектов, эти артефакты могут вырасти до многих тысяч позиций, и методы по их организации, поддержке и просмотру с помощью системы или подсистемы станут критическими.
Проектная отчетность. Scrum сторонится традиционного, каскадного планирования проектов, но тактическая ежедневная природа Scrum-системы управления проектом интенсивна и неослабна. Команда нуждается в простом методе, при котором каждый член команды может вводить свои оценки выполнения задач, статус и оставшиеся усилия таким образом, чтобы диаграммы выгорания задач были автоматизированы и постоянно доступны. В дополнение инфраструктура должна поддерживать естественную передачу сигналов, которую команды используют по мере движения пунктов бэклога продукта в течение их жизненного цикла. Старший персонал должен иметь инструменты наблюдения за командами и понимать их индивидуальные итерации и планы выпуска для оценки состояния программы в целом.
Разработка требований по принципу PRN. Многие небольшие Scrum-проекты добились успеха с помощью неформальных механизмов формирования требований, таких как прямое обсуждение между владельцем продукта и командой разработки. Но, по мере того как сложность и критичность проекта растут, требуется более глубокое и полное описание требований и их версий. К примеру, становится важной документация интерфейсов, которая влияет на несколько команд. Изменения в интерфейсах или новые функции, которые выходят за пределы одной команды, могут иметь значительное влияние на весь проект.
• Эти требования должны быть разработаны на основе принципа PRN, то есть непосредственно перед спринтом, который реализует новые функциональные возможности. Для решения этой проблемы командам может понадобиться централизованная поддержка по созданию более полных форм выражения требований и их обобщения, для их оценки и автоматическом уведомлении об изменениях.
Раннее тестирование. Каждый спринт предоставляет потенциально готовые к выпуску элементы базового продукта. Проведение раннего тестирования и автоматизация тестирования позволяют командам поддерживать требования Scrum к частым итерациям. Инструменты, которые генерируют тестовые случаи непосредственно из требований или карты историй, ускоряют процесс разработки и предоставляют постоянное отслеживание, необходимое для удостоверения пригодности этой функции. Знайте, что текущее управление сотнями и тысячами регрессионных тестов, которые накапливаются, вероятно, станет решающим фактором в определении скорости и успешности ваших спринтов.
Планирование релиза. Философия Scrum фокусируется на «магии воспользоваться возможностями в ближайшей перспективе», в отличие от «черной магии по точному предсказанию именно того, что будет доставлено через 6–12 спринтов». Эта философия – прорыв в мышлении на уровне команды, потому что это позволяет Scrum-командам фокусироваться на текущей работе в ближайшие 30 дней и таким образом производить работающее программное обеспечение более надежно. Но, по мере того как количество команд растет, применение дополнительного анализа и точности к спринтам за пределами непосредственного горизонта помогает избежать архитектур, которые требуют в дельнейшем существенного рефакторинга, который хотя и весьма поощряется в гибком методе разработки, но становится менее практичным по мере увеличения масштаба приложений и количества существующих внедрений. Дополнительное планирование релиза, который предоставляет нам архитектурный путь, часто бывает оправданным. Таким образом, искусство планирования спринта может включать функции планирования «что будет через несколько спринтов» и «что если планирование…», которые помогают командам идти на компромиссы в бэклогах и обсуждать разумное видение и дорожную карту продукта со спонсорами.
Кроме того, эти команды обычно хотят организовать все эти инструменты в центральном хранилище, где они доступны каждому участнику 24 часа в сутки семь дней в неделю из любой точки мира, и должны предоставлять мгновенный просмотр проектного и программного статуса, с автоматическим уведомлением об изменениях для критических изменений в проекте.
Развитие инфраструктуры в спринтах. В Scrum внедрение этого уровня инфраструктуры не разовое событие, подготовленное «заранее» командой внедрения.
Сами Scrum-команды берут на себя задачу определять, что они будут приобретать и строить для решения своих проблем, основываясь на уроках, полученных в предыдущих спринтах. Кроме того, эти инвестиции делаются в контексте текущих спринтов, поэтому команда принимает решение о построении инфраструктуры путем добавления элементов к бэклогу продукта, в том числе и архитектурных элементов, как показано на рис. А3.4.
Рис. А3.4. Добавление инфраструктурных элементов в спринт
Конечно, функциональность, ориентированная на клиентов, по-прежнему занимает более приоритетное положение, но опытная команда придет к осознанию, что необходимо постоянно планировать инфраструктурную работу, чтобы сохранить скорость и производительность по мере того, как будет расти сфера применения и количество команд.
1.7. Выводы
Scrum – проверенный и эффективный способ разработки программного обеспечения, который может быстро повысить производительность, скорость работы и качество команд разработки программного обеспечения.
Обычно организации, специализирующиеся на разработке программного обеспечения, после внедрения Scrum получают следующие преимущества:
• уменьшение времени цикла разработки;
• больше ценности для конечных пользователей;
• более высокое качество;
• меньше производственных рисков;
• большая удовлетворенность пользователей;
• улучшение морального духа компании.
Внедрение Scrum, хотя и кажется простым на первый взгляд, часто требует существенных организационных изменений, чтобы устранить препятствия на пути эффективной разработки и поставки. Как ведущий агент изменений высший руководитель несет главную ответственность за устранение этих препятствий.
Постоянная заинтересованность руководителя может быть решающим фактором успешной реализацией и провалом. Хотя путь реализации Scrum непростой, руководитель, который решил улучшить разработку программного обеспечения с помощью Scrum, делает первый шаг для того, чтобы предприятие встало на путь достижения коммерческих преимуществ от быстрой поставки более качественного программного обеспечения.
Кроме того, Scrum весьма эффективен при разработке крупномасштабных проектов и может поддерживать потребности многих сотен сотрудников, участвующих в совместном создании приложений. Масштабирование Scrum представляет собой дополнительный набор вызовов к архитектуре и инструментам, которые команды должны решать, но преодоление этих вызовов с большой вероятностью предоставит этим крупным компаниям существенное преимущество в конкурентной борьбе.
Благодарности
Эта книга не стала бы такой, какая она есть, без превосходного редактирования Арлетт Бэлью, общих указаний Ричарда Наррамора и лазерного фокуса Кэри Армстронг.
Об авторах
Джефф Сазерленд и Кен Швабер – создатели Scrum, метода разработки программного обеспечения, который обеспечивает приращение функционала разрабатываемого программного обеспечения каждые 30 дней. Scrum появился на свет, когда в августе 1995 года Джефф и Кен представили доклад на конференции OOPSLA в Остине. Этот документ, Scrum Development Process, был результатом их совместной деятельности. Работы Х. Такеучи и И. Нонаки по созданию бережливых знаний, интеллектуальному развитию и работе в команде оказали сильное влияние на Джеффа.
На Кена столь же глубокое влияние оказал Бабатунде Огунайке своей работой о промышленном управлении технологическими процессами и применимости теории сложности и эмпиризма к разработке программного обеспечения.
Джефф и Кен не только создали Scrum, но и стали его попечителями и обеспечили его развитие.
Позднее они разработали способы ускорения систематической эволюции Scrum, основываясь на опыте Scrum-сообщества и входных данных. В «Исчерпывающем руководстве по Scrum» (Приложение 2 «Scrum-гайд») Джефф и Кен предлагают полное определение Scrum.
Доктор Джефф Сазерленд – CEO компании Scrum в Кембридже, предлагающей обучение, руководство и инструктаж для компаний по всему миру. Джефф – выдающийся выпускник Военной академии США и лучший стрелок в своем RF-4C командном классе Военно-воздушных сил США. Он также имеет ученую степень Стэнфордского университета и доктора философии медицинской школы Университета Колорадо.
В качестве старшего советника OpenView Venture Partners он помогает внедрять Scrum и гибкие методы разработки для всех портфельных компаний. Джефф расширял и улучшал Scrum во многих компаниях по разработке программного обеспечения и информационных технологий на протяжении многих лет.
Кен Швабер – профессионал в области разработки программного обеспечения, имеющий 40-летний опыт работы программистом, аналитиком, продукт-менеджером и владельцем бизнеса. В начале своей карьеры он безрезультатно пытался сделать успешным каскадный процесс разработки программного обеспечения, а позже создал ему альтернативу. Кен провел последние 20 лет, развивая Scrum и взаимодействуя с организациями по всему миру, чтобы помочь им воспользоваться этим методом. Кен – один из тех, кто участвовал в написании Agile Manifesto («Манифест гибкой разработки программного обеспечения»). Кроме того, он основатель Agile Alliance и Scrum Alliance. В настоящее время Кен работает над улучшением профессионализма людей, связанных с созданием программного обеспечения, через сайт Scrum.org. Кен и его жена Кристина живут в районе Бостона. Кен окончил Морскую торговую академию Соединенных Штатов Америки, а также курс дополнительного обучения в области компьютерных наук в Чикагском университете, прошел бизнес-обучение в Школе управления имени Джона Андерсона при Калифорнийском университете в Лос-Анджелесе.
Сноски
1
Апрель 11, 2005. Отчет Forrester Corporate Software Development Fails to Satisfy on Speed or Quality («Корпоративная разработка программного обеспечения не может удовлетворить скорости и качества»). Корпоративные разработчики продолжают разочаровывать: к осени 2004 года опрос Forrester 692 влиятельных участников индустрии, которые заказывают разработку программного обеспечения, показал, что около трети недовольны временем, затрачиваемым на разработку, и такое же количество недовольно качеством предоставляемых приложений. Одна пятая опрошенных недовольна обеими позициями.
(обратно)2
R. Stacey, Complexity and Emergence in Organizations (London: Routledge, 2001).
(обратно)3
H. Takeuchi and I. Nonaka, “The New New Product Development Game,” Harvard Business Review (Jan – Feb 1986).
(обратно)4
J. Johnson, Chaos Manifesto: The Laws of CHAOS and the CHAOS100 Best PM Practices (Boston: The Standish Group, 2011), 25.
(обратно)5
Согласно данным, представленным Джоном Сойером Кену Шваберу 10 ноября 2009 года на презентации Scrum в компании Hewlett-Packard в Пало-Альто, Калифорния.
(обратно)6
J. Greenfield, “The Case for Software Factories,” Microsoft Corporation, MSDN Library (Redmond, Washington, July 2004).
(обратно)7
I. Nonaka and H. Takeuchi, The Knowledge-Creating Company: How Japanese Companies Create the Dynamics of Innovation (London: Oxford University Press, 1995).
(обратно)8
A. J. Albrecht, “Measuring Application Development Productivity,” Proceedings of the Joint SHARE, GUIDE, and IBM Application Development Symposium, Monterey, California, October 14–17 (Armonk, New York: IBM Corporation, 1979), 83–92.
(обратно)9
Отзыв, опубликованный на сайте Amazon.com 14 августа 2007 года.
(обратно)10
Отзыв, опубликованный на сайте Amazon.com 14 августа 2007 года.
(обратно)11
Adobe проводит этот опрос каждые шесть месяцев.
(обратно)12
Ken Schwaber, The Enterprise and Scrum (Redmond, Washington: Microsoft Press, 2007).
(обратно)13
(обратно)
14
Издана на русском языке: Коттер Дж. П. Впереди перемен. М.: Олимп-бизнес, 2016.
(обратно)15
Издана на русском языке: Коттер Дж. П., Ратгебер Х. Наш айсберг тает. Как добиться результата в условиях изменений. М.: Альпина Бизнес Букс, 2012.
(обратно)16
“Boston Business Journal Honors Carbonite as One of Boston’s Best Places to Work.” (2011, June 28). Boston Business Journal.
(обратно)17
Шахтеры брали с собой в угольную шахту канареек, потому что те более чувствительны к оксиду углерода, чем люди. Когда канарейка переставала петь, наставало время уходить из шахты.
(обратно)18
Издана на русском языке: Ленсиони П. Пять пороков команды. Притчи о лидерстве. М.: Манн, Иванов и Фербер, 2017.
(обратно)19
Этот уровень обмена информацией и общения действительно может стать проблемой при реализации сервис-ориентированных архитектур, поскольку существующая организация, вероятнее всего, отражает предыдущую архитектуру из набора независимых приложений, отделы-владельцы которых не очень заинтересованы сотрудничать для получения более гибких сервисов для пользователей, что теперь становится необходимым.
(обратно)
Комментарии к книге «Софт за 30 дней. Как Scrum делает невозможное возможным», Кен Швабер
Всего 0 комментариев