Блог о саморазвитии

Философия Agile: от слов к делу

Философия Agile: от слов к делу

Цифровые технологии все больше проникают в нашу жизнь. И дарят нам не только новые сервисы и новые возможности собственно в Интернете и телекоммуникациях. Для того, чтобы новые сервисы, интернет-магазины, crm-системы, мобильные приложения, мессенджеры и прочие цифровые площадки максимально отвечали запросам пользователей, приходится думать не только над технической частью. И даже не только над методами разработки, а еще и над такими глобальными вещами, как философия.

Так, из IT-сферы к нам пришла философия Agile, основные принципы которой вполне пригодны для многих других областей. Что за философия и где она может быть полезна? Этому и посвящена наша сегодняшняя статья.

А прежде, чем мы перейдем непосредственно к теме, советуем обратить внимание на наши программы «Лучшие техники самообразования» и «ТРИЗ на практике: творческий подход на работе и в жизни». Это как два колеса у «велосипеда знаний», которые позволят вам удержать баланс между теорией и практикой и уверенно двигаться по дороге познания, наслаждаясь как непосредственно процессом получения новой информации, так и достигаемыми целями. «Изобретать велосипед» вам не придется – достаточно лишь изучить то, что изобрели до нас, и на этой базе двигаться вперед.

Что такое Agile: немного истории

Простой механический перевод слова «agile» вряд ли откроет полную картину того, что же это такое. Google-переводчик переводит «agile» как «гибкий», однако при обратном переводе тут же предлагает совсем другое слово «flexible», которое тоже означает «гибкий».

Разница тут, пожалуй, в том, что «flexible» подразумевает гибкость механическую, а термин «agile» гораздо шире и предполагает гибкость мыслительную или, если хотите, ментальную. В зависимости от контекста, «agile» можно понимать как «быстрореагирующий», «подвижный», «проворный», «маневренный».

Если попытаться представить все вышеперечисленное разом, это и будет наиболее адекватное понимание термина «agile». Причем тогда тут философия? Разобраться в этом нам поможет «История создания Agile-манифеста» [Д. Блинов, 2021].

Для начала вкратце, что такое Agile-манифест. Это документ, в котором закреплены основные принципы и ценности, которых следует придерживаться при разработке программного продукта. Далее мы расскажем о манифесте подробнее, а сейчас, как и обещали, акцентируем внимание на истории вопроса.

С развитием IT-технологий разработки становятся все масштабнее, и в этих условиях внятно сформулировать техническое задание (ТЗ) все сложнее. Заказчики зачастую сами не до конца понимают, что им нужно. И даже если бы существовала условная волшебная кнопка «Сделайте все хорошо», многие затруднились бы пояснить, что значит для них «все хорошо» и что именно должна выдать эта чудо-кнопка после нажатия.

Разработчики стали массово сталкиваться с ситуацией, когда доскональное следование пунктам ТЗ никак не гарантирует, что клиент останется доволен. В то же самое время, если клиенту вдруг придет в голову, что он запросил что-то не то, и нужно было бы запросить что-то другое, правки в ТЗ займут определенное время.

А еще они потребуют соблюдения определенных формальностей, потому что разработчики начали страховать себя от возможного недовольства клиентов путем фиксации всех требований в форме договора. К тому же остается неясным, что в этом случае делать с уже завершенным объемом работ и достигнутым результатом, если он «не вписывается» в новую концепцию.

Стало понятно, что «разруливать» сложившуюся ситуацию нужно на уровне общего подхода, а не просто локального оперативного решения проблем, возникающих в ходе конкретного проекта. Ввиду того, что ситуация обрела достаточно серьезный масштаб, и в ее решении было заинтересовано немало практикующих разработчиков, в начале «нулевых» в IT-кругах развернулась горячая дискуссия по данному вопросу.

Итогом стал Agile-манифест, который составили 17 основных инициаторов дискуссии, объединившихся в Agile Alliance. Окончательные детали Agile-манифеста были доработаны в ходе живой встречи на горнолыжном курорте Юта в феврале 2001 года. Итоговый документ был подписан 13 февраля 2001 года. Что он собой представляет? Давайте посмотрим.

Agile-манифест: 12 принципов и 4 ценности

Итак, Agile-манифест фиксирует основные ценности, которых следует придерживаться при разработке программного обеспечения и взаимодействии с заказчиками, и главные принципы, на которые следует опираться в процессе работы [agilemanifesto, 2001]. Какие же ценности проповедует Agile-манифест?

4 ценности Agile:

  1. Человек важнее, чем процесс и/или инструмент.
  2. Функционирующий продукт важнее, чем описывающая его документация.
  3. Сотрудничество важнее, чем согласование условий договора.
  4. Готовность меняться и менять важнее, чем первоначальное ТЗ.

Как метко замечено авторами манифеста, «при всем понимании важности того, что написано справа, более важным является то, что написано слева» [Agilemanifesto, 2001]. Вкратце это все можно представить так, что человек первичен, а то, что в компьютере, вторично. Поэтому сначала нужно решать вопрос с заказчиком, а потом уже что-то делать на уровне разработки, т.е. «в компьютере». Собственно, именно на это и указывают основные принципы Agile, которые мы представим в кратком изложении.

12 принципов Agile:

  1. Наивысшим приоритетом является удовлетворение запросов заказчика.
  2. Изменения допустимы на любой стадии.
  3. Новые функциональные продукты нужно выпускать по возможности чаще.
  4. В ходе проекта разработчики и заказчики должны работать сообща.
  5. Для профессионалов следует создать условия, обеспечить поддержку и доверять их профессионализму.
  6. Лучший способ коммуникаций – это непосредственное общение.
  7. Если продукт работает – это и есть основной показатель правильного направления усилий.
  8. Инвесторы, разработчики и пользователи должны иметь возможность поддерживать постоянный устойчивый ритм.
  9. Необходимо постоянно уделять внимание качеству и совершенствованию.
  10. Простота как искусство минимизации излишней работы является важным условием достижения результата.
  11. Самые лучшие требования, архитектурные и технические решения рождаются в команде, способной к самоорганизации.
  12. Команде следует постоянно искать способы повышения эффективности.

Таим образом, Agile-манифест утверждает итеративный подход в разработке программного обеспечения, при котором процесс работы идет параллельно с перманентным анализом полученных результатов и корректировкой последующих этапов работы. Каждая фаза проекта представляет собой повторяющуюся последовательность действий PDCA:

  • Plan (планирование).
  • Do (реализация).
  • Check (проверка).
  • Act cycle (корректировка при необходимости и последующий цикл действия).

По сути, Agile-разработка – это гибкий подход к решению задач и ориентация на клиента и его запросы как основополагающий фактор. В принципе, так или иначе, по данному пути должны идти все сферы бизнеса, заинтересованные в улучшении сервиса и обслуживания клиентов.

В некотором смысле философия Agile – это и есть философия бизнеса. В такой сугубо прикладной сфере, как бизнес, говорить о философии можно только в сочетании с конкретными методами, посредством которых реализуется Agile-проект.

Agile-методы и управление Agile

На бескрайних просторах Интернета время о времени появляются изыскания на тему «Что такое Agile: методология или философия?» [РБК, 2019]. В качестве примера можно еще привести «Обзор Agile. Что это: методология, метод или философия?» [А. Евдокимов, 2020].

Самым разумным будет разделять Agile как общность гибких методов или подходов и Agile-философию как таковую. Рассмотрим основные методы и подходы, применяемые в Agile-проектах.

Основные методы Agile:

  • Scrum.
  • Kanban.
  • eXtreme Programming (XP).
  • DSDM.
  • FDD.

Теперь подробнее о каждом методе.

Scrum-метод

Своим названием Scrum обязан популярной в Америке игре – регби. По аналогии с тем, как в этом виде спорта строятся линии обороны и нападения, а успех зависит от слаженной работы команды, так и в бизнесе все или почти все зависит от командной работы.

Впервые данный термин в контексте управления проектами применили японские исследователи Хиротаки Такеучи и Икуджиро Нонаки примерно в 80-х годах 20 столетия. Собственно как метод, Scrum представлен в 1993 году американским программистом Джефом Сазерлендом.

Свой метод он подробно описал в книге «Scrum. Революционный метод управления проектами» [Д. Сазерленд, 2017]. Данный метод взяли на вооружение такие гиганты рынка, как Microsoft, Amazon, Yahoo, Siemens Healthcare и другие.

При всей разнице специализаций и нюансов реализации Scrum имеет общие ключевые моменты, которых следует придерживаться независимо от того, торгуете ли вы промышленными товарами или производите медицинскую аппаратуру.

Основы Scrum:

  • Product Backlog (требования к проекту).
  • Sprint Backlog (требования, которые нужно выполнить в ближайший блок времени или этап, условно именуемый «спринт»).
  • Sprint Goal (цель «спринта»).
  • Sprint Burndown Chart (диаграмма, обновляемая по мере выполнения требований).

Чтобы метод работал, нужно определиться с несколькими ключевыми позициями:

  • Владелец продукта (Product Owner) или лицо, принимающее решение – крайне желательно, чтобы заказчика представлял кто-то один, и этот кто-то был уполномочен принимать решения, вносить правки и утверждать результат.
  • Команда разработчиков (Delivery Team), лучше до 10 человек, но не больше, чем число Данбара, что дает возможность быстрой координации.
  • Скрам-мастер (Scrum Master), который следит за ходом проекта.
  • Четкие требования к продукту (Product Backlog), как минимум на стартовом этапе, и приоритеты для каждого требования.
  • Отрезок времени (Sprint Backlog) на выполнение каждой задачи или блока родственных задач.
  • Ежедневные совещания не дольше 15 минут, где каждый отвечает на три вопроса (что сделано вчера? что планируется сегодня? что мешает выполнению задач?)
  • Обзоры готовой рабочей части программного продукта с участием всех заинтересованных сторон.
  • Подведение итогов после каждого блока задач.

Scrum – это один из основных Agile-методов, но далеко не единственный.

Kanban

В отличие от Scrum, в Kanban не важны такие нюансы, как Product Owner и Scrum Master. Если Scrum можно условно охарактеризовать как «подход структуры», в Kanban реализуется «подход баланса». Kanban предполагает полную прозрачность процесса и равномерное распределение обязанностей.

Такой подход практически исключает как простои, так и авралы. Вся «линейка процессов» делится не на фазы или циклы, а на стадии выполнения конкретных задач:

  • «Планируется».
  • «Разрабатывается».
  • «Тестируется».
  • «Завершается».

Кстати, часто по такому принципу проектируются crm-системы, и там сразу видно, в какой стадии находится та или иная операция: продажа, закупка, согласование проекта и т.д. По такому же принципу строится диаграмма Ганта, которая визуально синхронизирует основные составляющие процесса и стадию, в которой находится каждая из задач:

Автор метода Дэвид Андерсон подробно описал все нюансы своего детища в книге «Канбан. Альтернативный путь в Agile» [Д. Андерсон, 2017].

eXtreme Programming (XP)

Тут название говорит само за себя. Все процессы, которые обычно занимают несколько дней, а то и недель, становятся экстремально быстрыми и короткими. Так, в eXtreme Programming (XP) практикуется «парное программирование», когда один разработчик пишет код, а второй тут же просматривает написанное на предмет ошибок и неувязок. Тестирование проводится сразу после того, как написан самодостаточный блок кода, и тут же вносятся правки, если что-то не работает.

Более подробно метод описан автором в его книге «Экстремальное программирование. Разработка через тестирование» [К. Бек, 2002]. Мы вкратце изложим основные принципы метода:

  • Оформление кода ведется согласно единым для всей команды стандартам.
  • Тесты для тестирования кода пишутся до того, как будет написан код.
  • Так называемое «слушание» проводится с участием и разработчиков, и клиента, что позволяет «снять» все вопросы и удостовериться, что все друг друга поняли правильно.
  • Планирование следующего этапа делается как по окончании предыдущего, так и в ходе реализации текущего, если в этом есть необходимость.

Все эти меры позволяют справиться с меняющимися требованиями к разработке программного продукта и выдать оптимальный для заказчика результат.

DSDM

DSDM расшифровывается как Dynamic Software Development Method (метод разработки динамических систем). Он предполагает предпроектную стадию с планированием целей и ресурсов, собственно проект и постпроектную стадию, обеспечивающую успешное функционирование разработки.

9 принципов DSDM:

  1. Максимальное вовлечение заказчика как будущего пользователя.
  2. Право команды разработчиков самостоятельно принимать максимум решений без дополнительного согласования с руководством.
  3. Стремиться сделать хорошо и раньше всегда лучше, чем сделать идеально, но поздно.
  4. Обеспечить максимально быстрое решение критических проблем функционала программы принципиально важно.
  5. Обратная связь с заказчиком является ключевым фактором для достижения оптимального результата.
  6. Любые изменения являются обратимыми.
  7. Базовые требования устанавливаются до старта проекта.
  8. Тестирование должно быть максимально «вплетено» в процесс разработки.
  9. Тесное сотрудничество между участниками процесса – залог успеха.

Как видим, тут много общего с прочими методами, о которых мы говорили чуть раньше. Это вполне естественно, потому что все они относятся к Agile. Более подробно о методе можно прочитать в книге, которая так и называется «DSDM: Dynamic Systems Development Method» [J. Stapleton, 1999]. Невзирая на давность издания, основные постулаты актуальны и сегодня.

FDD

FDD расшифровывается как Feature Driven Development. Интересно, что метод появился раньше, чем Agile-манифест, однако полностью «вписывается» в философию Agile.

Этапы FDD:

  • Разработка общей модели, определение круга задач, которые должен решить продукт.
  • Составление списка необходимых функций системы на основе круга задач, для решения которых она предназначена.
  • Планирование разработки каждой функции.
  • Проектирование всех ранее определенных функций.
  • Собственно разработка.

Отметим, что в FDD уделяется заметно больше внимания предварительному моделированию системы, нежели в прочих методиках Agile. Что, впрочем, никак не умаляет достоинств и преимуществ прочих методов Agile.

Преимущества Agile

Главное преимущество Agile – это возможность быстро реагировать на изменения, коих в современном мире превеликое множество. Поскольку цифровой мир, так или иначе, является отражением реального мира, здесь изменения тоже происходят постоянно.

Оптимальный вариант применения Agile – это небольшие команды разработчиков, когда сотрудники занимают одно на всех помещение, и компании-заказчики, где решения принимает один человек.

Основные плюсы Agile-разработки:

  • Высокий уровень вовлеченности в процесс со стороны всех заинтересованных сторон, что исключает взаимонепонимание и проволочки.
  • Быстрые и предсказуемые сроки разработки.
  • Возможность сразу исправить то, что не работает или работает не так, как ожидалось.
  • Фокусировка на результате и ценности для бизнеса без риска скатиться в «искусство ради искусства».

И конечно, говоря о достоинствах, нужно сказать и о недостатках.

Недостатки Agile

Следует сразу сказать, что, говоря о недостатках, мы сфокусируемся исключительно на недостатках методов, потому что сама по себе философия Agile, предполагающая клиентоориентированность и гибкий подход к решению задач, вряд ли может считаться нерациональной хоть в какой-то части.

А недостаток Agile-методов, пожалуй, всего один: слабая применимость для больших проектов и организаций со сложной иерархией. Проще говоря, если каждый «чих» нужно согласовывать сначала с отделом маркетинга, потом с бренд-менеджером, затем с PR-директором, далее с генеральным директором компании-заказчика, и после этого еще ждать, когда все утвердят на заседании совета директоров, проводимом раз в месяц, ни один из Agile-методов тут не сработает.

Кроме того, реализация Agile-методов требует совместной работы всей команды, постоянного живого общения, а также частого личного присутствия заказчика, поэтому использование Agile-методик в условиях удаленной работы затруднено. Впрочем, руководители IT-компаний и так находят массу аргументов «Почему из офиса работать лучше и эффективнее» [В. Калитка, 2021].

Иногда к недостаткам Agile-разработки относят вероятность никогда не выпустить окончательный вариант программного обеспечения, потому что Agile предполагает постоянную корректировку планов и улучшение результата, что повышает риск избыточного стремления к перфекционизму в ущерб срокам [Я. Борута, 2017].

Эти опасения в известной степени надуманные. Если изначально четко прописана бизнес-цель, требования к продукту и критерии, на которые нужно ориентироваться при разработке, перфекционизм вряд ли кому-то грозит, и заказчики вполне будут удовлетворены работающим продуктом, «закрывающим» их «боли» и потребности, ради которых затевался проект.

Заметим, что «принцип минимальной готовности» полезен всегда, когда нужно опередить конкурентов и выпустить на рынок продукт, который рынок давно ждет. И как раз философия Agile и все методы Agile на это и нацелены.

Как бы там ни было, достоинства Agile явно перевешивают недостатки. Сфера применения Agile давно вышла за рамки IT-сферы, и теперь «гибкие методы» широко используются для разработки производственного оборудования, промышленных механизмов и даже товаров народного потребления. Так, примером может служить детская коляска Britax B-Agile с бескамерными колесами и складной рамой:

Эта коляска, а также ее модификация B-Agile М, давно полюбилась малышам и их родителям.

В целом, философия Agile для бизнеса – это:

  • Фокус на нуждах и целях клиентов.
  • Максимально простая структура команды.
  • Работа укороченными циклами.
  • Постоянная обратная связь с заказчиками.
  • Большой объем полномочий полномочия сотрудников.

Как говорится, «будь гибким, или твой бизнес умрет» [atlanty, 2021]. Мы желаем, чтобы ваш бизнес был бессмертным, непотопляемым и, конечно же, гибким и адаптивным ко всем изменениям. Мы приглашаем вас на наши программы «Лучшие техники самообразования» и «ТРИЗ на практике: творческий подход на работе и в жизни». А еще предлагаем подумать и ответить на вопрос по теме статьи:

Ключевые слова:,