XP es una metodología ágil centrada en la excelencia técnica y la ingeniería de software, diseñada para proyectos con requisitos cambiantes y de alto riesgo.
1. Historia
- Creador: Kent Beck, junto a Ward Cunningham y Ron Jeffries.
- Origen: Nació en 1996 durante el proyecto C3 (Chrysler Comprehensive Compensation), un sistema de nómina para Chrysler que estaba en riesgo de fracasar.
- Premisa: Kent Beck decidió tomar las mejores prácticas de ingeniería de software conocidas y llevarlas “al extremo” (por ejemplo: si las pruebas son buenas, se prueba todo el tiempo; si la revisión de código es buena, se revisa continuamente mediante programación en pareja).
- Consolidación: En 1999 se publicó el libro fundacional Extreme Programming Explained.
2. Filosofía y Valores
La filosofía de XP se fundamenta en llevar la disciplina técnica al límite para adaptarse rápidamente al cambio, sostenida por 5 valores clave:
- Comunicación: El código y las conversaciones constantes sustituyen a la documentación excesiva.
- Simplicidad: Hacer únicamente lo necesario hoy (You Aren’t Gonna Need It – YAGNI).
- Retroalimentación (Feedback): Pruebas constantes a nivel de código y entregas cortas al cliente.
- Coraje (Valentía): Refactorizar código complejo sin temor y descartar trabajo cuando no funciona.
- Respeto: Todos los miembros aportan valor y cuidan la calidad del código común.

3. Gestión del Ciclo de Vida en XP
XP organiza el desarrollo en iteraciones muy cortas (1 a 2 semanas) compuestas por 6 fases principales:
- Exploración: El cliente escribe las historias de usuario (User Stories) y el equipo evalúa la tecnología.
- Planificación de Entregas (Release Planning): Se priorizan las historias y se acuerda la fecha de la primera versión.
- Iteraciones (Iterative Development): Se dividen las historias en tareas técnicas. Aquí ocurren las prácticas esenciales:
- TDD (Test-Driven Development): Escribir las pruebas automatizadas antes que el código funcional.
- Programación en pareja (Pair Programming): Dos desarrolladores trabajan en la misma estación de trabajo.
- Integración continua: Subir e integrar código varias veces al día.
- Producción (Release): Pruebas de aceptación finales y despliegue del software funcionando.
- Mantenimiento: Ajustes y soporte mientras se continúan desarrollando nuevas iteraciones.
- Muerte del Proyecto: Se alcanza cuando el cliente no tiene más historias que agregar o el software se entrega satisfactoriamente.
4. Relación entre XP y Scrum
XP y Scrum no son rivales; de hecho, se complementan perfectamente y suelen utilizarse en conjunto.
| Aspecto | Scrum | Extreme Programming (XP) |
| Enfoque principal | Gestión y organización del proyecto. | Prácticas de ingeniería y desarrollo de código. |
| Iteraciones | Sprints de 1 a 4 semanas. | Iteraciones más cortas (1 a 2 semanas). |
| Flexibilidad en iteración | No se modifican los objetivos durante el Sprint. | Permite intercambiar historias dentro de la iteración si no se ha comenzado a programar. |
| Prácticas específicas | Define roles y eventos (Scrum Master, Daily, etc.). | Define prácticas de código (TDD, Refactorización, Pair Programming). |
Sinergia habitual: Muchas empresas utilizan Scrum para la gestión (Sprints, Product Backlog, Daily) y XP para la ingeniería (TDD, Integración Continua, Programación en Pareja).
5. Ventajas y Desventajas
Ventajas
- Alta calidad de código: Gracias a TDD y refactorización continua, la tasa de errores (bugs) se reduce drásticamente.
- Adaptación rápida: Responde mejor que cualquier otra metodología a cambios de requisitos de último momento.
- Satisfacción del cliente: Recibe software funcional y utilizable en lapsos de tiempo muy breves.
- Código compartido: La propiedad colectiva evita que el conocimiento quede atrapado en una sola persona.
Desventajas
- Alto desgaste humano: La programación en pareja continua y el ritmo intenso pueden causar agotamiento si no se gestionan bien.
- Dificultad de escalabilidad: Funciona de manera óptima en equipos pequeños (menos de 10-12 personas).
- Resistencia al cambio: Requiere programadores altamente disciplinados y clientes comprometidos a tiempo completo.
- Poca documentación: Al priorizar el código sobre los documentos, la incorporación de nuevos desarrolladores puede depender de la tutoría directa.


Si XP busca adaptarse constantemente a los cambios, ¿cómo se determina cuándo seguir refactorizando y mejorando el código y cuándo detenerse para evitar gastar tiempo en mejoras que el cliente quizá nunca necesite?
Qué estrategias se pueden implementar cuando el Equipo de Scrum falla repetidamente en cumplir con su Sprint
En XP, la Integración Continua exige subir código varias veces al día con todas las pruebas en verde. Pero con TDD y tareas complejas, a veces necesitas horas hasta tener todas las pruebas pasando.
¿Cómo integras código a medio terminar sin romper las reglas de XP ni sacrificar calidad?
¿Como hacen en XP con el diseño simple para no terminar reescribiendo el codigo a cada rato cuando el proyecto va creciendo?”
Qué criterios específicos de arquitectura o diseño de software se utilizan en XP para evitar que la refactorización constante afecte el rendimiento del sistema a gran escala?