Читать книгу Agile. Практическое руководство - Коллектив авторов - Страница 5
2. Введение в agile
Оглавление2.1 Поддающиеся определению работы в сравнении с работами с высокой неопределенностью
Характер работ по проекту меняется в диапазоне от поддающихся определению работ до работ с высокой неопределенностью. Для проектов с поддающимися определению работами характерны четкие процедуры, которые на практике доказали свою успешность при осуществлении аналогичных проектов в прошлом. Производство автомобиля, электроприбора или строительство дома после завершения этапа проектирования являются примерами поддающихся определению работ. Связанные с такими работами область производства и процессы, как правило, совершенно ясны, и неопределенность исполнения и риска обычно низкая.
Новый проект, разрешение проблем и работы, которые ранее никогда не производились, требуют предварительного исследования. В совместной работе и разрешении проблем для выработки решения требуется участие экспертов по предметным областям. В качестве людей, которым приходится иметь дело с работами с высокой неопределенностью, можно назвать, например, инженеров программных систем, разработчиков, врачей, учителей, юристов и многих технических специалистов, которые решают возникающие проблемы. Поскольку многие поддающиеся определению работы автоматизированы, командам проектов поручают больше работ по проектам, связанным с высокой степенью неопределенности, где требуется использовать методы, описанные в настоящем Руководстве.
Проекты с высокой неопределенностью характеризуются высокими темпами изменений, сложностью и уровнем риска. В случае применения традиционных предиктивных подходов, которые предназначены для предварительного определения практически всех требований и осуществления управления изменениями с помощью процесса запросов на изменения, указанные особенности могут привести к возникновению проблем. Вместо этого были созданы подходы Agile для выяснения реализуемости требований в рамках коротких циклов и быстрой адаптации по результатам оценок и обратной связи.
2.2 Agile-манифест и образ мышления agile
Ведущие эксперты отрасли разработки ПО оформили движение agile еще в 2001 г., когда был опубликован Agile-манифест разработки программного обеспечения (Manifesto for Agile Software Development) (см. рис. 2–1).
© 2001, авторы Agile-манифеста
Рис. 2–1. Четыре ценности Agile-манифеста
Двенадцать уточняющих принципов, которые вытекают из этих ценностей, представлены на рис. 2–2.
Рис. 2–2. Двенадцать принципов, вытекающих из Agile-манифеста
Хотя эти принципы впервые возникли в отрасли разработки ПО, за прошедшее время они нашли применение во многих других отраслях.
Это сочетание образа мышления, ценностей и принципов и составляет подход agile. Различные варианты подходов agile, которые применяются в настоящее время, имеют общие корни с образом мышления, ценностями и принципами agile. Эта взаимосвязь показана на рис. 2–3.
Рис. 2–3. Взаимосвязь между ценностями, принципами и общепринятыми практиками Agile-манифеста
Как следует из рис. 2–3, созданная на основе идей Ахмеда Сидки (Ahmed Sidky) модель формулирует agile как образ мышления, определяемый на основе ценностей Agile-манифеста, основанный на принципах Agile-манифеста и получивший применение в разнообразных практиках. Стоит заметить, что, хотя понятие agile стало входить в общее употребление после публикации Agile-манифеста, те подходы и методы, которыми пользуются команды проектов сегодня, применялись за много лет, а в некоторых случаях – даже десятилетий до его публикации.
Подходы agile и методы agile являются обобщающими понятиями, которые описывают различные фреймворки и методы. На рис. 2–4 понятие agile показано в контексте и наглядно представлено как общий термин, относящийся к любому типу подхода, метода, фреймфорка, методики или практики, в которых применяются ценности и принципы Agile-манифеста. На рис. 2–4 agile и метод «канбан» также представлены как подсистемы, формирующие суть бережливого подхода. Это объясняется тем, что они являются получившими собственные названия примерами бережливого мышления, где применяются общие концепции бережливого подхода, такие как: «основное внимание на ценности», «партии малого размера» и «устранение потерь».
Является ли agile подходом, методом, практикой, методикой или фреймворком? В зависимости от конкретной ситуации может использоваться любое из этих понятий. В настоящем Руководстве используется понятие «подход», за исключением случаев, когда использование другого понятия очевидно является более правильным.
Рис. 2–4. Agile – объединяющее понятие для многих подходов
В общем, существует две стратегии применения ценностей и принципов agile. Первая состоит в принятии формального подхода agile, который разработан специально и практически подтвержден для достижения желаемых результатов. Затем необходимо уделить время, чтобы изучить и понять подходы agile, прежде чем изменять или адаптировать их. Преждевременная или необдуманная адаптация может свести к минимуму результаты применения этого подхода и, соответственно, ограничить выгоды от них. (См. в приложении X2 о соображениях по адаптации).
Вторая стратегия состоит во внесении изменений в практики проекта таким образом, чтобы это соответствовало контексту проекта, в целях обеспечения прогресса по главной ценности или принципу. Следует использовать временные рамки для создания свойств или использовать специальные методы для их итеративного уточнения. Следует рассмотреть возможность разделения одного большого проекта на несколько релизов, если это поможет в осуществлении проекта в конкретном контексте. Необходимо внести изменения, которые помогут в успешной реализации проекта; при этом не требуется, чтобы эти изменения были частью формальных практик организации. Конечная цель состоит не в том, чтобы быть agile, только лишь ради этого, а в том, чтобы обеспечить непрерывную поставку ценности заказчикам и добиться лучших конечных результатов для бизнеса.
2.3 Бережливый подход и метод «канбан»
Взаимосвязь между бережливым мышлением, подходом agile и методом «канбан» можно представить себе, например, если рассматривать agile и метод «канбан» как производные бережливого мышления. Другими словами, бережливое мышление включает более широкий набор характеристик, имеющий общие свойства с подходом agile и методом «канбан».
Эти общие свойства весьма схожи и сосредоточены на поставке ценности, уважении к людям, сокращении потерь, обеспечении прозрачности, адаптации к изменениям и непрерывном совершенствовании. В некоторых случаях команда проекта может счесть полезным объединить вместе различные методы: все то, что может принести пользу организации или команде, следует сделать, независимо от его природы. Цель состоит в том, чтобы получить наилучший конечный результат, независимо от применяемого подхода.
Метод «канбан» разработан на основе оригинальной системы бережливого производства и используется в частности в сфере умственного труда. Он появился в середине 2000-х гг. в качестве альтернативы методам agile, которые в то время преобладали.
Метод «канбан» является менее директивным в сравнении с некоторыми подходами agile, и менее «дезорганизующим», поскольку является оригинальным подходом, основанным на принципе «начинай прямо там, где находишься». Командам проектов сравнительно просто начать применять метод «канбан» и затем перейти к более прогрессивным подходам agile, если они сочтут это необходимым или целесообразным. Более подробно метод «канбан» описан в приложении А3, содержащем обзор фреймворков подхода agile и бережливого подхода.
ПРАКТИЧЕСКИЙ ПРИМЕР
Ведутся сейчас и, вероятно, еще долго будут идти споры о методе «канбан» и о том, куда его отнести – к бережливому подходу или движению agile. Он был задуман в рамках и в связи с бережливым производством, но широко применяется в средах agile.
2.4 Неопределенность, риск и выбор жизненного цикла
Некоторые проекты отличаются значительной неопределенностью при определении требований проекта и того, как исполнить эти требования, используя имеющиеся знания и технологии. Эти неопределенности могут стать причиной увеличения темпов изменений и усложнения проекта. Эти свойства наглядно представлены на рис. 2–5.
По мере усиления неопределенности проекта происходит также увеличение риска возникновения необходимости доработок и применения другого подхода. Для снижения уровня этих рисков команды выбирают жизненные циклы, которые позволяют им заниматься проектами с высокой степенью неопределенности путем исполнения небольших инкрементов работы.
При использовании небольших инкрементов команды получают возможность проверять результаты своей работы и вносить изменения в то, что предстоит сделать. Когда команды производят поставки небольшими инкрементами, улучшается их способность понимать подлинные требования заказчиков, и делать это в более короткие сроки и точнее, чем в случае работы по неизменным письменным спецификациям.
Рис. 2–5. модель неопределенности и сложности на основе модели сложности Стейси (Ralph D. Stacey)
Команда может без особых затруднений планировать проект и управлять им, имея четкие и стабильные требования, а также ясные и легко решаемые технические задачи. Однако, по мере нарастания неопределенности в проекте, вероятность необходимости внесения изменений, бесполезной работы и доработок также возрастает, что влечет убытки и потерю времени.
Некоторые команды используют развитые жизненные циклы проектов, где используются как итеративные, так и инкрементные подходы. Многие команды обнаружили, что когда они изучают требования итеративно и осуществляют поставки чаще и по частям (инкрементно), им становится легче адаптироваться к изменениям. Такие итеративные и инкрементные подходы позволяют сократить объемы потерь и доработок, поскольку команда получает обратную связь. В этих подходах используются:
♦ очень короткие циклы обратной связи,
♦ частая адаптация процесса,
♦ пересмотр приоритетов,
♦ регулярное обновление планов,
♦ частые поставки.
ПОЛЕЗНЫЙ СОВЕТ
Что означают определения проектов «простой», «усложненный» и «сложный»? Возьмем большие проекты, например, проект строительства Большого бостонского тоннеля. На первый взгляд, этот проект выглядит довольно очевидным: просто переместить автомагистраль с эстакады под землю. Был заключен генеральный договор о требованиях (см. ось Y на рис. 2–5). Степень неопределенности в отношении порядка исполнения проекта была невысокой, пока не приступили к его осуществлению. И, как это часто бывает с большими проектами, на всем протяжении осуществления этого проекта постоянно возникали неприятные сюрпризы.
Когда команда ведет работу над проектом, причем возможности поставки промежуточных результатов или создания прототипов практически отсутствуют, она, скорее всего, будет использовать для управления проектом предиктивный жизненный цикл. Команда может вносить изменения с учетом новых обстоятельств, но не сможет использовать подходы agile для управления итеративно возникающими новыми требованиями или осуществлять инкрементные поставки с целью обратной связи.
Проект строительства Большого тоннеля, безусловно, не был простым. Однако при осуществлении многих проектов, начало которых лежит в нижней левой части Модели сложности Стейси, реальная возможность перейти к другим моделям практически отсутствует. Необходимо оценить проект с точки зрения как требований, так и средств поставки, чтобы определить наилучший подход при выборе жизненного цикла для данного проекта.
Эти итеративные, инкрементные agile-подходы хорошо работают в проектах, которые связаны с использованием новых или инновационных инструментов, методов, материалов или областей применения. (См. раздел 3, посвященный вопросам выбора жизненного цикла). Они также хорошо работают в проектах, которые:
♦ требуют проведения НИОКР,
♦ имеют высокие темпы изменений,
♦ имеют неясные или неизвестные требования, неопределенность или риск,
♦ имеют конечную цель, которую сложно описать.
Создав небольшой инкремент и проведя затем его испытания и исследование, команда может изучить неопределенность с незначительными затратами и в короткий срок, снизить уровень риска и добиться поставки максимальной бизнес-ценности. Центральными вопросами в отношении неопределенности могут быть: пригодность продукта и требования (создается ли именно тот продукт, который нужен?); техническая возможность и исполнение (возможно ли создать этот продукт таким образом?) или процесс и кадры (эффективный ли это способ работы команды?). Все три указанные характеристики (спецификация продукта, производственные возможности и пригодность процесса) обычно включают элементы высокой неопределенности.
Однако применение итеративных и инкрементных подходов имеет известные ограничения. В случаях, когда высока степень неопределенности, как технической, так и связанной с требованиями (верхняя правая сторона на рис. 2–5), проект выходит за пределы «сложного» и становится «хаотическим». Чтобы иметь уверенность в возможности осуществления проекта, необходимо установить одну из переменных неопределенности.