Гибкость: быстро и легко двигаться.

Почти 20 лет назад, в 2001 году, несколько разработчиков программного обеспечения собрались на горнолыжном курорте в горах Юты, чтобы обсудить методы разработки программного обеспечения. Там были 17 человек: Кент Бек, Уорд Каннингем, Дэйв Томас, Джефф Сазерленд, Кен Швабер, Джим Хайсмит, Алистер Кокберн, Роберт К. Мартин, Майк Бидл, Ари ван Беннекум, Мартин Фаулер, Джеймс Греннинг, Эндрю Хант, Рон Джеффрис. , Джон Керн, Брайан Марик и Стив Меллор.

В качестве меры по отказу от документированных управляемых, регулируемых, запланированных и микроуправляемых методологий для разработки широко используемого программного обеспечения все эти разработчики ̶c̶e̶l̶e̶b̶r̶i̶t̶i̶e̶s̶ каким-то образом были связаны с различными упрощенными методологиями разработки программного обеспечения, такими как быстрая разработка приложений RAD (1991), унифицированный процесс UP (1994), метод разработки динамических систем DSDM (1994), Scrum (1995), кристально чистое и экстремальное программирование XP (1996 г.) и разработка на основе функций (1997 г.).

Итогом двухдневной встречи стало подписание известного Agile-манифеста:

  • Люди и взаимодействие важнее процессов и инструментов
  • Рабочее программное обеспечение, а не исчерпывающая документация
  • Сотрудничество с клиентами вместо переговоров по контракту
  • Реагирование на изменения вместо следования плану

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

Но если вы не хотите просто заявлять о себе как о agilist, и хотите получить приверженцев вместо врагов (скептиков), я обычно обращаюсь к Agile принципам, лежащим в основе манифеста. Они гораздо лучше выражают то, чего мы хотим достичь, и ценность, которую мы добавим. Это список из двенадцати принципов:

1.- Нашим наивысшим приоритетом является удовлетворение потребностей клиентов за счет своевременной и непрерывной поставки ценного программного обеспечения.

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

3.- Часто доставляйте работающее программное обеспечение, от пары недель до пары месяцев, с предпочтением более коротких сроков.

4.- Деловые люди и разработчики должны ежедневно работать вместе на протяжении всего проекта.

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

6.- Самый действенный и действенный метод передачи информации команде разработчиков и внутри нее - это личный разговор.

7.- Работающее программное обеспечение - это главный показатель прогресса.

8.- Гибкие процессы способствуют устойчивому развитию. Спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп бесконечно.

9.- Постоянное внимание к техническому совершенству и хорошему дизайну повышает гибкость.

10.- Простота - искусство максимизировать объем незавершенной работы - очень важна.

11.- Лучшие архитектуры, требования и проекты создаются самоорганизующимися командами.

12.- Команда регулярно размышляет о том, как стать более эффективной, а затем соответствующим образом настраивает и корректирует свое поведение.

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