Что такое XP
Кент Бек собрал подход в конце девяностых на проекте расчёта зарплаты в Chrysler и описал его в книге 1999 года. Слово «экстремальное» означало доведение известных хороших практик до предела: если проверка кода полезна, проверяйте непрерывно; если тесты полезны, пишите их до кода.
Во втором издании книги Бек назвал пять ценностей: общение, простота, обратная связь, смелость и уважение. Практики выводятся из них, и это объясняет, почему выборочное применение работает хуже: практики поддерживают друг друга.
Например, рефакторинг без тестов опасен, потому что нечем проверить, что вы ничего не сломали. Тесты без непрерывной сборки запускаются редко и устаревают. Непрерывная сборка без быстрой сборки раздражает и её начинают обходить.
Общий смысл всего набора — сделать изменение кода дешёвым. Гибкие подходы обещают приветствовать изменение требований на поздней стадии, и это обещание держится ровно на том, насколько дёшево переделать сделанное.
Само название за двадцать пять лет вышло из повседневного оборота, а практики стали общим местом: непрерывная сборка, автоматические тесты, разбор кода вдвоём, регулярный рефакторинг применяют команды, никогда не слышавшие про XP.
Подход рассчитан на разработку и плохо переносится на другие области. Организационная его часть — недельный и квартальный ритм, истории, запас в плане — пересекается со Scrum, и в этой части подходы взаимозаменяемы.
- Код меняется постоянно, и цена ошибки в продуктивной среде высока
- Команда небольшая и сидит достаточно близко для постоянного общения
- Есть возможность автоматизировать тесты и сборку
- Руководство готово к тому, что часть времени уходит на качество кода
- Работа не связана с кодом: практики теряют смысл почти полностью
- Код меняется редко и живёт годами без правок
- Автоматизировать проверку невозможно: наследованная система без тестового окружения
- Ожидается рост скорости в первый же месяц: практики окупаются позже
Что появляется в работе
Документов у подхода почти нет: он сознательно заменяет их работающим кодом, тестами и общением. Появляются скорее рабочие соглашения.
Истории
Короткие описания нужного поведения на языке заказчика, на карточке. Подробности выясняются разговором.
Набор автоматических тестов
Главный актив команды. Позволяет менять код смело: если тесты зелёные, поведение сохранилось.
Стандарт кода
Соглашение о том, как выглядит код команды. Нужен, потому что код общий и его читают все.
Быстрая сборка
Полная сборка с тестами за считанные минуты. Медленная сборка обходится, и вся конструкция рассыпается.
| СОБЫТИЕ | ЧАСТОТА И ДЛИТЕЛЬНОСТЬ | УЧАСТНИКИ | ЧЕМ ЗАКАНЧИВАЕТСЯ |
|---|---|---|---|
| Недельное планирование | 1–2 ч | команда и заказчик | истории на неделю |
| Квартальное планирование | полдня | команда и заказчик | темы квартала и крупные истории |
| Ежедневная сверка | 10–15 мин | команда | пары на день, препятствия |
| Смена пар | по ходу дня | разработчики | знание расходится по команде |
С чего начать
Практики связаны, но внедрять их разом невозможно. Порядок ниже выстроен так, чтобы каждая следующая опиралась на уже работающую.
- 1Ускорьте сборкуПока полная сборка идёт полчаса, ни непрерывная интеграция, ни тесты вперёд не приживутся. Цель — минуты.первый месяц
- 2Включите непрерывную сборкуКаждое изменение собирается и прогоняется автоматически. Сломанная сборка чинится немедленно и имеет приоритет над новой работой.первый месяц
- 3Начните писать тесты вперёд на новом кодеНе переписывайте старое: возьмите правило «новый код приходит с тестом». Через квартал покрытие вырастает само в тех местах, где идёт работа.второй-третий месяц
- 4Введите разбор кода вдвоёмНачните с сложных мест и с обучения новичков. Постоянная парная работа — следующая ступень, и к ней команды приходят по-разному.второй-третий месяц
- 5Договоритесь о рефакторингеУлучшение кода происходит по ходу работы над задачей. Отдельный проект по рефакторингу почти всегда отменяют первым.третий месяц
- 6Заведите запас в планеЧасть ёмкости недели остаётся незанятой. Без запаса первая же срочная задача съедает тесты и рефакторинг.постоянно
Что считать
Где обычно ломается
Берут одну практику из десяти
Тесты пишут после кода и потом
Сборка идёт полчаса
Парную работу вводят приказом
Рефакторинг выносят в отдельный проект
План заполняют под завязку
Темы про XP
Что из этого живёт в Shtab
Инженерная часть подхода живёт в системе сборки и в репозитории. В трекере остаётся организационная: истории, недельный ритм, запас ёмкости и видимое состояние работы.
- 01Истории задачами с критериями приёмки в чек-листе шаблона.
- 02Недельный цикл — повторяющееся планирование и понятный горизонт списка.
- 03Парная работа видна назначением двух исполнителей на задачу.
- 04Запас ёмкости поддерживается ограничением незавершённой работы по колонке.
- 05Отдельная метка технического долга не даёт ему потеряться среди историй.
- 06Сводный отчёт показывает, сколько недель подряд запас съедался срочным.
Частые вопросы
Название вышло из повседневного оборота, практики разошлись по индустрии. Непрерывная сборка, автоматические тесты, регулярный рефакторинг сегодня применяют команды, никогда не слышавшие об этом подходе. Читать первоисточник по-прежнему полезно: там объяснено, почему практики связаны, и это объяснение нигде больше не собрано так плотно.