Итак, получается, что мы не можем дать точное определение Agile. Но можем ли мы сравнить два продукта и узнать, какой из них "более гибкий"?
Мне кажется, можем.
Тут надо вспомнить зачем все затевалось. Изначальная идея была в том, чтобы мы могли включать изменения требований как можно чаще и как можно безопаснее. Метод борьбы - короткие итерации, автоматизация тестирования, командная работа. Цель - сделать так, чтобы продукт был как можно чаще готовым. В этом случае степени "гибкости" будут определятся частотой "готовности" вашего продукта, то есть как часто ваш продукт "potentially shippable", готов к поставке.
Иначе говоря, целью всех этих переживаний является не ГИБКИЙ ПРОЦЕСС, а ГИБКИЙ ПРОДУКТ. И тут мы можем уже кое-что померить!
Итак, несколько степеней готовности продукта
* Степень 0. Мой продукт никогда не бывает доделанным до конца
* Степень 1. Мой продукт полностью готов к поставке раз в год или реже (раз в год)
* Степень 2. Мой продукт полностью готов к поставке несколько раз в год (раз в квартал)
* Степень 3. Мой продукт полностью готов к поставке несколько раз в квартал (в конце итерации)
* Степень 4. Мой продукт полностью готов к поставке раз в день и чаще
Agile начинается со степени 3. Ваш продукт должен быть готов к поставке как минимум в конце итерации.
Мне кажется, правило очень простое, и 100%-ое. Правда, из него следует несколько не всем и не всегда приятных следствий.
* Применение практик Agile не делает ваш продукт Agile. Если вы сели на диету, это не значит, что вы стройный. Систематическое применение практик может сделать ваш продукт гибким со временем. И только, если вы к этому стремитесь.
* Не всегда степень 4 гибкости продукта адекватна по затратам.
* Есть виды бизнеса, где достижение высокой степени гибкости продукта намного легче, чем в других. Например, разработка небольшого сайта сильно отличается от разработки ERP системы. Имеет смысл сравнивать по гибкости продукты из одной "линейки". Само определение potentially shippable сильно различается для двух разных продуктов. Это зависит от допустимого количества и тяжести дефектов в production.
Границы применимости Agile
Если существуют наработанные практики достижения степени 3, то можно заявить, что Agile применим. Если нет, то речь скорее пойдет о применении практик Agile.
Что думаете?