Что такое экстремальное программирование?

Экстремальное программирование — дисциплина разработки программного обеспечения на основе простоты, обратной связи и мужества. Оно работает в результате слаженности всей команды вместе в простой практикой, с достаточной обратной связью для того, чтобы команда видела, где они находятся, и подстроиться под их уникальную ситуацию.

В экстремальном программировании, каждый вклад в проект является неотъемлемой частью "всей команды". Команда формируется вокруг юридического лица под названием "Клиент", который сидит с командой и работает с ней ежедневно.

Экстремальные команды программистов используют простую форму планирования и отслеживания, чтобы решить, что делать дальше, и предсказать, когда проект будет сделан. Сфокусированная на бизнесе, команда производит программное обеспечение в виде небольших и полностью интегрированных релизов, которые проходят все нужные тесты, определенные Заказчиком.

Экстремальные программисты работают в парах и в составе группы, с простым дизайном и одержимо протестированным кодов, совершенствованием конструкций и постоянным содержанием его для текущих потребностей.

Команда экстремальных программистов сохраняет систему интегрирования и работает все время. Программисты пишут код в парах, и все время работают вместе. Они кодируют в едином стиле, чтобы каждый мог понять и улучшить код по мере необходимости.

Экстремальные программисты разделяют общую и простую картину  того, как система выглядит. Каждый работает в темпе, который может быть устойчивым на неопределенный срок.

Основные практики

Все вкладчики в проект XP сидят вместе, будучи членами одной команды. Эта команда должна включать в себя бизнес-представителя — «Заказчика» — который предоставляет требования, устанавливает приоритеты, курирует проект. Лучше всего, если клиент или один из его помощников — реальный пользователь, который знает область и то, что нужно. Команда, конечно, включает в себя программистов. Команда может также включать в себя тестеров, которые помогают клиенту определить тесты приемки заказчиком. Аналитики могут служить помощниками Заказчику, помогая определить требования. Также есть тренер, который помогает команде держаться на ходу и облегчает процесс в целом. Может быть менеджер, предоставляющий ресурсы, обработку внешней коммуникации, координацию деятельности. Ни одна из этих ролей не является исключительной собственностью только одного человека. Каждый человек в команде XP вносит свой посильный вклад. Лучшие команды не содержат в себе специалистов, только контрибуторов со специальными навыками.

XP-планирование рассматривает два ключевых вопроса в разработке программного обеспечения: прогнозирование, что будет выполнено в установленный срок, и определения того, что делать дальше. Акцент делается на управлении проектом, а не на точном предсказание того, что будет необходимо и сколько времени это займет. Есть два ключевых шага планирования в XP:

  • Планирование выпуска — практика, когда клиент предъявляет желаемые функции программистам, и программисты оценивают их сложность. Первоначальные планы релиза не являются абсолютно точными: ни приоритетов, ни оценки нет, и пока команда не начнет работать, она не будет знать, насколько быстро они будут продвигаться. Уже первый план выпуска является достаточно точным для принятия решений, однако  XP-команда пересматривает план выпуска на регулярной основе.
  • Планирование итераций — практика, когда команда получает направление каждые пару недель. XP-команда создает программное обеспечения в две недели "итераций", обеспечивая работу программного обеспечения в конце каждой итерации. Во время планирования итераций, клиент предъявляет функции в течение следующих двух недель. Программисты разбивают их на задачи и оценивают их стоимость (в более мелком уровне детализации, чем в версии планирования). В расчете на количество работы, проделанной в предыдущей итерации, команда согласует то, что будут предпринято в текущей итерации.

Эти шаги планирования очень просты, но они обеспечивают отличное управление в руках клиента. Каждые две недели, прогресс очевиден. В XP нет такого понятия, как «девяносто процентов сделано»: или «да», или «нет». Такой акцент на видимость результатов является парадоксальным: с одной стороны, с такой видимостью, клиент в состоянии отменить проект, если прогресс недостаточен. С другой стороны, прогресс заметен, а также имеется возможность решить, что будет сделано впоследствии. XP-проекты, как правило, обеспечивают сверх того, что необходимо, с меньшим давлением и стрессом.