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

Экстремальное программирование

Цикл спринта
Однако существуют некоторые различия, некоторые из которых довольно тонкие, особенно в следующих четырех аспектах:
- Обычно от двух до четырех недель.
- Обычно от одной до двух недель.
- не допускает изменений в своих спринте.
- Как только планирование спринта завершено и набор продуктового бэклогаэлементов зафиксирован, эти элементы остаются неизменными до конца спринта.
- Легче изменить во время итерации.
- Пока конкретная функция не была начата, новая функция аналогичного размера может быть заменена в итерации команды XP на не начатую.
- Работать в строгом порядке приоритетов.
- Функции, которые необходимо разработать, приоритизируются заказчиком (продуктовый владелец Scrum)владелец продукта), и команда должна обрабатывать их последовательно.
- Продуктовый владелец Scrum приоритизирует бэклог продукта, но команда определяет порядок разработки элементов бэклога.
- Команда ScrumScrum вполне может выбрать работу над вторым по важности элементом.
- Не предписывает никаких конкретных инженерных практик.
- Да, XP это делает.
- Например: TDD, парное программирование, простой дизайн, рефакторинг и т.д.
Мы можем кратко описать различия между XP и Scrum следующим образом:
| Аспект | Практика | XP | Scrum |
| Длительность итерации | Могут ли требования быть изменены во время итерации | 1–2 недели | 2–4 недели |
| Обработка изменений во время итерации | Требования строго упорядочены по приоритету | Может быть заменен другим требованием равного размера, если еще не реализовано. | Scrum не допускает этого. После начала спринта никакие изменения не разрешаются, и Мастер Scrum строго соблюдает это. |
| Приоритизация функций | Требования строго упорядочены по приоритету | Да | Не требуется |
| Инженерные практики | Используются ли строгие инженерные методы для обеспечения прогресса или качества | Очень строго | Требует от разработчиков осознанности |
Поэтому мы считаем, что подход XP приемлем, но он вводит парадокс в Agile: сочетание философии XP с принципами Agile передает командам путающее сообщение: «Вы полностью самодостаточная организация, но должны внедрять TDD, парное программирование и т.д.»
Ясно, что эти четыре различия довольно различны:
- В Scrum, акцент делается на самоорганизации.
- В XP, акцент делается на жестких ограничениях инженерных практик.
Заключение
Scrum — это фреймворк разработки продукта — контейнер, в который можно добавить другие практики. XP — одна из практик, которые можно применять в рамках фреймворка Scrum. Нет причин для команды выбирать между Scrum и XP. Правила и практики XP не просты, и большинство из них непререкаемы. Внедрение XP в Scrum может быть естественным развитием для команды, которая начинает с Scrum и стремится стать профессиональной командой Scrum.