<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id/>
    <title>Extreme Programming (XP) - Marc Nuri - Blogging about business and technology</title>
    <updated>2026-05-12T16:45:35.527Z</updated>
    <generator>www.marcnuri.com</generator>
    <link rel="alternate" href="https://blog.marcnuri.com/tag/xp"/>
    <link rel="self" href="https://blog.marcnuri.com/tag/xp/feed.xml"/>
    <subtitle>Blogging about business and technology</subtitle>
    <entry>
        <title type="html"><![CDATA[What is Extreme Programming (XP)? Values, Practices, and Why They Still Matter]]></title>
        <id>https://blog.marcnuri.com/extreme-programming-xp-introduction</id>
        <link href="https://blog.marcnuri.com/extreme-programming-xp-introduction"/>
        <link rel="enclosure" href="https://blog.marcnuri.com/static/d131ef69010e0bb64f548b742bec8300/818f3/extreme-programming-xp-introduction.jpg" type="image/jpg"/>
        <updated>2016-05-28T09:00:00.000Z</updated>
        <summary type="html"><![CDATA[A practitioner's introduction to Extreme Programming (XP): its values, principles, and the 12 practices that still hold up. TDD, pairing, CI, small releases.]]></summary>
        <content type="html"><![CDATA[
    <div><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction">Original post</a></div>
    <h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#introduction" aria-label="introduction permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="introduction"></span>Introduction</h2>
<p>Extreme Programming (XP) is a software development methodology that formalized disciplines many teams now take for granted: writing tests first, integrating continuously, pairing on difficult problems, and shipping in small increments.
Kent Beck named it "extreme" during the late 1990s because each practice took something traditional teams already treated as a virtue and pushed it to the point where avoiding it became the harder choice.</p>
<p>More than twenty-five years later, the XP brand is quieter than it was at its peak.
The practices, however, are everywhere, woven into how modern teams ship software, often without anyone calling them XP.</p>
<p>This is a practitioner's introduction to what XP is, what it asks of a team, and why a 1999 methodology still matters in 2026.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#what-is-extreme-programming" aria-label="what-is-extreme-programming permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="what-is-extreme-programming"></span>What is Extreme Programming?</h2>
<p>Extreme Programming is a lightweight <a class="category-link " title="Quality Engineering: Everything related to quality engineering, software testing, and test automation" aria-label="software development methodology" href="/category/quality-engineering">software development methodology</a> Kent Beck shaped while working on the <strong>Chrysler Comprehensive Compensation (C3)</strong> payroll project from 1996 onward.</p>
<p>Beck distilled the team's working habits into <em>Extreme Programming Explained: Embrace Change</em> (Addison-Wesley, 1999); a second edition co-authored with Cynthia Andres in 2004 softened the tone and regrouped the practices.</p>
<p>XP was one of the methodologies in the room at Snowbird in February 2001 when the Agile Manifesto was signed.
Beck, Ron Jeffries, and Ward Cunningham were three of the seventeen signatories, and the XP fingerprints on the manifesto are easy to spot: working software, individuals and interactions, responding to change.</p>
<p>What distinguishes XP from many other <a class="tag-link " title="Agile" aria-label="agile" href="/tag/agile">agile</a> approaches is its insistence on concrete engineering practices.
It is not only a way to plan work.
It is a way to write software.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#the-five-values" aria-label="the-five-values permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="the-five-values"></span>The Five Values</h2>
<p>The 2nd edition leads with five values.
They are the foundation underneath every XP practice:</p>
<ul>
<li><strong>Communication</strong>: prefer face-to-face over documentation; treat shared understanding as the unit of progress.</li>
<li><strong>Simplicity</strong>: build the simplest thing that could possibly work, and resist speculative complexity.</li>
<li><strong>Feedback</strong>: get signal as early and as often as possible, from tests, from production, from the customer.</li>
<li><strong>Courage</strong>: tell the truth about estimates, refactor what hurts, throw away code that isn't earning its keep.</li>
<li><strong>Respect</strong>: treat every contributor as essential to the team's success; quality work depends on healthy collaboration.</li>
</ul>
<p>The practices serve the values.
When practices appear to conflict, the values help decide what to do next.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#the-principles" aria-label="the-principles permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="the-principles"></span>The Principles</h2>
<p>XP names fourteen principles in the 2nd edition. The ones I find myself reaching for most often in day-to-day decisions:</p>
<ul>
<li><strong>Humanity</strong>: software is built by people; sustainable pace and respect are not soft concerns, they are prerequisites for good work.</li>
<li><strong>Mutual benefit</strong>: every change should benefit the writer, future readers, and the user.</li>
<li><strong>Self-similarity</strong>: patterns that work at one scale (a method, a release) tend to work at others.</li>
<li><strong>Improvement</strong>: perfection is unreachable; relentless small improvements compound.</li>
<li><strong>Baby steps</strong>: small changes are easier to validate, understand, and reverse than large ones.</li>
</ul>
<span class="post-image__pusher "></span><figure class="post-image "><span class="post-image__scrim"></span><a href="/static/b52ab2c51415ec6cf50077c702a46638/e4a1c/extreme-programming-nested-loops.png" class="post-image__link" title="Extreme Programming nested feedback loops, expanding outward from Pair Programming (seconds) to Unit Test (minutes), Stand-up Meeting (one day), Acceptance Test (days), Iteration (one week), and Release (months)"><span class="post-image__image-container"><div data-gatsby-image-wrapper="" class="gatsby-image-wrapper gatsby-image-wrapper-constrained post-image__image "><picture><source type="image/webp" data-srcset="/static/b52ab2c51415ec6cf50077c702a46638/51497/extreme-programming-nested-loops.webp 362w,/static/b52ab2c51415ec6cf50077c702a46638/215ac/extreme-programming-nested-loops.webp 724w,/static/b52ab2c51415ec6cf50077c702a46638/0c9fb/extreme-programming-nested-loops.webp 1448w" sizes="(min-width: 1448px) 1448px, 100vw"><img data-gatsby-image-ssr="" data-main-image="" style="opacity: 1;" sizes="(min-width: 1448px) 1448px, 100vw" decoding="async" loading="lazy" data-src="/static/b52ab2c51415ec6cf50077c702a46638/e4a1c/extreme-programming-nested-loops.png" data-srcset="/static/b52ab2c51415ec6cf50077c702a46638/ff6b5/extreme-programming-nested-loops.png 362w,/static/b52ab2c51415ec6cf50077c702a46638/cbbf2/extreme-programming-nested-loops.png 724w,/static/b52ab2c51415ec6cf50077c702a46638/e4a1c/extreme-programming-nested-loops.png 1448w" alt="Extreme Programming nested feedback loops, expanding outward from Pair Programming (seconds) to Unit Test (minutes), Stand-up Meeting (one day), Acceptance Test (days), Iteration (one week), and Release (months)" src="https://blog.marcnuri.com/static/b52ab2c51415ec6cf50077c702a46638/e4a1c/extreme-programming-nested-loops.png" srcset="https://blog.marcnuri.com/static/b52ab2c51415ec6cf50077c702a46638/ff6b5/extreme-programming-nested-loops.png 362w,https://blog.marcnuri.com/static/b52ab2c51415ec6cf50077c702a46638/cbbf2/extreme-programming-nested-loops.png 724w,https://blog.marcnuri.com/static/b52ab2c51415ec6cf50077c702a46638/e4a1c/extreme-programming-nested-loops.png 1448w"></picture><script type="module">const t="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;if(t){const t=document.querySelectorAll("img[data-main-image]");for(let e of t){e.dataset.src&&(e.setAttribute("src",e.dataset.src),e.removeAttribute("data-src")),e.dataset.srcset&&(e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset"));const t=e.parentNode.querySelectorAll("source[data-srcset]");for(let e of t)e.setAttribute("srcset",e.dataset.srcset),e.removeAttribute("data-srcset");e.complete&&(e.style.opacity=1,e.parentNode.parentNode.querySelector("[data-placeholder-image]").style.opacity=0)}}</script></div></span></a></figure>
<p>Each loop nests inside the next. Beck's argument is that a healthy team is one where signal travels freely across all of them: the seconds-long loop of pair programming catches what the minutes-long unit test misses, the day-long stand-up catches what the days-long acceptance test misses, and so on outward.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#the-12-practices" aria-label="the-12-practices permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="the-12-practices"></span>The 12 Practices</h2>
<p>The 1st edition's canonical list of extreme programming practices is twelve, which group naturally (for our purposes here) into four bands.
The 2nd edition regroups them as primary versus corollary, but the four-band reading still maps cleanly onto how most teams think about them today.</p>
<table><thead><tr><th>Band</th><th>Practices</th></tr></thead><tbody><tr><td>Planning</td><td>Planning Game, Small Releases, On-Site Customer</td></tr><tr><td>Coding</td><td>Simple Design, Metaphor, Coding Standards</td></tr><tr><td>Testing</td><td><a class="post-link " title="What is Test-Driven Development (TDD)? A Practical Introduction" href="/test-driven-development-tdd-introduction">Testing / TDD</a>, Refactoring</td></tr><tr><td>Team</td><td>Pair Programming, Collective Code Ownership, Continuous Integration, Sustainable Pace</td></tr></tbody></table>
<p>Each practice is small.
XP's argument is that they compound: <a class="tag-link " title="Test-Driven Development (TDD)" aria-label="TDD" href="/tag/tdd">TDD</a> without refactoring fossilizes, small releases without <a class="tag-link " title="CI" aria-label="continuous integration" href="/tag/ci">continuous integration</a> is a coin flip, and pair programming without simple design just spreads the complexity around.
The whole earns its keep because the parts reinforce each other.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#why-xp-still-matters" aria-label="why-xp-still-matters permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="why-xp-still-matters"></span>Why XP Still Matters</h2>
<p>Is Extreme Programming still relevant in 2026? The brand faded after the mid-2000s, but the practices won. The fingerprints are everywhere:</p>
<ul>
<li><strong>Continuous Integration → modern CI/CD.</strong> XP's "integrate many times a day, with an automated build and tests" is the seed of every modern delivery pipeline.</li>
<li><strong>Small Releases → continuous deployment.</strong> Deploy-on-merge is XP's "release early, release often" with better tooling.</li>
<li><strong>Refactoring as routine engineering work.</strong> XP helped normalize refactoring as a continuous activity rather than a separate cleanup phase, alongside Martin Fowler's <em>Refactoring</em> (1999), which gave the discipline its modern vocabulary.</li>
<li><strong>TDD as a mainstream technique.</strong> Test-first development is not universal, but it became a central reference point in modern engineering practice because XP treated it as core.</li>
<li><strong>Pair Programming, reborn remote.</strong> The post-2020 shift didn't kill pairing. It produced tools like Tuple and VS Code Live Share, plus a thriving async-pairing culture.</li>
<li><strong>Collective Ownership → modern code review culture.</strong> Pull requests, mob programming, and "nobody owns this file" team norms are XP's collective code ownership reframed for distributed teams.</li>
</ul>
<p>The methodologies that came after XP (Lean software development, <a class="tag-link " title="DevOps" aria-label="DevOps" href="/tag/devops">DevOps</a>, SRE) built on the same central idea: shorten the feedback loop, and trust the team to make small decisions often.
Continuous Delivery (Jez Humble and David Farley, 2010) is the cleanest example. Read its opening chapters and you are reading XP, restated for the era of cloud deployments and feature flags.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#common-misconceptions" aria-label="common-misconceptions permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="common-misconceptions"></span>Common Misconceptions</h2>
<p>A few things worth getting out of the way:</p>
<ul>
<li><strong>"XP is dead."</strong> Not quite. Most teams shipping software today are practicing the XP methodology in everything but name.</li>
<li><strong>"XP means pair programming all day."</strong> The practice is <em>pair on the hard parts</em>, not 100% pairing. Modern teams pair on tricky changes, design discussions, and onboarding, not on every commit.</li>
<li><strong>"XP requires the full set or none of it."</strong> The original presentation emphasized how the practices support each other. The 2nd edition made the framework more flexible, distinguishing foundational practices from those that depend on greater team maturity.</li>
<li><strong>"On-Site Customer is gone, so XP doesn't apply anymore."</strong> The literal practice rarely survives unchanged. The intent does: keep decision-makers close enough to shorten requirement and validation loops.</li>
<li><strong>"XP only works for co-located teams."</strong> The original form assumed close physical collaboration, but many of its feedback mechanisms translate well to distributed environments with modern tooling and disciplined communication.</li>
<li><strong>"Metaphor didn't make it."</strong> True. It's the one canonical practice that didn't translate into common modern vocabulary. Acknowledging that is part of what makes the rest credible.</li>
</ul>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#conclusion" aria-label="conclusion permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="conclusion"></span>Conclusion</h2>
<p>A useful way to read XP today is not as a brand to adopt but as a vocabulary for naming engineering disciplines you already lean on.
The values explain <em>why</em> the practices hold together; the practices explain <em>how</em> the values translate into daily work.</p>
<p>Follow any one of them far enough and it leads back to the same core ideas: shorten feedback loops, keep designs simple, collaborate closely, and make change safe enough to do often.</p>
<p>For deeper reading, Kent Beck's <a href="https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658" rel="noopener" title="Link to https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658" aria-label="Link to https://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0321278658" target="_blank"><em>Extreme Programming Explained</em></a> (2nd ed., 2004) remains the source text.
<a href="https://martinfowler.com/bliki/ExtremeProgramming.html" rel="noopener" title="Link to https://martinfowler.com/bliki/ExtremeProgramming.html" aria-label="Martin Fowler's bliki entry" target="_blank">Martin Fowler's bliki entry</a> is the best single-page overview, and <a href="https://ronjeffries.com/xprog/what-is-extreme-programming/" rel="noopener" title="Link to https://ronjeffries.com/xprog/what-is-extreme-programming/" aria-label="Ron Jeffries' site" target="_blank">Ron Jeffries' site</a> remains one of the most useful practitioner-oriented archives.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#references" aria-label="references permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="references"></span>References</h2>
<ul>
<li>Kent Beck &amp; Cynthia Andres, <em>Extreme Programming Explained: Embrace Change</em> (2nd ed., Addison-Wesley, 2004)</li>
<li><a href="https://en.wikipedia.org/wiki/Extreme_programming" rel="noopener" title="Link to https://en.wikipedia.org/wiki/Extreme_programming" aria-label="Extreme programming (Wikipedia)" target="_blank">Extreme programming (Wikipedia)</a></li>
<li><a href="https://www.agilealliance.org/glossary/xp/" rel="noopener" title="Link to https://www.agilealliance.org/glossary/xp/" aria-label="Extreme Programming (Agile Alliance glossary)" target="_blank">Extreme Programming (Agile Alliance glossary)</a></li>
<li><a href="https://martinfowler.com/bliki/ExtremeProgramming.html" rel="noopener" title="Link to https://martinfowler.com/bliki/ExtremeProgramming.html" aria-label="Martin Fowler: ExtremeProgramming (bliki)" target="_blank">Martin Fowler: ExtremeProgramming (bliki)</a></li>
<li><a href="https://ronjeffries.com/xprog/what-is-extreme-programming/" rel="noopener" title="Link to https://ronjeffries.com/xprog/what-is-extreme-programming/" aria-label="Ron Jeffries: What is Extreme Programming?" target="_blank">Ron Jeffries: What is Extreme Programming?</a></li>
<li><a href="http://www.extremeprogramming.org/" rel="noopener" title="Link to http://www.extremeprogramming.org/" aria-label="extremeprogramming.org (Don Wells's original site)" target="_blank">extremeprogramming.org (Don Wells's original site)</a></li>
<li>Jez Humble &amp; David Farley, <em>Continuous Delivery</em> (Addison-Wesley, 2010)</li>
</ul>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduction#you-might-also-like" aria-label="you-might-also-like permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="you-might-also-like"></span>You Might Also Like</h2>
<ul>
<li><a class="post-link " title="What is Test-Driven Development (TDD)? A Practical Introduction" href="/test-driven-development-tdd-introduction">What is Test-Driven Development (TDD)? A Practical Introduction</a></li>
<li><a class="post-link " title="Conventional Commits: A Complete Guide to Better Git Commit Messages" href="/conventional-commits">Conventional Commits: A Complete Guide to Better Git Commit Messages</a></li>
<li><a class="post-link " title="Black Box vs White Box Testing: When to Use Each Approach" href="/blackbox-whitebox-testing-comparison">Black Box vs White Box Testing: When to Use Each Approach</a></li>
</ul>
  ]]></content>
        <category label="Quality Engineering"/>
    </entry>
</feed>