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

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

Практика для сильных

Разработчики любят рефлексировать о своих рабочих методах. У них постоянно появляются новые концепции и подходы к тому, как делать софт. И вот ещё один. 

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

Экстремальное программирование (XP, eXtreme Programming) — это когда обычные приёмы разработки доводят до предела. Название пошло из математики от слова «экстремум» — так обозначается максимальное или минимальное значение на графике функции:

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

Экстремальное программирование работает по тому же принципу: мы берём лучшие практики гибкого программирования и выкручиваем их на максимум. 

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

Все остальные части экстремального программирования получаются точно так же: берём идею и доводим до крайности. Чтобы было понятно, что откуда берётся в экстремальном программировании, мы покажем аналоги в обычном.

Коллективное владение кодом

Обычный подход: у кода есть автор, который отвечает за его правильную работу.

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

❌ По факту это часто приводит к спорам, чей код лучше и зачем кто-то полез улучшать то, что и так работало.

Стандарт оформления

Обычный подход: команда выбирает единый стиль оформления и написания кода.

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

✅ Хорошая практика, которой часто не хватает многим разработчикам.

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

Простота проектирования

Обычный подход: команда с самого начала выбирает примерную архитектуру проекта и придерживается её.

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

❌ Иногда это может навредить проекту, особенно когда вместо микросервисов получается монолит, к которому совсем другие требования.

✅ Зато текущая версия бодра, весела и сделана на актуальных технологиях.

Восьмичасовой рабочий день

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

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

✅ Идея в том, чтобы не перерабатывать и было время на отдых.

Непрерывная интеграция и частые релизы

Обычный подход: выпуск новых версий чаще всего привязан к спринтам — новая версия выходит раз в 1−2 недели.

В экстремальном подходе нужно выпускать код в продакшен каждый день, а лучше даже несколько раз в день. Как только код проходит все тесты, он идёт на выпуск.

🤔 С одной стороны, тесты пройдены, а значит, всё работает. С другой — меньше шансов переделать что-то, если придёт в голову более удачная мысль.

Рефакторинг

Обычный подход: программисты занимаются рефакторингом при закрытии технического долга.

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

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

Сначала тесты, потом код

Обычный подход: сначала код, а потом к нему пишут тесты.

В экстремальном программировании используют test-driven development, то есть «тестами вперёд». Смысл в том, чтобы сначала написать автоматический тест, который пройдёт только код с нужной нам логикой, а после этого написать сам код. Если код не будет решать нашу задачу, значит, он не пройдёт тест. А если пройдёт, значит, он делает то, что нужно.

✅ Тесты — это в любом случае хорошо.

Заказчик участвует в разработке

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

В экстремальном программировании заказчик всегда доступен для вопросов, с ним обсуждают код, возможности алгоритмов и функции программы. Любой разработчик может позвонить заказчику в любой момент, чтобы что-нибудь уточнить. 

❌ Сложно найти заказчика, который будет доступен для вопросов 24/7 и ещё разбирается в алгоритмах.

Игра в планирование

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

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

✅ Планирование не повредило ещё ни одному проекту.

❌ Заказчику нужно быть очень вовлечённым. 

Это хорошо или плохо?

Экстремальное программирование в первую очередь нужно для интереса команды: когда годами сидишь за компьютером и пишешь код по техзаданию, может быть очень тяжело. И такие практики очень бодрят как разработчика, так и клиента. А когда команда бодра, она лучше работает. 

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

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy