«Открытые системы»

В Москве провел семинары автор концепции экстремального программирования Кент Бек
Кент Бек: «Суть agile-разработки — в возможности быстро реагировать на изменения»

Компания RUSSEE, продолжающая знакомить российских разработчиков с гуру мировой программной индустрии, запланировала на текущий год целую серию мероприятий. Начало ей положили семинары создателя концепции экстремального программирования (Extreme Programming, XP) Кента Бека. Идеям XP уже десять лет, и Бек, являясь основателем и директором института Three Rivers Institute и сотрудником компании Agitar Software, продолжает их развивать и активно продвигать. Он сам занимается практическим программированием, пишет книги по XP и проводит профессиональные тренинги. Московские «гастроли» Бека заняли три дня, два из которых были посвящены практике применения принципов XP, и один — общим идеям «скорой» (agile) разработки, одним из направлений которой является XP, и тем преимуществам, которые они способны дать индустрии программного обеспечения.

Термин agile появился в 2001 году, когда представители нескольких нетрадиционных направлений в программировании собрались, чтобы сформулировать общие принципы, которыми они руководствуются. Бек объясняет его суть как возможность быстро реагировать на изменения условий разработки — изменения в бизнесе заказчика и разработчика, влекущие за собой изменения в требованиях к программному проекту, технологические изменения и т. д. Эта общая идея подразумевает следование нескольким принципам. Команда, которая хочет придерживаться данного подхода, должна стремиться работать с меньшим количеством дефектов. Эту ключевую проблему разработки Бек предлагает начинать решать с изменения менталитета, отношения к процессу — разработчик должен рассматривать ошибки как недопустимую аномалию.

Надо заметить, что в подходах Бека к совершенствованию процесса разработки, сформулированных на семинаре, доминировали не технические, а «общечеловеческие» принципы. Так, принцип формирования доверительных отношений между членами команды разработки и, что не менее важно, между заказчиком проекта и разработчиками. В этом случае, например, команда сможет избежать требований со стороны заказчика готовить тяжелую, предельно детализированную документацию, которая неизбежно замедляет ход разработки. Принцип доверия, по мнению Бека, может помочь решить и давно назревшую проблему снижения престижности процесса программирования, глобальной потери доверия общества к программной индустрии, которую продолжают характеризовать как ненадежную, связанную с большим количеством срывов проектов, неспособную качественно и в срок выполнять взятые на себя обязательства.

Доверие подразумевает открытое общение между разработчиками и заказчиками, формирование стиля разработки, в котором продукт, его ценность создаются совместными усилиями членов команды при непосредственной заинтересованности и участии будущего пользователя. И еще один «краеугольный камень» скорой разработки — частые внедрения программного продукта, которые позволяют быстрее определять те элементы решения, которые уже не удовлетворяют изменившимся условиям бизнеса заказчика, и оперативно исправлять их.

Бек проанализировал основные тенденции в современной индустрии разработки программного обеспечения. По его мнению, их три. Во-первых, это сокращение циклов разработки. Во-вторых, превращение результатов программирования в ходовой товар как следствие доступности дешевой «рабочей силы» в Индии, Китае и России и общего падения спроса на сложную разработку благодаря возможности собирать прикладные системы из готовых компонентов. Третья тенденция — все более активное проникновение в разработку принципов подотчетности, что Бек объясняет, в частности, влиянием аутсорсинга. Если первые десятилетия формирования отрасли разработки бизнес прощал программистам многое и редко серьезно призывал к ответу за невыполнение взятых обязательств, то в условиях договорных отношений между заказчиком и исполнителем последнему уже не остается возможностей для оправданий и извинений за срыв сроков.

Как принципы скорой разработки и, в частности, XP могут помочь разработчикам добиваться успеха в этих условиях? В семинаре «Будущее бизнеса разработки программного обеспечения» Бек не вдавался в технологические детали экстремального программирования (хотя, похоже, что большей части аудитории, состоящей в основном из архитекторов и менеджеров программных проектов, они хорошо известны, поскольку так или иначе применяются на практике), но сконцентрировался на вопросах оптимизации процессов разработки и изменениях в менталитете программистов. Так, в XP сокращение циклов разработки достигается благодаря следованию принципу, что экономика руководит разработкой — начало и конец цикла определяются началом инвестиций в процесс и моментом получения денег за результат, и надо стремиться, чтобы этот момент наступал как можно раньше. Добиваться этого можно за счет повышения продуктивности каждого этапа разработки.

Однако главный вывод Бека, пожалуй, состоит в том, что для успеха разработки критически важен положительный настрой участников процесса, их убежденность в возможности работать без дефектов, их способность брать ответственность на себя и давать честный отчет заказчику по результатам своей работы, умение из неудач извлекать преимущества, например, большое количество ошибок в очередном релизе рассматривать как возможность укрепить доверие заказчика и продемонстрировать ему свои возможности по повышению качества разработки. Можно сказать (и беседы с участниками семинара это подтверждают), что XP — метод программирования для оптимистов.