[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"general-list":3,"methodology-xp":4,"footer-feature-tags":263},true,{"slug":5,"title":6,"short":7,"group":8,"art":9,"cover":10,"lead":11,"fit":12,"inGrid":3,"h1":13,"intro":14,"tldr":15,"readTime":20,"level":21,"published":22,"updated":23,"about":24,"fitYes":33,"fitNo":38,"artefacts":43,"rollout":81,"metrics":107,"mistakes":130,"shtab":151,"topicGroups":176,"faq":185,"terms":201,"related":234,"seo":253,"topicIndex":256},"xp","Экстремальное программирование (XP)","XP","agile","pair","https:\u002F\u002Fcdn.shtab.app\u002Fmedia\u002Fmethodology\u002Fcovers\u002Fxp\u002Fcover.png","Единственный подход семейства, который говорит не только об организации работы, но и о том, как писать код: тесты вперёд, парная работа, непрерывная сборка, постоянный рефакторинг.","Команды разработки, где переделка кода происходит постоянно и цена ошибки в продуктивной среде высока.","Экстремальное программирование (XP): инженерные практики","Scrum и Kanban описывают, как команда организует работу, и молчат о том, что происходит внутри разработки. XP заполняет этот пробел десятком инженерных практик. Название подхода поблёкло, а его практики разошлись по индустрии так широко, что сегодня их применяют, не зная происхождения.",[16,17,18,19],"Подход появился в конце девяностых у Кента Бека и описывает инженерную сторону работы","Ядро практик: тесты вперёд, парная работа, непрерывная сборка, рефакторинг, простой дизайн","Практики поддерживают друг друга: половина набора работает заметно хуже целого","Смысл всех практик один — сделать изменение кода дешёвым, чтобы гибкость стала возможной","9 мин чтения","продвинутый","2026-08-30","2026-08-31",{"paras":25,"title":32},[26,27,28,29,30,31],"Кент Бек собрал подход в конце девяностых на проекте расчёта зарплаты в Chrysler и описал его в книге 1999 года. Слово «экстремальное» означало доведение известных хороших практик до предела: если проверка кода полезна, проверяйте непрерывно; если тесты полезны, пишите их до кода.","Во втором издании книги Бек назвал пять ценностей: общение, простота, обратная связь, смелость и уважение. Практики выводятся из них, и это объясняет, почему выборочное применение работает хуже: практики поддерживают друг друга.","Например, рефакторинг без тестов опасен, потому что нечем проверить, что вы ничего не сломали. Тесты без непрерывной сборки запускаются редко и устаревают. Непрерывная сборка без быстрой сборки раздражает и её начинают обходить.","Общий смысл всего набора — сделать изменение кода дешёвым. Гибкие подходы обещают приветствовать изменение требований на поздней стадии, и это обещание держится ровно на том, насколько дёшево переделать сделанное.","Само название за двадцать пять лет вышло из повседневного оборота, а практики стали общим местом: непрерывная сборка, автоматические тесты, разбор кода вдвоём, регулярный рефакторинг применяют команды, никогда не слышавшие про XP.","Подход рассчитан на разработку и плохо переносится на другие области. Организационная его часть — недельный и квартальный ритм, истории, запас в плане — пересекается со Scrum, и в этой части подходы взаимозаменяемы.","Что такое XP",[34,35,36,37],"Код меняется постоянно, и цена ошибки в продуктивной среде высока","Команда небольшая и сидит достаточно близко для постоянного общения","Есть возможность автоматизировать тесты и сборку","Руководство готово к тому, что часть времени уходит на качество кода",[39,40,41,42],"Работа не связана с кодом: практики теряют смысл почти полностью","Код меняется редко и живёт годами без правок","Автоматизировать проверку невозможно: наследованная система без тестового окружения","Ожидается рост скорости в первый же месяц: практики окупаются позже",{"lead":44,"items":45,"title":60,"events":61},"Документов у подхода почти нет: он сознательно заменяет их работающим кодом, тестами и общением. Появляются скорее рабочие соглашения.",[46,50,54,57],{"d":47,"t":48,"owner":49},"Короткие описания нужного поведения на языке заказчика, на карточке. Подробности выясняются разговором.","Истории","Заказчик и команда",{"d":51,"t":52,"owner":53},"Главный актив команды. Позволяет менять код смело: если тесты зелёные, поведение сохранилось.","Набор автоматических тестов","Вся команда",{"d":55,"t":56,"owner":53},"Соглашение о том, как выглядит код команды. Нужен, потому что код общий и его читают все.","Стандарт кода",{"d":58,"t":59,"owner":53},"Полная сборка с тестами за считанные минуты. Медленная сборка обходится, и вся конструкция рассыпается.","Быстрая сборка","Что появляется в работе",[62,67,71,76],{"t":63,"dur":64,"out":65,"who":66},"Недельное планирование","1–2 ч","истории на неделю","команда и заказчик",{"t":68,"dur":69,"out":70,"who":66},"Квартальное планирование","полдня","темы квартала и крупные истории",{"t":72,"dur":73,"out":74,"who":75},"Ежедневная сверка","10–15 мин","пары на день, препятствия","команда",{"t":77,"dur":78,"out":79,"who":80},"Смена пар","по ходу дня","знание расходится по команде","разработчики",{"lead":82,"steps":83,"title":106},"Практики связаны, но внедрять их разом невозможно. Порядок ниже выстроен так, чтобы каждая следующая опиралась на уже работающую.",[84,88,91,95,98,102],{"d":85,"t":86,"when":87},"Пока полная сборка идёт полчаса, ни непрерывная интеграция, ни тесты вперёд не приживутся. Цель — минуты.","Ускорьте сборку","первый месяц",{"d":89,"t":90,"when":87},"Каждое изменение собирается и прогоняется автоматически. Сломанная сборка чинится немедленно и имеет приоритет над новой работой.","Включите непрерывную сборку",{"d":92,"t":93,"when":94},"Не переписывайте старое: возьмите правило «новый код приходит с тестом». Через квартал покрытие вырастает само в тех местах, где идёт работа.","Начните писать тесты вперёд на новом коде","второй-третий месяц",{"d":96,"t":97,"when":94},"Начните с сложных мест и с обучения новичков. Постоянная парная работа — следующая ступень, и к ней команды приходят по-разному.","Введите разбор кода вдвоём",{"d":99,"t":100,"when":101},"Улучшение кода происходит по ходу работы над задачей. Отдельный проект по рефакторингу почти всегда отменяют первым.","Договоритесь о рефакторинге","третий месяц",{"d":103,"t":104,"when":105},"Часть ёмкости недели остаётся незанятой. Без запаса первая же срочная задача съедает тесты и рефакторинг.","Заведите запас в плане","постоянно","С чего начать",{"items":108,"title":129},[109,113,117,121,125],{"d":110,"t":111,"how":112},"От изменения до готового результата с тестами. Ключевая величина: от неё зависит, будут ли практики применяться.","Время сборки","Медиана длительности полной сборки за неделю.",{"d":114,"t":115,"how":116},"Сколько сборка остаётся сломанной. Долгие периоды означают, что её починка не в приоритете.","Время красной сборки","Суммарное время в состоянии сбоя за период.",{"d":118,"t":119,"how":120},"Смотрят направление: рост в местах активной работы важнее общего процента.","Доля кода под тестами","Покрытие по модулям, сравнение за квартал.",{"d":122,"t":123,"how":124},"Главный практический результат набора практик.","Дефекты после выпуска","Ошибки, найденные пользователями, к числу выпусков.",{"d":126,"t":127,"how":128},"От готовности изменения до его появления у пользователя.","Время до выпуска","Медиана от завершения работы до выпуска.","Что считать",{"items":131,"title":150},[132,135,138,141,144,147],{"t":133,"fix":134},"Берут одну практику из десяти","Проверьте, на что она опирается. Рефакторинг без тестов опасен, тесты без быстрой сборки устаревают. Начинайте с фундамента: скорость сборки и непрерывная интеграция.",{"t":136,"fix":137},"Тесты пишут после кода и потом","Введите правило «новый код приходит с тестом» и держите его без исключений. Отложенные тесты не пишутся никогда: у команды всегда есть более срочная задача.",{"t":139,"fix":140},"Сборка идёт полчаса","Вложитесь в скорость до всего остального. Медленную сборку разработчики обходят локальными приёмами, и непрерывная интеграция превращается в декларацию.",{"t":142,"fix":143},"Парную работу вводят приказом","Начните с добровольных пар на сложных задачах и с обучения новичков. Принудительная постоянная пара вызывает сопротивление и даёт худший результат, чем её отсутствие.",{"t":145,"fix":146},"Рефакторинг выносят в отдельный проект","Держите его частью обычной работы над задачей. Отдельный проект по улучшению кода отменяют при первом же срочном требовании, и долг возвращается.",{"t":148,"fix":149},"План заполняют под завязку","Оставляйте запас ёмкости на неделю. Без него срочная задача съедает время, которое шло на качество, и практики отмирают по одной.","Где обычно ломается",{"lead":152,"links":153,"title":168,"points":169},"Инженерная часть подхода живёт в системе сборки и в репозитории. В трекере остаётся организационная: истории, недельный ритм, запас ёмкости и видимое состояние работы.",[154,159,163],{"to":155,"tag":156,"text":157,"title":158},"\u002Ffeatures\u002Fkanban-doska\u002F","ВОЗМОЖНОСТЬ","Видимая работа и ограничение незавершённого.","Канбан-доска",{"to":160,"tag":156,"text":161,"title":162},"\u002Ffeatures\u002Fspisok\u002F","Истории с критериями приёмки в чек-листе.","Список",{"to":164,"tag":165,"text":166,"title":167},"\u002Fsolutions\u002Fdlya-produkta\u002F","РЕШЕНИЕ","Как устроить работу продуктовой команды.","Для продукта","Что из этого живёт в Shtab",[170,171,172,173,174,175],"Истории задачами с критериями приёмки в чек-листе шаблона.","Недельный цикл — повторяющееся планирование и понятный горизонт списка.","Парная работа видна назначением двух исполнителей на задачу.","Запас ёмкости поддерживается ограничением незавершённой работы по колонке.","Отдельная метка технического долга не даёт ему потеряться среди историй.","Сводный отчёт показывает, сколько недель подряд запас съедался срочным.",[177,181],{"items":178,"title":180},[179],"praktiki","ПРАКТИКИ",{"items":182,"title":184},[183],"vnedrenie","ВНЕДРЕНИЕ",[186,189,192,195,198],{"a":187,"q":188},"Название вышло из повседневного оборота, практики разошлись по индустрии. Непрерывная сборка, автоматические тесты, регулярный рефакторинг сегодня применяют команды, никогда не слышавшие об этом подходе. Читать первоисточник по-прежнему полезно: там объяснено, почему практики связаны, и это объяснение нигде больше не собрано так плотно.","XP устарел?",{"a":190,"q":191},"Да, и это самая частая комбинация. Scrum отвечает за роли, события и ритм; XP — за то, как пишется код. Пересечение только в организационной части: недельный цикл, истории, планирование. Команды обычно берут ритм из Scrum, а инженерные практики из XP.","Можно ли совмещать с Scrum?",{"a":193,"q":194},"Нет, хотя интуиция подсказывает обратное. Двое над одной задачей работают медленнее одного примерно на десятую-пятую часть — заметно меньше, чем подсказывает интуиция. При этом сразу проходит разбор кода, знание расходится по команде, а число дефектов падает. Постоянная парная работа подходит не всем командам; выборочная на сложных местах даёт большую часть эффекта.","Парное программирование удваивает затраты?",{"a":196,"q":197},"С правила «новый код приходит с тестом» и со скорости сборки. Переписывать старое ради покрытия почти всегда невыгодно: тесты появляются там, где идёт работа, и через квартал покрывают именно активные места. Отдельный проект «покрыть всё тестами» обычно не доживает до конца.","С чего начать, если код старый и тестов нет?",{"a":199,"q":200},"Показать цифры: дефекты после выпуска, время на их исправление, время сборки. Разговор в терминах «нам нужно время на рефакторинг» проигрывает всегда; разговор о том, что треть времени команды уходит на исправление ошибок, обычно выигрывает.","Что делать, если руководство не даёт времени на качество?",[202,205,208,211,214,217,219,222,225,228,231],{"slug":203,"title":204},"extreme-programming","Экстремальное программирование",{"slug":206,"title":207},"tdd","Разработка через тестирование",{"slug":209,"title":210},"continuous-integration","Непрерывная интеграция",{"slug":212,"title":213},"pair-programming","Парное программирование",{"slug":215,"title":216},"refactoring","Рефакторинг",{"slug":8,"title":218},"Agile",{"slug":220,"title":221},"user-story","Пользовательская история",{"slug":223,"title":224},"acceptance-criteria","Критерии приёмки",{"slug":226,"title":227},"definition-of-done","Определение готовности",{"slug":229,"title":230},"increment","Инкремент",{"slug":232,"title":233},"cross-functional-team","Кросс-функциональная команда",[235,240,243,248],{"to":236,"tag":237,"text":238,"title":239},"\u002Fmethodology\u002Fscrum\u002F","МЕТОДОЛОГИЯ","Организационный каркас, с которым чаще всего совмещают эти практики.","Scrum",{"to":241,"tag":237,"text":242,"title":218},"\u002Fmethodology\u002Fagile\u002F","Семейство, к которому подход относится, и его общие ценности.",{"to":244,"tag":245,"text":246,"title":247},"\u002Fmethodology\u002Fproduct\u002Fotkrytie\u002F","ТЕМА","Что стоит проверить до того, как писать код.","Продуктовое открытие",{"to":249,"tag":250,"text":251,"title":252},"\u002Fmethodology\u002Fsravneniya\u002Fagile-ili-scrum\u002F","СРАВНЕНИЕ","Чем ценности отличаются от фреймворка и что выбирают на самом деле.","Agile или Scrum",{"title":254,"description":255},"Экстремальное программирование (XP): практики и внедрение","Как устроено экстремальное программирование: ценности Кента Бека, тесты вперёд, парная работа, непрерывная сборка и рефакторинг. Порядок внедрения практик и ошибки.",[257,260],{"slug":179,"title":258,"hint":259},"Инженерные практики XP","тесты, пары, сборка, рефакторинг",{"slug":183,"title":261,"hint":262},"Как внедрять практики по одной","порядок, в котором они приживаются",[264,273,279,288,293,299,305,311,315,321],{"id":265,"name":266,"hex":267,"translations":268,"count_pages":272},8,"Компания","#f40925",{"ru":269,"en":270},{"name":266},{"name":271},"Company",9,{"id":274,"name":275,"hex":276,"translations":277,"count_pages":265},26,"Главная страница",null,{"ru":278},{"name":275},{"id":280,"name":281,"hex":282,"translations":283,"count_pages":287},2,"Проекты","#3027ff",{"ru":284,"en":285},{"name":281},{"name":286},"Project",15,{"id":289,"name":290,"hex":276,"translations":291,"count_pages":280},33,"ИИ",{"ru":292},{"name":290},{"id":294,"name":295,"hex":276,"translations":296,"count_pages":298},34,"Комментарии",{"ru":297},{"name":295},4,{"id":300,"name":301,"hex":276,"translations":302,"count_pages":304},25,"Задачи",{"ru":303},{"name":301},24,{"id":306,"name":307,"hex":276,"translations":308,"count_pages":310},27,"Рабочие пространства",{"ru":309},{"name":307},3,{"id":304,"name":312,"hex":276,"translations":313,"count_pages":265},"Kanban-доска",{"ru":314},{"name":312},{"id":316,"name":317,"hex":276,"translations":318,"count_pages":320},23,"Диаграмма Ганта",{"ru":319},{"name":317},1,{"id":287,"name":322,"hex":276,"translations":323,"count_pages":320},"Календарь",{"ru":324},{"name":322}]