Несмотря на то, что Agile методологии сегодня уже давно не являются чем-то действительно новым и революционным, нельзя сказать, что это полностью понятая и изжившая себя концепция. По-прежнему не так уж много компаний на российском рынке практикуют этот подход и по-прежнему появляются новые исследования в этой области. Но речь сейчас не о настоящем этого семейства методологий и даже не о будущем. Мы решили вспомнить, как все начиналось. Точнее даже не вспомнить, а провести анализ чуть дальше, чем авторы Agile Manifesto.
Agile идеи на самом деле возникли давным-давно, а люди, которые критиковали традиционные (на тот момент современные и единственные) подходы к реализации ИТ проектов, делились ничем иным, как будущими принципами Agile подхода. К сожалению, никто особенно не воспринимал эти идеи всерьез, поэтому потребовалось более 30 лет, чтобы просто идеи и высказывания переродились во что-то действительно стоящее.
Анализ показал, что в литературе встречается упоминание вышеописанных принципов аж в кейсах 1957 года (в работе «Iterative and Incremental Development: A Brief History»). В том же исследовании практики применения итеративного подхода к разработке были также адресованы к кейсам 1970х годов.
Так что же стоит за Agile методами? Когда они зародились? Что стояло у истоков концепции «Agile Thinking»?
Исследования говорят, что этот подход возник как бурная реакция профессионалов в отрасли разработки софта, которая «отзеркалила» динамично меняющийся бизнес. Но на деле все случилось раньше. Ларман и Базилини предположили, что, возможно, истоком для развития концепции стали проекты NASA и IBM Federal Systems Divisions (FSD) в 1950х годах. Проект «Mercury», который реализовали NASA, судя по отчетности, был организован в виде “коротких полдневных итераций”. Кроме того, в этом проекте говорится, что сначала планировались и прописывались тесты, а только после этого писался код, чтобы эти тесты пройти. Похоже на зарождение XP (Extreme Programming)? Вполне возможно. Кроме того, каждая мини-итерация требовала интеграции кода и прохождения тестов. Налицо рождение Continuous Integration.
Еще одна знаменитая работа, посвященная критике традиционных методов разработки, — это «Stop the life-Cycle, I Want to get off» (Остановите жизненный цикл, я хочу сойти). Автор выдвинул ключевое предположение — укол в сторону традиционных методов-, что большинство пользователей не имеют четкого представления о своих потребностях. Он предложил модель, которую назвал Non-Cyclical Hollywood Model. Эта модель основана на 3 ключевых принципах с точки зрения автора:
- Цели системы важнее, чем требования (System objectives are more important than system requirements).
- Физический объект транслирует больше информации, чем текст или картинка стоит тысячи слов (A physical object conveys more information than a written specification or a picture is worth a thousand words).
- Цели системы плюс физические демонстрации помогут создать успешный продукт (System objectives plus physical demonstrations will result in a successful product).
А теперь напомним вам Agile Manifesto:
- Люди и взаимодействие важнее процессов и инструментов.
- Работающий продукт важнее исчерпывающей документации.
- Сотрудничество с заказчиком важнее согласования условий контракта.
- Готовность к изменениям важнее следования первоначальному плану.
Agile Manifesto — 2001 год. Stop the life-Cycle, I Want to get off — 1982 год. По-настоящему стоящая концепция никогда не появляется просто так, ее создает профессиональное и научное сообщество. Иногда это требует десятков лет и тысяч завершенных проектов по всему миру, но результат того стоит.