Top.Mail.Ru
Экстремальное программирование (XP): принципы, практики и внедрение – Strive

Экстремальное программирование (XP): принципы, практики и внедрение

Что такое экстремальное программирование (XP): 5 ценностей, 12 практик, когда метод подходит стартапу и как настроить XP-итерацию на доске в Strive

5

Чем быстрее растёт продукт, тем чаще меняются требования к нему — и тем дороже обходится правка, внесённая поздно. Для команд, которые работают в таком ритме, придуман отдельный подход к разработке — экстремальное программирование. Его главная особенность в том, что изменения здесь не помеха, а часть процесса: код выпускают маленькими порциями, постоянно его проверяют и держат тесный контакт с заказчиком, чтобы вовремя поймать любую правку.

Чтобы это работало, подход опирается на несколько базовых ценностей и набор инженерных практик — от парного программирования до непрерывного тестирования. В статье разберём, что это за ценности и практики, чем XP отличается от смежных подходов вроде Scrum, каким командам он подходит и как развернуть XP-итерацию на практике.


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

Экстремальное программирование (Extreme Programming, XP) — это гибкая методология разработки программного обеспечения, в которой продукт создаётся короткими итерациями по одной-две недели при непрерывном тестировании и постоянной обратной связи с заказчиком. Оно возникло как ответ на кризис каскадной модели, где требования фиксировались в начале проекта, а готовый продукт заказчик видел только в конце. В проектах с часто меняющимися требованиями такой подход приводил к срыву сроков и выпуску продукта, уже не отвечающего запросам. XP предложил противоположную логику: короткие циклы, ранние релизы и корректировку курса по обратной связи.

История экстремального программирования: кто придумал и когда?

Экстремальное программирование создал американский программист Кент Бек в 1996 году. Тогда его пригласили спасать систему расчёта заработной платы для Крайслер (Chrysler) — одного из крупнейших автоконцернов США, входящего в «большую тройку» вместе с Ford и General Motors. Зарплату нужно было считать для десятков тысяч сотрудников, поэтому система была крупной и сложной — и к приходу Бека она разрабатывалась уже несколько лет, но так и не заработала в нужном объёме.

kent-bek-sozdatel-ekstremalnogo-programmirovaniya

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

В 1997 году система начала рассчитывать зарплату части сотрудников Крайслера, а в 1999-м Бек обобщил накопленный опыт в книге «Экстремальное программирование» (англ. «Extreme Programming Explained: Embrace Change»). Так практики одного проекта стали методологией, которой пользуются команды по всему миру. 

Какую проблему в разработке ПО решало экстремальное программирование в момент создания?

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

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


В чём основные принципы и ценности экстремального программирования?

XP опирается на пять базовых ценностей: коммуникация, простота, обратная связь, смелость и уважение. Каждая из них определяет конкретное поведение команды в ежедневной работе. Ниже разберём и то, и другое.

Пять ценностей экстремального программирования

В основе XP лежат пять базовых ценностей: коммуникация, простота, обратная связь, смелость и уважение.

  1. Коммуникация. Большинство проблем в разработке возникает не из-за технических ошибок, а из-за недосказанности. XP требует, чтобы разработчики, заказчик и тестировщики обменивались информацией напрямую и постоянно, а не через многоступенчатую документацию.
  2. Простота. Команда реализует самое простое решение, которое работает сегодня, и не закладывает функциональность «на будущее, которое может не наступить». Это снижает объём кода, который придётся поддерживать и переписывать.
  3. Обратная связь. Короткие итерации и непрерывное тестирование дают команде ранний сигнал о том, что работает, а что нет. Чем раньше получен отклик — от тестов, заказчика или коллег, — тем дешевле исправление.
  4. Смелость. Готовность переписать неудачный код, сообщить о реальном статусе задачи и отказаться от решения, которое перестало работать. Без смелости остальные ценности не реализуются.
  5. Уважение. Каждый участник признаёт вклад остальных. Эта ценность была добавлена Беком как фундамент для остальных четырёх: без взаимного уважения коммуникация и смелость в команде невозможны.

Какие принципы вытекают из ценностей экстремального программирования?

5-principov-ekstremalnogo-programmirovaniya-xp

Из пяти ценностей XP вытекают пять практических принципов: быстрая обратная связь, предположение простоты, постепенные изменения, принятие изменений и качественная работа. Они переводят абстрактные ценности в конкретные ориентиры повседневной работы команды. Ключевые из них:

  • Быстрая обратная связь — реакция на результат должна следовать как можно скорее, пока контекст ещё актуален.
  • Предположение простоты — относиться к каждой задаче как к простой, пока не доказано обратное, и не усложнять заранее.
  • Постепенные изменения — крупные перемены вносятся малыми шагами, а не одним рывком.
  • Принятие изменений — изменение требований не считается помехой; методология изначально рассчитана на него.
  • Качественная работа — высокое качество не предмет компромисса, поскольку именно оно обеспечивает устойчивый темп.

Эти принципы — связующее звено между абстрактными ценностями и конкретными практиками XP, которые мы разберём в следующем разделе.


Какие методы и практики использует экстремальное программирование?

XP описывается двенадцатью практиками, которые принято группировать по четырём направлениям: быстрая обратная связь, непрерывный процесс, общее понимание и комфортный темп работы. Вместе они образуют единую систему — практики усиливают друг друга, и польза от них проявляется именно в сочетании.

Какие 12 практик входят в экстремальное программирование? 

12-praktik-ekstremalnogo-programmirovaniya-xp

XP включает двенадцать практик, распределённых по четырём группам:

Быстрая обратная связь

  • Парное программирование — два разработчика пишут код за одним рабочим местом.
  • Игра в планирование (planning game) — совместная встреча команды и заказчика, на которой определяется объём ближайшей итерации.
  • Разработка через тестирование — тест пишется раньше кода.
  • Вся команда — заказчик постоянно доступен и входит в команду как полноправный участник.

Непрерывный процесс

  • Непрерывная интеграция — код объединяется в общую сборку и тестируется несколько раз в день.
  • Рефакторинг — структура кода регулярно улучшается без изменения его поведения.
  • Частые небольшие релизы — продукт выпускается малыми порциями с коротким интервалом.

Общее понимание

  • Стандарты кодирования — единые правила оформления кода для всей команды.
  • Коллективное владение кодом — любой разработчик вправе изменить любой участок кода.
  • Простой дизайн — система проектируется максимально просто под текущие требования.
  • Метафора системы — общее простое описание того, как устроена система, понятное всем участникам.

Комфортный темп

  • Устойчивый темп — рабочая неделя ограничивается примерно 40 часами; переработки как норма не допускаются, поскольку усталость повышает число ошибок.

Парное программирование в экстремальном программировании — зачем писать код вдвоём?

Парное программирование предполагает, что над одним фрагментом кода работают двое ради непрерывного ревью: ошибка замечается прямо в момент написания, а не на этапе тестирования, когда её исправление обходится дороже. Дополнительно практика распространяет знание о коде по команде — ни один участок не остаётся зоной ответственности одного человека. Обратная сторона — в паре разного уровня сильный разработчик теряет в скорости, двигаясь в темпе напарника, поэтому в XP пары ротируют, а вдвоём берут лишь самые сложные участки.

Сама практика устроена так: два разработчика работают над одной задачей за одним компьютером. Один пишет код («водитель», driver), второй одновременно проверяет его и продумывает решение на шаг вперёд («штурман», navigator). Роли регулярно меняются, поэтому оба удерживают в голове и детали реализации, и общую логику.

Что дает команде разработка через тестирование (ТDD)?

TDD даёт команде защиту от регрессий и однозначно сформулированные требования к каждой функции. Регрессий — потому что накопленный набор автоматических тестов при любом изменении сразу показывает, не сломалось ли работавшее ранее поведение. А требований — потому что функция описывается тестом ещё до того, как написан её код.

Достигается это за счёт обратного порядка работы: разработчик сначала пишет автоматический тест на будущую функцию и лишь затем код, который этот тест проходит. Цикл повторяется маленькими шагами: тест → код → рефакторинг.


Чем экстремальное программирование отличается от быстрой разработки приложений?

Экстремальное программирование и быстрая разработка приложений (Rapid Application Development, RAD) — оба гибкие по духу подхода, нацеленные на скорость, но различаются тем, за счёт чего эта скорость достигается. RAD, описанный Джеймсом Мартином в 1991 году, ускоряет выпуск через быстрое прототипирование, готовые компоненты и раннюю демонстрацию интерфейса заказчику, нередко жертвуя проработкой кода ради темпа. XP, наоборот, строит скорость на инженерной дисциплине — тестировании, рефакторинге и простом дизайне, — которые позволяют быстро и безопасно менять код в любой момент.

Отсюда и разница в результате: RAD-прототип часто переделывают или выбрасывают после согласования с заказчиком, тогда как код в XP развивается итерациями и остаётся в продукте. Поэтому RAD выигрывает, когда нужно быстро проверить гипотезу или идею интерфейса, а долговременная поддержка вторична; XP — когда продукт планируется сопровождать годами и цена ошибки в коде высока.


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

Отличие в масштабе: парное программирование — это одна конкретная практика (двое разработчиков пишут код за одним компьютером), а экстремальное программирование — целая методология, в которую эта практика входит как один из двенадцати элементов. То есть это не два разных подхода, а часть и целое: парное программирование — один из инструментов XP, а не его альтернатива.

Применять парную работу можно и вне XP: команды на Scrum или вовсе без формального процесса нередко используют её на сложных задачах, не внедряя остальные практики. Обратное неверно — полноценный XP без парного программирования невозможен, оно входит в методологию как одна из обязательных практик. Разница в уровне понятий: парное программирование отвечает на вопрос «как писать код», а XP — «как организовать всю разработку», от планирования итераций до тестирования и темпа команды.


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

Отличие в уровне: XP отвечает на вопрос «как писать код», а Scrum — «как организовать работу над проектом». XP — это набор инженерных практик, Scrum — управленческий каркас процесса, поэтому они не конкурируют, а часто работают вместе.

АспектExtreme Programming (XP)Scrum
ФокусИнженерные практикиУправление проектом
Строгость правилЗадаёт жёсткие правила и практикиОставляет гибкий каркас
Технические практикиПредписывает парное программирование, TDD, непрерывную интеграциюНе диктует технические практики
Участие заказчикаНужен постоянный контактПодключается на обзорах спринта
Сфера примененияТолько разработка ПОЛюбой итеративный процесс
Кто управляетКоманда коллективноScrum-мастер

На практике подходы часто совмещают: Scrum задаёт структуру управления (спринты, роли, обзоры), а экстремального программирование (XP) добавляет внутрь инженерную дисциплину — парное программирование, тестирование, непрерывную интеграцию. Так команда получает и порядок в процессе, и качество кода.

Преимущества и недостатки экстремального программирования

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

Преимущества экстремального программирования

  • Высокое качество кода — непрерывное тестирование, парное программирование и рефакторинг отлавливают ошибки в момент написания, а не на этапе сдачи.
  • Дешёвые изменения — короткие итерации и покрытие тестами позволяют внедрить новое требование в рамках текущего цикла, не ломая работающее.
  • Устойчивый темп без выгорания — методология ограничивает рабочую неделю: уставшая команда делает больше ошибок, поэтому переработки в XP считаются убытком, а не нормой.
  • Меньше зависимости от отдельных людей — коллективное владение кодом и парная работа распределяют знание о системе по команде, и уход одного разработчика не парализует проект.

Минусы и ограничения экстремального программирования

  • Высокие требования к дисциплине — методология работает только при строгом соблюдении практик: стоит команде отказаться от тестов или парной работы «ради скорости», и преимущества исчезают.
  • Постоянная доступность заказчика — XP требует, чтобы представитель заказчика был на связи с командой непрерывно, а это условие выполнимо не на каждом проекте.
  • Плохая масштабируемость — практики вроде коллективного владения кодом и непрерывной интеграции рассчитаны на команды примерно до 10–12 человек и хуже работают на больших коллективах.
  • Минимум формальной документации — осложняет проекты с жёсткими требованиями к отчётности, например в государственных или регулируемых отраслях.

В каких случаях стоит применять экстремальное программирование, а в каких — нет?

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

Для каких проектов и команд XP подходит лучше всего?

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

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

Когда XP лучше не использовать?

XP не стоит применять, когда требования зафиксированы и почти не меняются, команда велика или распределена, а заказчик недоступен для регулярного общения. В проектах с жёстким, заранее утверждённым техническим заданием короткие итерации и постоянная адаптация теряют смысл — здесь предсказуемая каскадная модель окажется эффективнее.

Так же осторожно к XP стоит подходить в крупных коллективах и в регулируемых отраслях. Большие команды трудно удержать на практиках вроде коллективного владения кодом, а сферы с обязательной подробной документацией — например, государственный или медицинский софт — конфликтуют с принципом минимума документации в экстремальном программировании.


Как организовать работу по экстремальному программированию в таск-менеджере Strive? 

Работу по экстремальному программированию организуют так: каждую итерацию выносят на отдельную доску, где колонки повторяют поток разработки — от бэклога до релиза, — задачи и пары держат на виду у всей команды, а объём работы в итерации ограничивают тем, что команда реально успевает. Таск-менеджер собирает всё это в одном пространстве, и ниже видно на конкретном примере.

Как выглядит XP-итерация на доске в Strive?

doska-extremalnogo-programmirovaniya-v-strive

На практике XP-итерация хорошо ложится на доску в Strive. Возьмём реальный поток разработки:

  • Колонки доски повторяют цикл XP: «Бэклог разработки» → «В работе» → «Готово проверить» → «Ревью» → «Релиз/Готово» → «QA». Отдельная колонка «Ревью» — это та самая практика рецензирования кода, а «QA» закрывает непрерывное тестирование.
  • Игра в планирование видна прямо в цифрах: в «Бэклоге разработки» 24 задачи, в «В работе» — только 2. Команда берёт в работу ровно столько, сколько реально тянет за итерацию.
  • Карточки помечены сложностью и зоной — метки «Простая» / «Сложная» и теги вроде «API», «Оплаты», «Фронт», «Дизайн». Видно и трудоёмкость задачи, и к какой части продукта она относится.
  • Практики XP буквально лежат на доске: карточка «Рефакторинг хранения сессий — ревью кода» — это рефакторинг и ревью одновременно, две из двенадцати практик в одной задаче.
  • Коллективное владение кодом обеспечено общей видимостью: любая карточка открыта всей команде, и задача не «застревает» на одном человеке.

В итоге вся организационная часть экстремального программирования — планирование итерации, ревью, тестирование, контроль того, что в работе не больше, чем команда вывезет, — собрана в одном пространстве. Стартапу это оставляет силы на сам продукт, а не на учёт задач.


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

Разбираться в XP лучше с трёх сторон: фундамент дают книги создателя методологии Кента Бека, актуальную практику — современные статьи его коллег онлайн, а быстрый старт — готовое руководство по настройке процесса в Strive. 

С какой книги начать изучение XP?

Начинать стоит с «Extreme Programming Explained: Embrace Change» Кента Бека — именно в ней методология впервые изложена целостно. Первое издание вышло в 1999 году, второе, дополненное пятой ценностью «уважение», — в 2004-м. Эта книга объясняет не только практики, но и философию подхода, без которой XP превращается в набор разрозненных приёмов, — поэтому она и идёт первой. Когда основа понятна, её полезно дополнить ещё двумя книгами Бека в соавторстве: «Planning Extreme Programming» (с Мартином Фаулером) разбирает планирование итераций, а «Test-Driven Development: By Example» детально показывает разработку через тестирование.

knigi-kenta-beka-po-ekstremalnomu-programmirovaniyu

Какие современные статьи о экстремальном программировании почитать онлайн?

По теме экстремального программирования стоит читать четыре онлайн-источника — два авторских блога создателей методологии, справочник практик и вводное руководство:

  • martinfowler.com — статьи Мартина Фаулера, одного из идеологов гибкой разработки, о XP, рефакторинге и тестировании из первых рук.
  • ronjeffries.com — блог Рона Джеффриса, соавтора методологии; разбор практик XP с живыми примерами.
  • Extreme programming practices (Wikipedia) — сжатый структурированный обзор всех двенадцати практик, удобен как справочник.
  • «Extreme Programming (XP)» на Asana — доступное практическое введение в ценности и правила XP для первого знакомства.

С чего начать внедрение экстремального программирования на практике?

Чтобы перейти от теории к работе, удобно начать с готового шаблона процесса. Пошаговое руководство по настройке XP-итерации в Strive по шагам показывает, как собрать доску с колонками под цикл разработки (бэклог → в работе → ревью → QA → релиз), разметить задачи по сложности и зонам и ограничить объём работы в итерации, чтобы команда не бралась за лишнее. Документ можно скачать в PDF прямо в Strive и держать под рукой у всей команды. Так вы примените практики XP сразу, не выстраивая процесс с нуля.

Начните работу в Пространствах прямо сейчас
Начните работу в Strive прямо сейчас
Начать бесплатно
Начните работу в Strive прямо сейчас
Экстремальное программирование
XP

Как вам статья?

Расскажете, чего не хватило в статье?

Максимум 500 символов0/500
🔒Этот комментарий увидит только редакция и никто больше. Не отправляйте персональные данные.
Вам может быть интересно