<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Extreme Programming (XP) - Marc Nuri - Blogging about business and technology</title>
        <link>https://blog.marcnuri.com/tag/xp-es</link>
        <description>Blogging about business and technology</description>
        <lastBuildDate>Tue, 12 May 2026 16:45:35 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>www.marcnuri.com</generator>
        <language>es-ES</language>
        <atom:link href="https://blog.marcnuri.com/tag/xp-es/feed.atom.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[¿Qué es Extreme Programming (XP)? Valores, Prácticas y Por Qué Siguen Vigentes]]></title>
            <link>https://blog.marcnuri.com/extreme-programming-xp-introduccion</link>
            <guid isPermaLink="false">https://blog.marcnuri.com/extreme-programming-xp-introduccion</guid>
            <pubDate>Sat, 28 May 2016 09:00:00 GMT</pubDate>
            <description><![CDATA[Introducción práctica a Extreme Programming (XP): sus valores, principios y las 12 prácticas que siguen vigentes. TDD, pair programming, CI y small releases.]]></description>
            <content:encoded><![CDATA[
    <div><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion">Original post</a></div>
    <h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#introduction" aria-label="introduction permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="introduction"></span>Introducción</h2>
<p>Extreme Programming (XP) es una metodología de desarrollo de software que formalizó disciplinas que muchos equipos hoy dan por sentadas: escribir los tests primero, integrar de forma continua, hacer pair programming en problemas difíciles y entregar en pequeños incrementos.
Kent Beck la llamó "extreme" a finales de los 90 porque cada práctica tomaba algo que los equipos tradicionales ya consideraban una virtud y lo llevaba hasta un punto en el que evitarlo se convertía en la opción más difícil.</p>
<p>Más de veinticinco años después, la marca XP es más discreta de lo que fue en su apogeo.
Las prácticas, sin embargo, están en todas partes, entretejidas en cómo los equipos modernos entregan software, a menudo sin que nadie las llame XP.</p>
<p>Esta es una introducción práctica a qué es XP, qué le pide a un equipo y por qué una metodología de 1999 sigue importando en 2026.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#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>¿Qué es Extreme Programming?</h2>
<p>Extreme Programming es una <a class="category-link " title="Ingeniería de calidad: Todo lo relacionado con la ingeniería de calidad, las pruebas de software y la automatización de pruebas" aria-label="metodología de desarrollo de software" href="/category/ingenieria-calidad">metodología de desarrollo de software</a> ligera a la que Kent Beck dio forma mientras trabajaba en el proyecto de nóminas <strong>Chrysler Comprehensive Compensation (C3)</strong> a partir de 1996.</p>
<p>Beck destiló los hábitos de trabajo del equipo en <em>Extreme Programming Explained: Embrace Change</em> (Addison-Wesley, 1999); una segunda edición, coescrita con Cynthia Andres en 2004, suavizó el tono y reagrupó las prácticas.</p>
<p>XP fue una de las metodologías presentes en Snowbird en febrero de 2001 cuando se firmó el Manifiesto Ágil.
Beck, Ron Jeffries y Ward Cunningham fueron tres de los diecisiete firmantes, y las huellas de XP en el manifiesto son fáciles de detectar: software funcionando, individuos e interacciones, respuesta ante el cambio.</p>
<p>Lo que distingue a XP de muchos otros enfoques <a class="tag-link " title="Agile" aria-label="ágiles" href="/tag/agile-es">ágiles</a> es su insistencia en prácticas de ingeniería concretas.
No es solo una forma de planificar el trabajo.
Es una forma de escribir software.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#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>Los Cinco Valores</h2>
<p>La 2ª edición arranca con cinco valores.
Son los cimientos sobre los que se apoya cada práctica de XP:</p>
<ul>
<li><strong>Comunicación</strong>: prioriza el cara a cara sobre la documentación; trata el entendimiento compartido como la unidad de progreso.</li>
<li><strong>Simplicidad</strong>: construye lo más sencillo que pueda funcionar y resiste la complejidad especulativa.</li>
<li><strong>Feedback</strong>: obtén señal lo antes y tan a menudo como sea posible, desde los tests, desde producción y desde el cliente.</li>
<li><strong>Coraje</strong>: di la verdad sobre las estimaciones, refactoriza lo que duele y descarta el código que no se gana su sitio.</li>
<li><strong>Respeto</strong>: trata a cada contribuyente como esencial para el éxito del equipo; el trabajo de calidad depende de una colaboración sana.</li>
</ul>
<p>Las prácticas sirven a los valores.
Cuando las prácticas parecen entrar en conflicto, los valores ayudan a decidir qué hacer a continuación.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#the-principles" aria-label="the-principles permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="the-principles"></span>Los Principios</h2>
<p>XP nombra catorce principios en la 2ª edición. Estos son los que más uso en las decisiones del día a día:</p>
<ul>
<li><strong>Humanidad</strong>: el software lo construyen personas; el ritmo sostenible y el respeto no son cuestiones menores, son requisitos previos para hacer un buen trabajo.</li>
<li><strong>Beneficio mutuo</strong>: cada cambio debería beneficiar a quien lo escribe, a los futuros lectores y al usuario.</li>
<li><strong>Auto-similitud</strong>: los patrones que funcionan a una escala (un método, un release) tienden a funcionar a otras.</li>
<li><strong>Mejora</strong>: la perfección es inalcanzable; las pequeñas mejoras constantes se acumulan.</li>
<li><strong>Pasos pequeños</strong>: los cambios pequeños son más fáciles de validar, entender y revertir que los grandes.</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="Bucles anidados de feedback de Extreme Programming, expandiéndose hacia fuera desde Pair Programming (segundos) hasta Unit Test (minutos), Stand-up Meeting (un día), Acceptance Test (días), Iteration (una semana) y Release (meses)"><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="Bucles anidados de feedback de Extreme Programming, expandiéndose hacia fuera desde Pair Programming (segundos) hasta Unit Test (minutos), Stand-up Meeting (un día), Acceptance Test (días), Iteration (una semana) y Release (meses)" 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>Cada bucle se anida dentro del siguiente. El argumento de Beck es que un equipo sano es aquel en el que la señal viaja libremente por todos ellos: el bucle de segundos del pair programming captura lo que se le escapa al unit test de minutos, el stand-up diario captura lo que se le escapa al acceptance test de varios días, y así hacia fuera.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#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>Las 12 Prácticas</h2>
<p>La lista canónica de prácticas de extreme programming en la 1ª edición es de doce, que se agrupan de forma natural (para nuestros fines aquí) en cuatro bloques.
La 2ª edición las reagrupa como primarias frente a corolarias, pero la lectura por bloques sigue encajando bien con cómo la mayoría de los equipos las piensa hoy en día.</p>
<table><thead><tr><th>Bloque</th><th>Prácticas</th></tr></thead><tbody><tr><td>Planificación</td><td>Planning Game, Small Releases, On-Site Customer</td></tr><tr><td>Codificación</td><td>Simple Design, Metaphor, Coding Standards</td></tr><tr><td>Testing</td><td><a class="post-link " title="¿Qué es Test-Driven Development (TDD)? Una Introducción Práctica" href="/test-driven-development-tdd-introduccion">Testing / TDD</a>, Refactoring</td></tr><tr><td>Equipo</td><td>Pair Programming, Collective Code Ownership, Continuous Integration, Sustainable Pace</td></tr></tbody></table>
<p>Cada práctica es pequeña.
El argumento de XP es que se refuerzan unas a otras: el <a class="tag-link " title="Test-Driven Development (TDD)" aria-label="TDD" href="/tag/tdd-es">TDD</a> sin refactorización se fosiliza, los small releases sin <a class="tag-link " title="CI" aria-label="integración continua" href="/tag/ci-es">integración continua</a> son una lotería, y el pair programming sin un diseño simple se limita a repartir la complejidad.
El conjunto se gana su sitio porque las partes se refuerzan entre sí.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#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>Por Qué XP Sigue Importando</h2>
<p>¿Sigue siendo relevante Extreme Programming en 2026? La marca se diluyó después de mediados de los 2000, pero las prácticas ganaron. Las huellas están por todas partes:</p>
<ul>
<li><strong>Continuous Integration → CI/CD moderno.</strong> El "integra muchas veces al día, con un build y tests automatizados" de XP es la semilla de todo pipeline de entrega moderno.</li>
<li><strong>Small Releases → continuous deployment.</strong> Desplegar al hacer merge es el "release early, release often" de XP con mejor tooling.</li>
<li><strong>La refactorización como trabajo de ingeniería rutinario.</strong> XP ayudó a normalizar la refactorización como una actividad continua en lugar de una fase de limpieza aparte, junto con <em>Refactoring</em> de Martin Fowler (1999), que le dio a la disciplina su vocabulario moderno.</li>
<li><strong>TDD como técnica mainstream.</strong> El desarrollo test-first no es universal, pero se convirtió en una referencia central en la práctica de ingeniería moderna porque XP lo trató como algo fundamental.</li>
<li><strong>Pair Programming, renacido en remoto.</strong> El cambio post-2020 no mató el pairing. Produjo herramientas como Tuple y VS Code Live Share, además de una próspera cultura de pairing asíncrono.</li>
<li><strong>Collective Ownership → cultura moderna de code review.</strong> Los pull requests, el mob programming y las normas de equipo de "nadie es dueño de este archivo" son la propiedad colectiva del código de XP reformulada para equipos distribuidos.</li>
</ul>
<p>Las metodologías que vinieron después de XP (Lean software development, <a class="tag-link " title="DevOps" aria-label="DevOps" href="/tag/devops-es">DevOps</a>, SRE) se construyeron sobre la misma idea central: acorta el bucle de feedback y confía en el equipo para tomar pequeñas decisiones a menudo.
Continuous Delivery (Jez Humble y David Farley, 2010) es el ejemplo más claro. Lee sus capítulos iniciales y estarás leyendo XP, reformulado para la era de los despliegues en la nube y los feature flags.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#common-misconceptions" aria-label="common-misconceptions permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="common-misconceptions"></span>Conceptos Erróneos Comunes</h2>
<p>Hay algunas cosas que conviene aclarar:</p>
<ul>
<li><strong>"XP está muerto."</strong> No exactamente. La mayoría de los equipos que entregan software hoy están practicando la metodología XP en todo menos en el nombre.</li>
<li><strong>"XP significa pair programming todo el día."</strong> La práctica es <em>trabajar en pareja en las partes difíciles</em>, no 100% pairing. Los equipos modernos hacen pairing en cambios delicados, en discusiones de diseño y en el onboarding, no en cada commit.</li>
<li><strong>"XP requiere el paquete completo o nada."</strong> La presentación original enfatizaba cómo las prácticas se apoyaban unas a otras. La 2ª edición hizo el marco más flexible, distinguiendo prácticas fundamentales de aquellas que dependen de una mayor madurez del equipo.</li>
<li><strong>"El On-Site Customer ya no existe, así que XP ya no aplica."</strong> La práctica literal rara vez sobrevive sin cambios. La intención sí: mantén a quienes toman decisiones lo bastante cerca como para acortar los bucles de requisitos y validación.</li>
<li><strong>"XP solo funciona para equipos co-localizados."</strong> La forma original asumía una colaboración física estrecha, pero muchos de sus mecanismos de feedback se traducen bien a entornos distribuidos con tooling moderno y una comunicación disciplinada.</li>
<li><strong>"Metaphor no cuajó."</strong> Cierto. Es la única práctica canónica que no llegó a traducirse al vocabulario moderno común. Reconocerlo es parte de lo que hace creíble al resto.</li>
</ul>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#conclusion" aria-label="conclusion permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="conclusion"></span>Conclusión</h2>
<p>Una forma útil de leer XP hoy no es como una marca que adoptar sino como un vocabulario para nombrar las disciplinas de ingeniería en las que ya te apoyas.
Los valores explican <em>por qué</em> las prácticas se sostienen juntas; las prácticas explican <em>cómo</em> los valores se traducen en trabajo del día a día.</p>
<p>Sigue cualquiera de ellas lo bastante lejos y te llevará de vuelta a las mismas ideas centrales: acorta los bucles de feedback, mantén los diseños simples, colabora estrechamente y haz que el cambio sea lo bastante seguro como para hacerlo a menudo.</p>
<p>Para una lectura más profunda, <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> de Kent Beck (2ª ed., 2004) sigue siendo el texto de referencia.
La <a href="https://martinfowler.com/bliki/ExtremeProgramming.html" rel="noopener" title="Link to https://martinfowler.com/bliki/ExtremeProgramming.html" aria-label="entrada en el bliki de Martin Fowler" target="_blank">entrada en el bliki de Martin Fowler</a> es la mejor visión general de una sola página, y el <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="sitio de Ron Jeffries" target="_blank">sitio de Ron Jeffries</a> sigue siendo uno de los archivos más útiles orientados a la práctica.</p>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#references" aria-label="references permalink" class="anchor"><i class="anchor__link fa-solid fa-link"></i></a><span id="references"></span>Referencias</h2>
<ul>
<li>Kent Beck y Cynthia Andres, <em>Extreme Programming Explained: Embrace Change</em> (2ª 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 (glosario de Agile Alliance)" target="_blank">Extreme Programming (glosario de Agile Alliance)</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 (sitio original de Don Wells)" target="_blank">extremeprogramming.org (sitio original de Don Wells)</a></li>
<li>Jez Humble y David Farley, <em>Continuous Delivery</em> (Addison-Wesley, 2010)</li>
</ul>
<h2 class="heading"><a href="https://blog.marcnuri.com/extreme-programming-xp-introduccion#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>Te Puede Interesar</h2>
<ul>
<li><a class="post-link " title="¿Qué es Test-Driven Development (TDD)? Una Introducción Práctica" href="/test-driven-development-tdd-introduccion">¿Qué es Test-Driven Development (TDD)? Una Introducción Práctica</a></li>
<li><a class="post-link " title="Conventional Commits: Guía Completa para Mejores Mensajes de Commit en Git" href="/conventional-commits-guia-completa">Conventional Commits: Guía Completa para Mejores Mensajes de Commit en Git</a></li>
<li><a class="post-link " title="Black Box vs White Box Testing: Cuándo Usar Cada Enfoque" href="/blackbox-whitebox-testing-comparacion">Black Box vs White Box Testing: Cuándo Usar Cada Enfoque</a></li>
</ul>
  ]]></content:encoded>
            <category>Ingeniería de calidad</category>
            <enclosure url="https://blog.marcnuri.com/static/d131ef69010e0bb64f548b742bec8300/818f3/extreme-programming-xp-introduction.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>