XP Extreme Programming
Extreme Programming (XP) es una metodología ágil de desarrollo de software propuesta por Kent Beck a fines de los 90. Trabaja en ciclos cortos anidados (trimestre, semana, día) y apuesta por el feedback rápido: pruebas primero, integración continua y releases pequeños. Recorre el flujo y abre cada etapa para ver su proceso.
Sobre las fuentes: las referencias son libros y artículos reales que conozco, pero no abrí cada texto para verificar los detalles. Las citas están a nivel de obra, sin número de página, y el contenido de cada etapa es una síntesis mía: conviene contrastarla con los libros antes de citarla.
Cómo leer este flujo
XP no define una secuencia lineal: son ciclos anidados que se repiten. El diagrama los ordena en una sola línea para leerlos: la parte alta (historias, plan de release) corre cada trimestre; la planificación y la aceptación, cada semana; y la pareja con TDD y la integración continua, varias veces al día. La línea punteada indica que, tras la retrospectiva, se vuelve a planificar.
Es una representación didáctica, no un diagrama oficial de Beck.
Valores
-
Comunicación
Todo el equipo, incluido el cliente, habla seguido y cara a cara; los problemas se dicen temprano.
-
Simplicidad
Hacer lo más simple que funcione hoy, sin construir para necesidades que aún no existen.
-
Retroalimentación
Pruebas, builds, releases y clientes responden rápido para poder corregir el rumbo.
-
Coraje
Decir la verdad sobre estimaciones, refactorizar y descartar código que ya no sirve.
-
Respeto
Valor agregado en la 2.ª edición: cada persona del equipo cuida a las demás y al proyecto.
Prácticas
La lista y los nombres varían entre la 1.ª y la 2.ª edición del libro de Beck; esta es una versión resumida.
-
Juego de planificación
Negocio decide alcance y prioridad; desarrollo estima. Se repite por release y por iteración.
-
Releases pequeños
Entregas frecuentes de poco alcance para aprender de producción.
-
Programación en parejas
Dos personas, un teclado: revisión continua y conocimiento compartido.
-
Desarrollo guiado por pruebas
Primero la prueba que falla, luego el código, luego la limpieza.
-
Refactorización
Mejorar el diseño sin cambiar el comportamiento, en pasos pequeños.
-
Diseño simple / incremental
El diseño evoluciona con el código en vez de definirse completo al inicio.
-
Propiedad colectiva
Cualquiera puede cambiar cualquier parte del código.
-
Integración continua
Integrar y construir varias veces al día con todas las pruebas.
-
Ritmo sostenible
Evitar las horas extra crónicas; un equipo cansado programa peor.
-
Equipo completo / cliente en sitio
Quien necesita el software trabaja con quien lo construye.
Roles
-
Cliente
Escribe y prioriza historias, define y acepta las pruebas de aceptación.
-
Programador
Estima, programa en pareja, escribe pruebas e integra.
-
Entrenador (coach)
Cuida que se siga el proceso y facilita; no manda.
-
Seguimiento (tracker)
Mide velocidad y avance. Rol de la 1.ª edición / literatura posterior; no verificado en el texto.
Proceso de cada etapa
-
Historias El cliente cuenta qué necesita
El cliente escribe historias cortas de lo que el usuario quiere lograr. Son una promesa de conversación, no una especificación completa.
- Quién
- Cliente (con apoyo del equipo para aclarar).
- Ciclo
- Continuo
- Entra
-
- Necesidades del negocio y de los usuarios
- Feedback de releases anteriores
- Produce
-
- Lista de historias en lenguaje del cliente
- Criterios básicos de aceptación
- Prácticas involucradas
- Historias (Stories), Equipo completo (Whole Team), Cliente en sitio
Fuentes (sin verificar a nivel de página)
- libro Beck y Andres. Extreme Programming Explained: Embrace Change, 2.ª ed. Addison-Wesley, 2004.
- libro Beck y Fowler. Planning Extreme Programming. Addison-Wesley, 2000.
-
Plan de release Juego de planificación (trimestral)
Negocio y desarrollo negocian qué historias entran en el próximo release: el negocio decide alcance y prioridad, el desarrollo estima y advierte costos.
- Quién
- Cliente y programadores; el entrenador (coach) facilita.
- Ciclo
- Ciclo trimestral
- Entra
-
- Historias
- Velocidad medida del equipo
- Estimaciones de costo
- Produce
-
- Plan de release priorizado
- Tema o meta del trimestre
- Prácticas involucradas
- Ciclo trimestral (Quarterly Cycle), Juego de planificación (Planning Game), Estimación
Fuentes (sin verificar a nivel de página)
- libro Beck y Fowler. Planning Extreme Programming. Addison-Wesley, 2000.
- libro Beck y Andres. Extreme Programming Explained: Embrace Change, 2.ª ed. Addison-Wesley, 2004.
-
Plan de iteración Ciclo semanal
Al inicio de la semana el equipo elige las historias que cabrán según su velocidad, las divide en tareas y las reparte.
- Quién
- Todo el equipo.
- Ciclo
- Ciclo semanal
- Entra
-
- Plan de release
- Velocidad de la iteración anterior
- Produce
-
- Historias comprometidas
- Tareas con responsable
- Prácticas involucradas
- Ciclo semanal (Weekly Cycle), Juego de planificación, Espacio de trabajo informativo
Fuentes (sin verificar a nivel de página)
- libro Beck y Andres. Extreme Programming Explained: Embrace Change, 2.ª ed. Addison-Wesley, 2004.
- libro Jeffries, Anderson y Hendrickson. Extreme Programming Installed. Addison-Wesley, 2000.
-
Pareja + TDD Prueba, código, refactor
Dos personas programan juntas una tarea: escriben una prueba que falla, escriben el código mínimo para pasarla y limpian el diseño sin cambiar el comportamiento. Repiten en pasos pequeños.
- Quién
- Programadores, en parejas que rotan.
- Ciclo
- Ciclo diario
- Entra
-
- Tarea de la iteración
- Código del equipo (propiedad colectiva)
- Produce
-
- Código con pruebas automáticas
- Diseño simple y sin duplicación
- Prácticas involucradas
- Programación en parejas, Test-first / TDD (rojo, verde, refactor), Refactorización, Diseño incremental, Propiedad colectiva del código, Estándar de codificación, Ritmo sostenible
Fuentes (sin verificar a nivel de página)
- libro Beck. Test-Driven Development: By Example. Addison-Wesley, 2002.
- libro Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999.
- libro Beck y Andres. Extreme Programming Explained: Embrace Change, 2.ª ed. Addison-Wesley, 2004.
-
Integración continua Build de diez minutos
Cada pareja integra sus cambios a la línea principal varias veces al día y se ejecuta el build completo con todas las pruebas, apuntando a que tome unos diez minutos.
- Quién
- Programadores; el servidor de integración ejecuta el build.
- Ciclo
- Varias veces al día
- Entra
-
- Cambios de la pareja
- Suite de pruebas automáticas
- Produce
-
- Línea principal integrada
- Resultado del build
- Prácticas involucradas
- Integración continua, Build de diez minutos (Ten-Minute Build), Despliegue incremental
Fuentes (sin verificar a nivel de página)
- artículo Fowler. «Continuous Integration», martinfowler.com, 2006.
- libro Beck y Andres. Extreme Programming Explained: Embrace Change, 2.ª ed. Addison-Wesley, 2004.
-
¿Build verde? Decisión del flujo
Punto de decisión: si el build falla, arreglarlo pasa a ser la prioridad del equipo antes de seguir agregando cambios.
- Quién
- Todo el equipo.
- Ciclo
- Varias veces al día
- Entra
-
- Resultado del build
- Produce
-
- Decisión: seguir o volver a corregir
- Prácticas involucradas
- Integración continua, Propiedad colectiva del código
Fuentes (sin verificar a nivel de página)
- artículo Fowler. «Continuous Integration», martinfowler.com, 2006.
-
Aceptación del cliente Pruebas de aceptación
El cliente comprueba que cada historia hace lo que pidió, idealmente con pruebas de aceptación automáticas que él mismo definió.
- Quién
- Cliente, con apoyo de programadores y de quien pruebe.
- Ciclo
- Ciclo semanal
- Entra
-
- Historia terminada e integrada
- Criterios de aceptación
- Produce
-
- Historia aceptada o devuelta con comentarios
- Prácticas involucradas
- Cliente en sitio, Pruebas de aceptación, Equipo completo
Fuentes (sin verificar a nivel de página)
- libro Beck. Extreme Programming Explained: Embrace Change, 1.ª ed. Addison-Wesley, 1999.
- libro Jeffries, Anderson y Hendrickson. Extreme Programming Installed. Addison-Wesley, 2000.
-
Release pequeño A producción, seguido
Se pone en producción un incremento pequeño y útil con frecuencia, para recibir feedback real y reducir el riesgo de cada entrega.
- Quién
- Programadores y operación; el cliente decide cuándo.
- Ciclo
- Semanal a trimestral
- Entra
-
- Historias aceptadas
- Línea principal verde
- Produce
-
- Software en producción
- Feedback de usuarios reales
- Prácticas involucradas
- Releases pequeños (Small Releases), Despliegue incremental, Integración continua
Fuentes (sin verificar a nivel de página)
- libro Beck. Extreme Programming Explained: Embrace Change, 1.ª ed. Addison-Wesley, 1999.
- libro Beck y Andres. Extreme Programming Explained: Embrace Change, 2.ª ed. Addison-Wesley, 2004.
-
Retrospectiva Mirar el proceso
El equipo revisa qué funcionó y qué no, mide su velocidad y decide qué cambiar en su forma de trabajar. XP espera adaptación constante del proceso.
- Quién
- Todo el equipo; el entrenador facilita.
- Ciclo
- Ciclo semanal
- Entra
-
- Resultados de la iteración
- Feedback de producción
- Métricas simples
- Produce
-
- Ajustes al proceso
- Velocidad actualizada
- Nuevas historias o cambios de prioridad
- Prácticas involucradas
- Retrospectiva, Mejora (Improvement), Reflexión
Fuentes (sin verificar a nivel de página)
- libro Beck y Andres. Extreme Programming Explained: Embrace Change, 2.ª ed. Addison-Wesley, 2004.
Ver el diagrama como código Mermaid
flowchart TD
H["Historias<br/>El cliente cuenta qué necesita"] --> R["Plan de release<br/>Ciclo trimestral"]
R --> I["Plan de iteración<br/>Ciclo semanal"]
I --> P["Pareja + TDD<br/>Prueba, código, refactor"]
P --> CI["Integración continua<br/>Build de diez minutos"]
CI --> B{"¿Build verde?"}
B -- No --> P
B -- Sí --> A["Aceptación del cliente"]
A --> S["Release pequeño"]
S --> RE["Retrospectiva"]
RE -.-> I