Экстремальное программирование (XP) — это методология управления проектами Agile, которая нацелена на скорость и простоту с короткими циклами разработки. XP использует пять основных ценностей, пять правил и 12 практик программирования. Структура жёсткая, но результат этих высоко сфокусированных спринтов и непрерывной интеграции может привести к гораздо более качественному продукту.
Если термин «экстремальное программирование» вызывает в воображении образы экстремальных видов спорта, вы не слишком далеки от истины. Экстремальное программирование (XP) — это действительно довольно экстремальный способ программирования. Как и другие методы разработки программного обеспечения Agile, XP использует адаптируемую, управляемую тестированием разработку для разработки программного обеспечения. Но в отличие от других методов, экстремальное программирование имеет строгие правила и руководящие принципы, которые определяют порядок выполнения работы.
Экстремальное программирование — это методология управления Agile-проектами, которая нацелена на скорость и простоту с короткими циклами разработки и меньшим количеством документации. Структура процесса определяется пятью руководящими ценностями, пятью правилами и 12 практиками XP (которые мы рассмотрим далее в этой статье).
Как и другие Agile-методы, XP — это методология разработки программного обеспечения, разбитая на рабочие спринты. Agile-фреймворки следуют итеративному процессу: вы завершаете и пересматриваете фреймворк после каждого спринта, совершенствуете его для максимальной эффективности и адаптируете к меняющимся требованиям. Как и другие Agile-методы, XP позволяет разработчикам реагировать на истории клиентов, адаптироваться и вносить изменения в режиме реального времени. Но XP гораздо более дисциплинированная, использующая частые проверки кода и модульное тестирование для быстрого внесения изменений. Кроме того, она отличается высокой степенью креативности и совместной работы, отдавая приоритет командной работе на всех этапах разработки.
Попробуйте Asana бесплатноScrum — ещё одна распространённая методология Agile, которой управляет мастер Scrum. Как и XP, Scrum использует спринты на основе пользовательских историй для разработки новых функций продукта или программного обеспечения. Однако XP более жёсткая, чем Scrum, и имеет строгие правила и рекомендации, которые поощряют постоянный контакт между разработчиками и клиентом. Кроме того, Scrum можно использовать для любого процесса, требующего итераций и участия клиента, тогда как XP — только для программирования.
XP появилась в конце 1990-х годов, когда Кент Бек создал её для управления разработкой системы расчёта заработной платы для Chrysler под названием C3. Цель XP заключалась (и до сих пор заключается) в том, чтобы устранить сопротивление изменению кода в проектах разработки. В более традиционных методах разработки программного обеспечения код после написания часто остаётся без изменений (за исключением отладки). В XP же код тщательно анализируется, и разработчики могут решить переписать его полностью после одной итерации.
Поскольку экстремальное программирование ориентировано на разработку программного обеспечения, его обычно используют только команды инженеров. Даже в командах разработчиков ПО она работает только в определенных условиях. Чтобы получить максимальную отдачу от экстремального программирования, лучше всего использовать его, когда вы:
Управляете небольшой командой. Из-за своей высокой степени совместной работы XP лучше всего работает в небольших командах численностью до 10 человек.
Вы находитесь в постоянном контакте с клиентами. XP учитывает требования клиентов на протяжении всего процесса разработки и даже полагается на них при тестировании и подтверждении.
У вас есть адаптируемая команда, которая может принять изменения (без обид). По самой своей природе экстремальное программирование часто требует, чтобы вся команда отказывалась от результатов своей тяжелой работы. Кроме того, правила XP позволяют другим участникам команды вносить изменения в любое время, что не сработает, если участники команды воспримут это на свой счёт.
Хорошо разбираетесь в технических аспектах программирования. XP — не для новичков. Вы должны уметь быстро работать и вносить изменения.
Жизненный цикл XP поощряет непрерывную интеграцию, когда участник команды интегрируется почти постоянно, например ежечасно или ежедневно. Полный жизненный цикл выглядит следующим образом:
Извлечение незавершённой работы из пользовательских историй
Вы отдаете приоритет самым важным элементам
Начните итеративное планирование
Честное планирование
Постоянное общение со всеми заинтересованными сторонами и расширение возможностей команды
Выпуск работы
Получите обратную связь
Возвращение к этапу итеративного планирования и повторение по мере необходимости.
Экстремальное программирование основано на ценностях. Вместо использования внешних мотиваторов XP позволяет вашей команде работать менее сложным способом (сосредоточившись на простоте и совместной работе над сложными проектами), и все это основано на этих пяти ценностях.
Прежде чем приступить к экстремальному программированию, спросите себя: что самое простое, что при этом работает? Слово «работает» здесь играет ключевую роль, поскольку простые вещи не всегда практичны или эффективны. В XP основное внимание уделяется тому, чтобы сначала выполнить самую важную работу. Это означает, что вы ищете простой проект, который точно сможете выполнить.
XP полагается на быструю реакцию и эффективное общение. Чтобы работать, команда должна быть открытой и честной друг с другом. Когда возникают проблемы, вы должны говорить о них. Причина в том, что у других членов команды часто уже есть решение. А если и нет, то в группе его придумают быстрее, чем в одиночку.
Читать о том, как улучшить общение в команде: 6 стратегий и советовКак и другие Agile-методологии, XP включает в процесс истории пользователей и обратную связь. Основное внимание в XP уделяется быстрому и простому выполнению работы, а затем её передаче для получения почти мгновенной обратной связи. Таким образом, разработчики почти постоянно общаются с клиентами на протяжении всего процесса. В XP вы запускаете частые релизы, чтобы получать аналитика как можно раньше и чаще. Получив обратную связь, вы адаптируете процесс, чтобы включить её в него (а не в проект). Например, если обратная связь позволяет устранить ненужное время задержки, вы скорректируете процесс так, чтобы пара разработчиков улучшила время задержки, а не корректировали проект в целом.
Читайте: Не любите давать обратную связь? Эти 20 советов для васXP требует определённой смелости. От вас всегда ожидают честных отчётов о прогрессе, что может быть довольно уязвимо. Если вы не уложитесь в дедлайн, руководитель команды, скорее всего, не захочет обсуждать причины. Вместо этого вы сами скажете ему, что пропустили дедлайн, возьмете на себя ответственность и вернетесь к работе.
Если вы руководитель команды, ваша обязанность в начале процесса XP — установить ожидания в отношении успеха и определить, что значит «готово». Часто планирование неудач не предусматривается, потому что команда сосредоточена на успехе. Однако это может быть страшно, потому что дела не всегда идут по плану. Но если в процессе XP что-то изменится, ваша команда должна адаптироваться и измениться вместе с ним.
Учитывая, насколько высоко XP ценит общение и честность, важность уважения становится очевидной. Чтобы команда могла эффективно общаться и сотрудничать, участники должны иметь возможность не соглашаться друг с другом. Но есть способы делать это деликатно. Уважение — это хорошая основа, которая ведет к доброжелательности и доверию, даже при наличии большой доли честности. В экстремальном программировании ожидается следующее:
Взаимное уважение между клиентами и командой разработчиков.
Взаимное уважение между участниками команды.
Признание того, что каждый участник команды вносит в проект что-то ценное.
Ценности экстремального программирования — это скорее философские аспекты. Правила же представляют собой практическое применение методологии. Для эффективной работы команды XP вам понадобятся и то, и другое.
На этапах планирования в XP вы определяете, является ли проект жизнеспособным и подходит ли он для XP. Для этого необходимо рассмотреть следующее:
Пользовательские истории, чтобы убедиться, что они соответствуют принципу простоты, и проверить, доступен ли клиент для процесса. Если пользовательская история более сложная или составлена анонимным клиентом, она, скорее всего, не подойдёт для XP.
Ценность и приоритет проекта, чтобы убедиться, что он соответствует принципу «сначала выполнять самую важную работу».
На каком этапе разработки вы находитесь. XP лучше всего подходит для ранней стадии разработки и не будет работать для более поздних итераций.
Убедившись, что проект подходит для XP, создайте график релизов, но помните, что релизы должны быть ранними и частыми, чтобы получать обратную связь. Для этого:
Разбейте проект на итерации и создайте план для каждой из них.
Установите реалистичные дедлайны и устойчивый темп.
Делитесь обновлениями по мере их появления, чтобы ваша команда была честной и прозрачной.
Делитесь обновлениями в режиме реального времени, чтобы команда могла быстрее выявлять проблемы, адаптироваться и вносить изменения.
Используйте инструмент для управления проектами, чтобы создать канбан-доску или хронологию для отслеживания прогресса в реальном времени.
Одним из ключевых элементов XP является физическое пространство. Сторонники XP рекомендуют использовать открытое рабочее пространство, где все участники команды работают в одном помещении. Поскольку XP — это метод совместной работы, вам будет полезно иметь пространство, где вы можете физически собраться вместе. Но в наше время это не всегда практично. Если вы работаете в удалённой команде, попробуйте использовать платформу, которая поощряет асинхронную работу для удалённого сотрудничества. Это позволит всем участникам продолжать совместную работу над проектом, даже если они физически не находятся вместе.
Как и в других Agile-методах, используйте ежедневные стендапы для проверки и поощрения постоянного открытого общения. Вам понадобится как недельный, так и квартальный цикл. В течение квартального цикла вы и ваша команда будете просматривать истории, которые будут направлять вашу работу. Вы также изучите процесс XP, выявив пробелы или возможности для внесения изменений. Затем вы будете работать в недельных циклах, каждый из которых начинается со встречи с клиентом. Клиент выбирает пользовательскую историю, над которой программисты будут работать на этой неделе.
Руководитель или руководитель команды должен сосредоточиться на поддержании прогресса в работе, измерении темпа, перераспределении участников команды для устранения ошибок или проблем по мере их возникновения или изменении процесса XP в соответствии с нынешним проектом и итерацией. Помните, что цель XP — быть гибкими и действовать, поэтому ваша работа будет сосредоточена на текущей работе команды и реагировать на любые изменения.
Когда вы только начинаете работать с экстремальным программированием, начните с самого простого дизайна, зная, что последующие итерации сделают его более сложным. Не добавляйте на этом этапе ранние функции, чтобы сохранить максимально простой функционал.
Команды, работающие по методологии XP, часто используют карточки класс-ответственность-сотруация (CRC), чтобы показать, как взаимодействует каждый объект в проекте. Заполнив каждое поле в карточке, вы получите визуальное представление о взаимодействии всех функций, их взаимосвязи и взаимодействии. Карточки CRC включают:
Класс (набор похожих объектов)
Обязанности (связанные с классом)
Сотрудники (класс, взаимодействующий с этим)
CRC полезны для стимулирования процесса и выявления потенциальных проблем. Независимо от того, как вы проектируете, вам понадобится система, которая уменьшает потенциальные узкие места. Для этого необходимо активно выявлять риски. Как только появится потенциальная угроза, назначьте одного или двух участников команды, которые будут искать решение на случай, если угроза станет реальностью.
Читать статью «Процесс управления рисками проектов за 6 чётких шагов»Одним из наиболее уникальных аспектов XP является то, что вы будете находиться в постоянном контакте с клиентом на протяжении всего процесса кодирования. Это партнёрство позволяет тестировать и учитывать обратную связь в каждой итерации, а не ждать окончания спринта. Однако в XP действуют довольно строгие правила кодирования. Вот некоторые из них:
Весь код должен соответствовать стандартам кодирования.
Использование модульного тестирования для уточнения требований и разработки всех аспектов проекта.
Парное программирование: два разработчика работают одновременно на одном компьютере. Это не увеличивает затраты времени, а позволяет уделить вдвое больше внимания достижению результатов самого высокого качества.
Используйте непрерывную интеграцию, чтобы добавлять новый код и сразу же его тестировать.
В любой момент времени код может обновлять только одна пара, чтобы уменьшить количество ошибок.
Коллективное владение кодом: любой участник команды может изменить код в любое время.
Тестирование должно проводиться на протяжении всего процесса экстремального программирования. Перед выпуском весь код должен пройти модульное тестирование. Если в ходе этих тестов обнаруживаются ошибки, создаются новые, дополнительные тесты для их исправления. Позже вы будете использовать ту же пользовательскую историю, над которой работали, в приемочном тесте. Во время этого теста клиент оценивает, насколько хорошо вы воплотили пользовательскую историю в продукте.
Чтобы ещё больше отточить процесс, XP также использует набор из 12 практик. Они основаны на манифесте Agile, но адаптированы к потребностям XP:
Игра в планирование: планирование XP используется для управления работой. Результаты планирования должны отражать то, чего вы надеетесь достичь, сроки достижения и дальнейшие действия.
Тестирование с участием клиентов: когда вы завершите разработку новой функции, клиент разработает приемочный тест, чтобы определить, насколько она соответствует его первоначальной пользовательской истории.
Небольшие релизы: XP использует небольшие, регулярные релизы для получения аналитики на протяжении всего процесса. Часто релизы поступают непосредственно клиентам, хотя могут выпускаться и внутри компании.
Простой дизайн: система XP разработана с упором на простоту — вы будете производить только то, что необходимо, и ничего больше.
Парное программирование: все программы создаются парами разработчиков, которые сидят рядом. В экстремальном программировании нет одиночной работы.
Разработка через тестирование (TDD): XP полагается на обратную связь, поэтому требует интенсивного тестирования. В коротких циклах программисты выпускают автоматизированные тесты и сразу же реагируют на них.
Рефакторинг. На этом этапе вы будете обращать внимание на более мелкие детали кодовой базы, удаляя дубликаты и обеспечивая согласованность кода. В результате получается хороший и простой дизайн.
Коллективная ответственность: любая пара программистов может изменить код в любое время, независимо от того, разработали они его или нет. XP создает код как команда, и работа каждого сотрудника соответствует более высоким коллективным стандартам.
Непрерывная интеграция: XP-команды не ждут завершённых итераций, а интегрируют код постоянно. Зачастую XP-команда интегрирует код по несколько раз в день.
Устойчивый темп: интенсивность работы по XP требует установки устойчивого темпа. Команды должны решить, сколько работы они могут выполнить таким образом в день и в неделю, и использовать это для установки дедлайнов.
Метафора. Метафора — это, в буквальном смысле, метафора. Она определяется командой и описывает, как должна функционировать команда. Например, мы муравьи, которые работают сообща, чтобы построить муравейник.
Стандарт кодирования: XP-команды придерживаются единого стандарта стандарта. Подобно тому, как писатели должны использовать единый стиль, чтобы создавать впечатление, что все тексты написаны одним человеком, разработчики XP пишут код единым способом, чтобы он читался так, будто его создал один человек.
На этом этапе вы, вероятно, уже поняли, что экстремальное программирование — это, ну, экстремально. Процесс строгий и высокоструктурированный, но результаты могут того стоить. Уникальный процесс разработки XP, включающий обратную связь с клиентами и интенсивное совместное программирование, позволяет создавать высококачественное программное обеспечение.
Оптимизируйте планирование и управление XP с помощью инструмента для управления работой, который обновляется и адаптируется в режиме реального времени, как и ваша работа.
Попробуйте Asana бесплатно