Согласно первому изданию книги Extreme Programming Explained, выделяют четыре группы основных приемов экстремального программирования.
1. Короткий цикл обратной связи (Fine-scale feedback). Разработка ПО является диалогом между возможностями и желаниями, при этом меняется и то, и другое. В этих условиях нужно искать баланс между требованиями бизнеса, техническими возможностями и качеством. Владелец продукта или заказчик работают напрямую с командой и всегда доступны для вопросов и диалога.
2. Процесс разработки непрерывный, а не пакетный. Если есть хороший инструментарий по сборке, автоматическому тестированию и выпуску в продакшн, то публиковать новый функционал можно по его готовности частыми небольшими релизами. При этом каждая строчка кода может попасть в релиз почти сразу после написания. Чтобы это стало реальностью, нужен хорошо подготовленный инструментарий непрерывной интеграции (Continuous integration).
Команда непрерывно осуществляет рефакторинг и улучшение дизайна, архитектуры продукта, модулей системы и процесса разработки. Хорошим процентным соотношением считается 70 на 30: 70% времени команда работает над задачами бизнеса, а 30% — над рефакторингом и устранением дефектов.
3. Простота (Simple design) против избыточного проектирования. Как ни странно это прозвучит, но очень легко сделать что-либо сложным. Придумать действительно красивое и простое решение всегда тяжело: это требует времени. Французский ученый и философ Блез Паскаль заметил: «Я пишу длинно, потому что у меня нет времени написать коротко».
С точки зрения проекта это означает, что его суть должна умещаться в одну-две фразы или выражаться в емком образе, как миссия компании.
Для упрощения работы командами используются единые стандарты по написанию кода и автоматические инструменты для проверки соответствия этим стандартам.
4. Социальная защищенность программистов (Programmer welfare). Команда должна уметь поддерживать высокий рабочий темп на неопределенном временном промежутке. И речь идет не о неделях, а о месяцах и даже годах. Поэтому очень важно соблюдать баланс «работа — жизнь». У разработчиков должен быть нормальный рабочий график, чтобы они не «сгорали».
Все эти четыре группы приемов не только верны в теории, но и на практике используются в IT. Они продиктованы здравым смыслом и опытом.
Теперь давайте посмотрим на Lean-подход, который очень хорошо дополняет Extreme Programming.