Konfo

Ценности и практики экстремального программирования: Как построить работу команды

Фото: © freepik.com/freepik.com

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

Идея eXtreme Programming принадлежит американскому разработчику программного обеспечения Кенту Беку, а толчком к ней стало участие последнего в проекте Chrysler по автоматизации компенсационных выплат. Проанализировав организаторские и производственные недочеты, «пионер» ХР предложил новый подход, объединивший:

  • работу кодера и аналитика в паре: за одним компьютером, с общими периферийными устройствами, постоянным рабочим общением и ответственностью за результат совместной деятельности. При этом партнеры в паре постоянно меняются, создавая условия для вовлеченности в разные этапы проекта всей команды;

  • гибкость плана, с перспективой оперативной корректировки отдельных модулей кода;

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

Ценности и практики экстремального программирования: Как построить работу команды
Опробовав теорию ХР на практике, Кент Бек достиг положительных результатов. В том же — 1999 — году методология была подробно описана в книге «Extreme Programming Explained: Embrace Change».

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

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

Для экономии времени, рабочий процесс в ХР разбивается на этапы. Каждый этап подразумевает работу в паре, где за одним компьютером параллельно осуществляется и кодинг, и моментальная вычитка, аналитика написанного кода с последующим внесением правок в него, если таковые потребуются. Так проще усовершенствовать один модуль и перейти к написанию следующего.

Кроме того, гибкая поэтапная система разработки ПО ориентирована на заказчика, интересы которого могут меняться по мере выполнения поставленной задачи.

В комплексе, процесс экстремального программирования базируется на следующих ценностях:

  • обратная связь с заказчиком в приоритете над деталями контракта;

  • правки — естественный процесс, и их отработка важнее следования ранее поставленному плану;

  • качество конечного продукта важнее документации;

  • взаимодействие и общение в команде ценнее инструментов, используемых в работе.

Важно! Выделяют четыре основные ценности ХР: кодирование (по утверждению Кента Бэка «без кода нет ничего»), тестирование , прослушивание и проектирование. В совокупности, они нацелены на удовлетворение гибких запросов клиента с акцентом на качество готового продукта и простоту его применения.

Ценности и практики экстремального программирования: Как построить работу команды 1

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

Эффективность еXtreme Programming достигается путем следования определенным передовым методам программной инженерии. К ним относятся:

  • модульное (юнит) тестирование, как возможность корректировки отдельных фрагментов кода;

  • рефакторинг, как перспектива преобразования алгоритмов в пользу более простых и доступных для понимания, но сохраняющих первоначальную задумку;

  • непрерывную интеграцию;

  • YAGNI, как принцип сокращения функционала до необходимого минимума, отказ от излишеств;

  • DRY, предполагающий отказ от повторов, особенно при множестве слоев абстрагирования;

  • KISS, определяющий выбор упрощенного способа программирования.

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

Ценности и практики экстремального программирования: Как построить работу команды 2

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

Единое видение конечного продукта выстраивается на практике системной метафоры. Под ней понимают архитектуру, с дальнейшим выстраиванием ее компонентов и взаимосвязей.

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

Важно! Игра в планирование в ХР распределяет зоны ответственности: заказчик принимает бизнес-решения, разработчики –  их технически реализуют.

Ценности и практики экстремального программирования: Как построить работу команды 3

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

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

  • разработчик (определяет и оценивает задачи, пишет юнит-тесты и коды для их прохождения, занимается их интеграцией, выступает дизайнером пользовательского интерфейса и баз данных);

  • покупатель или конечный пользователь продуктом (детализирует проект, корректирует требования по мере внедрения решений, устанавливает приоритеты);

  • менеджер (определяет правила игры планирования, контролирует время на прохождение этапов, отслеживает дефекты функционала);

  • тренер (направляет и подсказывает).

  • В ХР эти роли подвижны и сопровождаются постоянным взаимодействием членов команды.

Важно! С учетом распределения ролей в ХР: покупатель ставит задачу, менеджеры играют в планирование, разработчики пишут тесты и коды, постепенно добавляя их в систему. После каждого модуля команда собирает обратную связь, корректируя дальнейший план и сроки развития.

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

Работа в команде и парность — особенность экстремального программирования. Такой подход:

  • помогает определять текущие задачи и соблюдать дедлайны;

  • обеспечивает вовлеченность участников в процесс и нацеленность на результат;

  • гарантирует взаимозаменяемость благодаря налаженной системе ротации между задачами;

  • позволяет гибко адаптироваться к меняющимся запросам и факторам.

Важно! Рабочий день в ХР начинается и заканчивается обсуждением поставленных задач и ходом их решения. Так все члены команды получают представление о текущем процессе и вносят свои предложения.

Ценности и практики экстремального программирования: Как построить работу команды 4

Примеры успешной работы команды с использованием экстремального программирования

EXtreme Programming эффективно при «размытых» задачах, и работе в меняющихся условиях. Например, при разработке интернет-сайтов, мобильных приложений и игр, систем управления проектами и WEB-приложений. Это связано с ориентированностью ХР на быстрые итерации.

Важно! ХР реализуется только в области разработки ПО, так как единственное его предназначение — ускоренная адаптация к подвижным условиям заказчика при высоком качестве разработки. Вне digital-продукта экстремальное программирование не используется.

Заключение

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

  • Комментарии
Загрузка комментариев...