Многие вещи называют Agile - особенно люди, которые что-то продают. Но Agile Manifesto дает понять, что это не методология. Это не конкретный способ разработки программного обеспечения. Это не рамки или процесс. Фактически, большинство вещей, которые продаются как Agile, имеют тенденцию упускать из виду то, чем на самом деле является Agile.

Agile - это набор ценностей и принципов.

Большая часть дискуссий вокруг Agile связана с следованием различным практикам, использованием различных методологий и даже разработкой с использованием определенных инструментов. Например, в то время как команда может обнаружить, что ежедневная стендап полезна, стендап является «гибким» только в той степени, в которой он является результатом команды, которая следует принципам и ценностям Agile.

Когда вы это понимаете, легко увидеть, что Agile на самом деле представляет собой совокупность убеждений, которые команды могут использовать для принятия решений о том, как выполнять работу по разработке программного обеспечения. Хотя это означает, что термин Agile подвергается большим злоупотреблениям, когда люди заявляют, что тот или иной способ быть гибким, это также означает, что если вы действительно понимаете, что такое Agile, он на удивление гибок.

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

Agile Manifesto

Agile Manifesto состоит всего из 68 слов и просто говорит о том, что подписавшие обнаружили, что они могут лучше разрабатывать программное обеспечение, оценивая элементы в левой части списка больше, чем элементы в правой части.

В Манифесте Agile говорится:

Мы открываем лучшие способы разработки программного обеспечения, занимаясь этим и помогая в этом другим. Благодаря этой работе мы пришли к выводу, что:

Люди и взаимодействие важнее процессов и инструментов

Рабочее программное обеспечение, а не исчерпывающая документация

Сотрудничество с клиентами вместо переговоров по контракту

Реагирование на изменения вместо следования плану

То есть, хотя предметы справа имеют ценность, мы больше ценим предметы слева.

Принципы гибкости

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

Принципы таковы:

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

Гибкие решения

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

Команда, которая следует Agile, сказала бы:

«Хотя это может сработать, разве это не противоречит нашему убеждению, что мы должны ценить сотрудничество с клиентами, а не переговоры по контракту? И не нарушает ли это наш принцип, согласно которому разработчики должны работать с владельцами бизнеса каждый день? Как мы можем принять это решение в соответствии с нашими ценностями и принципами, которым мы следуем? »

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

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

Когда у вас есть команда, которая следует Agile, она будет принимать сотни решений каждую неделю, как описано выше.

Вот что значит быть Agile: каждое решение принимается на основе принципов и ценностей, которым решила следовать команда.

Быть гибким

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

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

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

Команда может начать с SCRUM, а позже обнаружить, что Канбан лучше подходит для предоставления ценности своим клиентам. На ежедневном собрании команда может начать вставать, а позже решит, что всем будет лучше сидеть. Другая команда могла бы начать использовать Покер планирования для оценки размера истории, прежде чем отказаться от очков истории и вместо этого разделить истории так, чтобы они находились где-то в одном диапазоне.

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

Подведем итоги

Так что же такое Agile?

Agile - это набор ценностей и принципов.

Как команда становится гибкой?

Они принимают свои решения на основе ценностей и принципов Agile.

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

Спасибо за прочтение! Эта статья изначально была опубликована в моем блоге, и вы можете найти больше подобных видео на моем канале Youtube.