Искусство Agile-разработки. Теория и практика гибкой разработки ПО
Шрифт:
Исключите напрасную трату времени и усилий. Выполняйте работу маленькими обратимыми шагами. Примите возможность неудачи и стройте ваши планы с учетом вероятности их быстрого провала. Максимизируйте невыполненную работу. Стремитесь к производительности, а не эффективности.
Стремитесь к техническому совершенству. Обеспечивайте гибкость с помощью технического качества. Закладывайте в проект то, что известно, а не то, что предполагаете. Начинайте с простого и добавляйте сложное, только если это будет реально необходимо. Создавайте системы, которые легко развивать, даже (и особенно) в непредвиденных направлениях.
• Совершенствуйте
Agile определяется Манифестом, но сам Манифест – лишь начальная точка. Agile работает потому, что люди заставляют его работать. Они берут идеи Agile, адаптируют их к своим ситуациям и не перестают совершенствоваться.
Почему Agile терпит неудачу
Agile начинался как общественное движение. Первоначально он был успешным в значительной степени благодаря программистам, стремящимся к лучшим результатам и лучшему качеству жизни. По мере роста этого успеха акцент сместился с основополагающих идей в сторону ажиотажа. Вместо того чтобы сказать: «Давайте добьемся лучших результатов, адаптируя наши планы и ставя интересы людей превыше всего», – лидеры компаний стали говорить: «Все обсуждают Agile. Дайте мне этот Agile».
Дело в том, что нет такого Agile, который можно было бы где-то взять. Это просто набор идей. Существуют специфические подходы Agile, такие как экстремальное программирование и Scrum, которые могут вам объяснить, как быть Agile, но вам все же придется принять лежащую в его основе философию.
А для многих организаций эта основополагающая философия (адаптировать планы и ставить интересы людей превыше всего) на самом деле реально чуждая.
Карго-культы
Корни этой истории уходят в 1940-е [8] , когда американские войска высадились на далеком острове. Местные жители никогда не встречались с современной цивилизацией, и люди и материалы, привезенные союзными войсками, изумили аборигенов. Они наблюдали, как солдаты строили взлетно-посадочную полосу и башню управления воздушным трафиком, надевали наушники и вызывали с небес на землю больших металлических птиц, нагруженных ценным грузом (карго). Когда птицы приземлялись, часть груза распределялась между всеми островитянами, благодаря чему те жили в благополучии и комфорте.
Однажды войска покинули остров, и большие металлические птицы перестали прилетать. Успевшие привыкнуть к комфорту островитяне сплели из бамбука собственную взлетно-посадочную полосу. Они построили высокую платформу, посадили на нее своего вождя и надели ему на голову кокосы, которым придали форму наушников. Но как бы ни старались островитяне, большие металлические птицы так больше никогда и не вернулись.
8
Впервые я прочел эту историю в трудах Ричарда Фейнмана, где в числе прочего была представлена его речь на церемонии вручения дипломов в Калтехе в 1974 году [Feynman1974]. История основана на реальных ритуалах, практиковавшихся в Меланезии после Второй мировой войны.
Трагедия карго-культа – в его приверженности к поверхностным, внешним проявлениям какой-либо идеи в сочетании с полным непониманием того, как эта идея работает на самом деле. В той истории островитяне воссоздали все элементы по отдельности: взлетно-посадочную полосу, башню, наушники, – но не знали обо всей инфраструктуре, благодаря которой прибывали самолеты.
Такая же трагедия случается с Agile. Люди хотят Agile-карго: лучшие результаты, больше наглядности происходящего процесса, меньше неудач бизнеса. Но они не понимают лежащую в основе всего этого философию и зачастую не согласились бы с ней, даже если бы поняли. Они хотят купить Agile, но идею нельзя купить.
Что можно купить, так это внешние символы Agile. Стендап-митинги! Истории! Инструменты! Сертификации! Есть множество вещей с маркировкой Agile и достаточно людей, жаждущих вам их продать. Их часто продают как элементы «корпоративного уровня», что является способом сказать: «Не беспокойтесь, вам не придется ничего менять». Неудобные идеи, вроде «адаптивного планирования» или «ориентированности на людей», игнорируются.
Так и получается карго-культ. Много действий, ноль результата. Относящаяся к Agile составляющая отсутствует.
«В моей предыдущей компании огромное количество человеко-часов тратилось на совещания».
«Из-за этого [Agile] целая команда (30+ человек) лишилась работы, поскольку они не произвели почти ничего в результате почти года работы».
«Все это [Agile] означает, что разработчиков просто обманули, когда проект изменился… за день до поставки».
Слово Agile – повсюду. Идеи Agile – нет. Это вечный самообман для многих: единственный Agile, который они знают, – это карго-культ Agile.
Настало время это исправить. В этой книге я расскажу вам, как применять идеи Agile по-настоящему. Будьте начеку, чтобы не поддаться поборникам карго-культа Agile, которых вы встретите в книге. Они покажут вам, как делать не надо.
Готовы? Поехали.
Глава 2. Как быть Agile
Как перейти от нагромождения Agile-идей к реальным, действующим Agile-командам?
Нужна практика. Очень много практики.
Практика Agile
У каждой команды есть свой подход к работе – процессы, или методы, которым она следует, зачастую формально не задокументированы. Эти методы отражают лежащую в их основе философию разработки программного обеспечения, хотя она не всегда бывает четко сформулирована и не обязательно последовательна.
Чтобы быть Agile, вам нужно изменить свои методы так, чтобы они стали отражать философию Agile. Это одновременно и проще, и сложнее, чем кажется. Это просто, поскольку в большинстве случаев вы можете начать с одного из готовых Agile-методов, например, представленного в этой книге. И это сложно, так как вам понадобится перестроить свой стиль работы, а это подразумевает изменение многих привычек.
Сообщество Agile называет эти привычки практиками. Им посвящена значительная часть данной книги. Под практиками подразумеваются сессии планирования, автоматизированные сборки и демо для стейкхолдеров. Большинство этих практик существует десятилетиями. В методах Agile они скомбинированы уникальным образом – выделяются компоненты, поддерживающие философию Agile, отбрасываются остальные и добавляется ряд новых идей. В результате получается экономичный, эффективный, взаимоусиливающий комплект.