XP отвечает на вопрос, который Scrum обходит стороной: как именно писать код, чтобы изменения оставались дешёвыми. Scrum описывает роли и события, XP спускается до инженерной работы.
Ценности
- Общение: разработчики, тестировщики и заказчик разговаривают напрямую.
- Простота: делаем то, что нужно сегодня.
- Обратная связь: от тестов, от сборки, от заказчика — быстро и постоянно.
- Смелость: выбросить неудачный код и сказать заказчику правду о сроке.
- Уважение: добавлено во втором издании книги.
Практики
Во втором издании тринадцать основных практик и одиннадцать дополнительных. Из основных до реальных команд чаще всего доживают четыре: разработка через тестирование, парное программирование, непрерывная интеграция и постоянный рефакторинг. Заказчик на площадке, метафора системы и общее владение кодом приживаются реже, потому что требуют перестройки не только команды, но и её окружения.
Что с ним стало
Как цельная методология XP почти не встречается. Зато его инженерные практики разошлись по индустрии и живут отдельно. Команда на Scrum с тестами, парной работой и ежедневной сборкой применяет XP, обычно этого не называя.
- Требования меняются на ходу, а стоимость правки растёт
- Небольшая команда, сидящая рядом или работающая в одном ритме
- Заказчик доступен и готов отвечать на вопросы в течение дня
- Фиксированный объём и цена по договору: XP предполагает переговоры об объёме
- Распределённая команда без пересечения по часовым поясам
- Регламент запрещает править код без формальной процедуры изменений
Команда из шести человек берёт из XP три практики. Тесты пишут до кода, поэтому регрессия ловится за минуты. Пары садятся на сложные места вроде расчёта скидок, и знание перестаёт жить в одной голове. Сборка запускается на каждый коммит. За квартал число правок после релиза заметно падает, при этом ни ролей, ни событий Scrum команда не меняла.
Не берите XP целиком за один заход. Начните с непрерывной интеграции: она даёт обратную связь, почти не меняя привычек команды, и делает видимой цену остальных практик. Парную работу и тесты до кода добавляйте после, по одной, с разбором на ретроспективе.