предшественников аджайла в своей книге «Аджайл и итеративная разработка» (Agile & Iterative Development).
Но официальное название «аджайл» родилось в начале 2001 года, когда 17 лидеров по разработке программного обеспечения собрались на горнолыжном курорте Сноубёрд в штате Юта. Они обсуждали свои взгляды на разработку ПО в то время, когда неработающий водопадный подход был заменен тяжеловесной методологией RUP[6], но и она не привела к лучшим результатам по сравнению с традиционными процессами. Лидеры разработки шли различными путями и использовали разные методы, каждый из которых был воплощением новой парадигмы: скрам, экстремальное программирование, адаптивная разработка ПО, Crystal, разработка, управляемая функциональностью (Feature driven development), метод разработки динамических систем (DSDM) и другие.
В результате этой встречи было решено объединить общие принципы, убеждения и методы под одним названием «аджайл». Они были опубликованы как «Аджайл-манифест».
Слишком часто слышно о желании использовать аджайл. И слишком часто это желание подразумевает поиск волшебного решения, еще одного универсального решения для всех проблем. Именно поэтому я утверждаю, что «аджайла не существует». Аджайл – это не какой-то фиксированный процесс, метод или практика. Аджайл – это совокупность общих принципов, которые свойственны всем методам гибкой разработки ПО. Аджайл – это мышление, убеждения и предпочтения, выраженные в аджайл-манифесте.
Манифест помогает понять идеи, на которых основан аджайл. Если вы используете его как источник более глубокого понимания аджайла, я рекомендую посмотреть на 12 принципов[7], которые стоят за формулировками четырех ценностей.
1.3. ОПРЕДЕЛЕНИЕ АДЖАЙЛА
В отсутствие четкого определения я предпочитаю описывать аджайл с помощью трех его ключевых характеристик. Эти черты общие для всех гибких методов и типичны для данного способа работы:
■ движимый людьми;
■ итеративно-инкрементальный процесс;
■ мера успеха – ценность.
1.3.1. Движимый людьми
Аджайл – это не работа по плану, который описывает реализацию тщательно проанализированных, спроектированных и архитектурно разработанных требований. Аджайл признает, что требования изначально не могут быть предсказаны до мельчайших деталей.
В аджайле не бывает так, чтобы различные типы промежуточных результатов передавались в разные специализированные отделы и каждый из них работал отдельно от остальных.
Аджайл – это постоянное сотрудничество людей из всех необходимых отделов: ИТ, маркетинг, продажи, поддержка пользователей, и др. Аджайл, конечно, не признает традиционные разногласия между бизнесом и ИТ. Они оба необходимы для создания пригодного к использованию, полезного, обладающего ценностью ПО.
Чтобы сотрудничество, взаимодействие и общение были эффективными, нужен другой стиль управления. Например, когда командам ставятся цели и указывается направление, а далее происходит самоуправление в определенных границах. Контроль происходит за счет установки границ.
Сотрудничество и фасилитация заменяют традиционные командно-административные механизмы ежедневного инструктирования людей, которые бездумно исполняют микрозадания, и тоталитарных руководителей, которые осуществляют всепроникающий контроль.
Аджайл – это когда людей уважают за их креативность, интеллигентность и способность к самоорганизации. Их уважают за готовность понимать и решать проблему без церемоний и бюрократии. Обилие церемоний лишь заменяет интеллектуальное сотрудничество, инновацию и ответственность людей на бюрократию, результаты на бумаге, перекладывание задач с одного ответственного на другого и административные отговорки.
Людей уважают за то, что они могут работать в устойчивом темпе бесконечно долго. Работа в аджайле организована без авралов, поэтому темп может быть примерно одинаковым, устойчивым, сколь угодно долго.
1.3.2. Итеративно-инкрементальный процесс
Аджайловые процессы – это не игра без правил. Эти процессы определенны и требуют высокой дисциплины.
Продукты создаются слой за слоем, в этом заключается «инкрементальность» процесса: каждый новый слой создается из расширений, улучшений, удалений и модификаций. Уже созданные слои и продукт целиком часто пересматриваются, чтобы удостовериться в целостности продукта, – это «итеративность».
Аджайл требует от всех игроков большого внимания к качеству и мастерству. Аджайл не разделяет идею о том, что качества продукта могут быть воплощены в документах или описаниях на бумаге, потому что эти описанные качества никак не соотносятся с конечным результатом и готовым к выпуску продуктом.
Итеративно-инкрементальный процесс необходим, так как требования и реализация – независимо от того, сколько времени, энергии и денег потрачено на то, чтобы предсказать их изначально, – подвержены изменениям. Назовем лишь несколько причин: рынки и конкуренты развиваются; пользователи начинают понимать, что им действительно нужно, только тогда, когда получают это в свои руки; корпоративные стратегии изменяются. Все это требует осознанности и открытости к изменениям.
В противоположность традиционному процессу, изменения не исключаются из гибкого процесса. Новые идеи, меняющиеся точки зрения и приоритеты – сердце аджайла. Суть аджайла в расширении, развитии и последующем постепенном изменении требований, планов, идей, архитектуры и дизайна. Изменение не разрушительно, потому что оно составляет естественную часть гибкого способа работы. Аджайл поощряет изменения, так как это источник инноваций и улучшения.
1.3.3. Мера успеха – ценность
Прогресс при разработке софта не может быть измерен или гарантирован простым соответствием предустановленным планам и вехам, документам, подписями, согласованиями и другими церемониальными обязательствами, как это бывает в индустриальной парадигме. Аджайл вводит новые способы измерения успеха и продвижения в работе.
В аджайле успех и степень продвижения при разработке софта могут быть определены только путем частых проверок работающих версий софта (а не его промежуточных описаний) и фактической ценностью, которую продукт представляет для использующих его людей.
Естественной составляющей продуктовой разработки является то, что люди становятся уверены в удобстве продукта и его пригодности только тогда, когда попробуют его в действии. Никакая письменная документация или виртуальный процесс не заменят этого. Поэтому так важен итеративно-инкрементальный процесс с регулярной обратной связью с пользователями: измерением воздействия продукта на них, их оценки. Циклы обратной связи выступают как источник входной информации для дальнейшего развития продукта.
1.4. ИТЕРАТИВНО-ИНКРЕМЕНТАЛЬНЫЙ КОНТИНУУМ
При гибком подходе время делится на интервалы – итерации, периоды с фиксированными датами начала и завершения. У техники тайм-боксинга есть много преимуществ, одно из главных – фокус. Благодаря этой технике тайм-менеджмента можно пережить поворотные моменты или резкие изменения. Во время регулярных проверок учитываются извлеченные уроки и работа представляет собой непрерывный поток от итерации к итерации. Основная цель каждой итерации – создание обладающих ценностью работающих версий продукта не позднее чем в конце итерации и получение быстрой обратной связи.
В аджайле вся разработка организована таким образом, чтобы оптимизировать способность отвечать на бизнес-вызовы и использовать их.
Ценность – это ответ на требования пользователей, рынка и бизнеса, общая мера продвижения вперед и успеха. Ценность является внутренней гипотезой, предположением до тех пор, пока продукт не будет выпущен на рынок. Выпуск версий продукта на рынок – единственный способ проверить предположение относительно ценности продукта. Регулярный выпуск на