La Programación Extrema (XP) es una metodología ágil de desarrollo de software. Al igual que otras metodologías ágiles, XP tiene sus herramientas, procesos y roles únicos. El creador de XP, el desarrollador estadounidense Kent Beck, no inventó nada completamente nuevo, sino que tomó las mejores prácticas del desarrollo ágil y las amplificó al extremo, de ahí el nombre Programación Extrema.
El autor de la metodología, Kent Beck, lideró el proyecto del Sistema de Compensación Integral de Chrysler a finales de los 90, donde aplicó por primera vez las prácticas de XP. Documentó su experiencia y el concepto creado en el libro “Programación Extrema Explicada,” publicado en 1999. A este libro le siguieron otros que detallaban las prácticas de XP. Los contribuyentes al desarrollo de la metodología incluyen a Ward Cunningham, Martin Fowler, y otros.
A diferencia de otras metodologías ágiles, XP es exclusivamente utilizada en el desarrollo de software. No puede aplicarse a otros negocios o à la vida diaria como Scrum, Kanban o Lean.
El objetivo de XP es hacer frente a los requisitos que cambian constantemente para el producto de software y mejorar la calidad del desarrollo. Por lo tanto, XP es adecuada para proyectos complejos e inciertos.
XP gira en torno a cuatro actividades fundamentales: codificación, pruebas, diseño y escucha. Además, la Programación Extrema tiene valores centrales: simplicidad, comunicación, retroalimentación, coraje y respeto.
13 Prácticas de la Programación Extrema

1. Todo el Equipo
Todos los participantes del proyecto que utilizan XP trabajan como un solo equipo. Este equipo debe incluir un representante del cliente, preferiblemente un usuario final real que conozca el negocio. El cliente establece los requisitos del producto y prioriza la funcionalidad. Los analistas de negocio pueden asistir al cliente. Desde el lado de los ejecutores, el equipo incluye desarrolladores, testers, a veces un coach que guía al equipo, y un gerente que proporciona recursos.
2. Juego de Planificación
La planificación en XP ocurre en dos etapas: planificación del lanzamiento y planificación de iteraciones.
- Planificación del Lanzamiento: El equipo de programación se reúne con el cliente para determinar la funcionalidad deseada para el próximo lanzamiento, generalmente en 2 – 6 meses. Dado que los requisitos del cliente a menudo son vagos, los desarrolladores los clarifican y los descomponen en tareas que se pueden completar en un día o menos. El cliente debe entender el entorno operativo donde funcionará el producto.
Las tareas se registran en tarjetas, y el cliente las prioriza. Luego, los desarrolladores estiman el tiempo requerido para cada tarea. Una vez que las tareas están descritas y estimadas, el cliente revisa la documentación y aprueba el inicio del trabajo. Para el éxito del proyecto, es crítico que el cliente y el equipo de programación jueguen en el mismo campo: el cliente elige la funcionalidad genuinamente necesaria dentro del presupuesto, y los programadores alinean apropiadamente los requisitos del cliente con sus capacidades. - Planificación de Iteración: Se lleva a cabo cada dos semanas, a veces más o menos frecuentemente. El cliente está presente para definir la funcionalidad para la próxima iteración y realizar cambios en los requisitos del producto.
3. Lanzamientos Pequeños
Los lanzamientos de XP son frecuentes pero con funcionalidad limitada. Este enfoque facilita la prueba y mantenimiento de la operatividad del sistema y proporciona al cliente funcionalidades de valor comercial en cada iteración.
4. Pruebas del Cliente
El cliente especifica pruebas de aceptación automatizadas para verificar la funcionalidad del producto. El equipo escribe estas pruebas y las utiliza para probar el código.
5. Propiedad Colectiva del Código
En XP, cualquier desarrollador puede modificar cualquier parte del código, ya que el código no pertenece a su autor, sino a todo el equipo.
6. Integración Continua
Las nuevas partes del código se integran en el sistema de inmediato; los equipos de XP lanzan una nueva versión cada pocas horas o más frecuentemente. Esta práctica asegura que el impacto de los recientes cambios en el sistema sea visible de inmediato. Si una nueva pieza de código rompe algo, identificar y corregir el error es mucho más fácil.
7. Estándares de Codificación
Con la propiedad colectiva del código, adoptar estándares de codificación comunes es crucial para que el código parezca escrito por un solo profesional. Los equipos pueden desarrollar sus propios estándares o adoptar los existentes.
8. Metáfora del Sistema
La metáfora del sistema es una comparación con algo familiar para crear una visión compartida dentro del equipo. Típicamente, la persona que desarrolla la arquitectura y ve el sistema en su totalidad ideó la metáfora.
9. Ritmo Sostenible
Los equipos de XP trabajan à la máxima productividad mientras mantienen un ritmo sostenible. La Programación Extrema desaconseja el trabajo extra y promueve una semana laboral de 40 horas.
10. Desarrollo Guiado por Pruebas (TDD)
Una de las prácticas más desafiantes en XP. Los programadores escriben pruebas antes de escribir el código que se va a probar. Este enfoque garantiza que cada pieza de funcionalidad esté completamente cubierta por pruebas. Cuando los desarrolladores envían el código, se ejecutan de inmediato las pruebas unitarias, y todas las pruebas deben pasar, asegurando que el equipo se está moviendo en la dirección correcta.
11. Programación en Pareja
Imagina a dos desarrolladores trabajando en una computadora en una sola pieza de funcionalidad. Esta práctica es la programación en pareja, la práctica más controvertida en XP. El dicho “dos cabezas piensan mejor que una” ilustra bien su esencia. De dos soluciones a un problema, se elige la mejor, el código se optimiza de inmediato, y se detectan errores antes de que ocurran, resultando en un código limpio entendido por ambos desarrolladores.
12. Diseño Simple
El diseño simple en XP significa hacer solo lo que se necesita ahora, sin intentar predecir la funcionalidad futura. El diseño simple y la refactorización continua crean un efecto sinérgico: cuando el código es simple, es más fácil optimizarlo.
13. Refactorización
La refactorización es el proceso continuo de mejorar el diseño del sistema para cumplir con nuevos requisitos. Incluye la eliminación de duplicación de código, el aumento de la cohesión y la reducción del acoplamiento. XP exige una refactorización constante, de modo que el diseño del código siempre se mantenga simple.
Ventajas y Desventajas de XP
XP es controvertida y a menudo criticada por quienes no lograron implementarla. Sin embargo, sus beneficios son evidentes cuando el equipo utiliza plenamente al menos una práctica de XP.
Los beneficios de aspirar a XP incluyen:
- Satisfacción del Cliente: Los clientes obtienen el producto que necesitan, incluso si no tienen una visión clara desde el principio.
- Flexibilidad: El equipo realiza cambios en el código rápidamente y añade nuevas funcionalidades debido a un diseño de código simple, planificación frecuente y lanzamientos.
- Fiabilidad: El código siempre funciona debido a pruebas constantes e integración continua.
- Mantenibilidad: El equipo puede mantener fácilmente el código porque está escrito siguiendo un único estándar y se refactoriza constantemente.
- Productividad: Ritmo de desarrollo rápido debido à la programación en pareja, sin horas extras y la participación del cliente.
- Código de Alta Calidad
- Mitigación de Riesgos: Los riesgos de desarrollo se reducen ya que la responsabilidad se distribuye equitativamente, y el proyecto no se ve comprometido por la salida o llegada de miembros del equipo.
- Eficiencia de Costos: Los costos de desarrollo son más bajos ya que el equipo se centra en el código en lugar de la documentación y las reuniones.
A pesar de sus ventajas, XP no siempre funciona y tiene varias debilidades:
- Involucramiento del Cliente: El éxito depende del involucramiento del cliente, lo cual puede ser desafiante de lograr.
- Plazos Impredecibles: Es difícil predecir los costos de tiempo del proyecto ya que la lista completa de requisitos es desconocida al inicio.
- Dependencia del Nivel de Habilidad: XP depende en gran medida del nivel de habilidad de los programadores y funciona mejor con profesionales senior.
- Resistencia de la Gestión: La gestión a menudo se opone à la programación en pareja, cuestionando la necesidad de pagar a dos programadores en lugar de uno.
- Costo: Las reuniones frecuentes con los programadores pueden ser costosas para los clientes.
- Cambios Culturales: Implementar XP requiere cambios culturales significativos.
- Falta de Estructura: La falta de estructura y documentación de XP hace que no sea adecuada para proyectos grandes.
- Requisitos No Funcionales: Los requisitos funcionales son difíciles de describir como historias de usuario en metodologías ágiles.
Principios de XP
En su primer libro, Kent Beck delineó los siguientes principios de XP: simplicidad, comunicación, retroalimentación y coraje. En una edición posterior, añadió un quinto principio: respeto.1. Simplicidad
El desarrollo de XP comienza con la solución más simple que satisface la necesidad funcional actual. Los miembros del equipo consideran solo lo que necesita hacerse ahora y no incorporan funcionalidad que pueda ser necesaria en el futuro.
2. Comunicación
La comunicación en XP ocurre en vivo en lugar de a través de documentación. El equipo se comunica activamente entre sí y con el cliente.
3. Retroalimentación
La retroalimentación en XP se implementa de tres maneras:
- Retroalimentación del Sistema: A través de pruebas constantes de módulos.
- Retroalimentación del Cliente: El cliente es parte del equipo y participa en la escritura de pruebas de aceptación.
- Retroalimentación del Equipo: Durante la planificación, respecto a las estimaciones de tiempo de desarrollo.
4. Coraje
Al algunas prácticas de XP son tan poco convencionales que requieren coraje y autocontrol constante.5. Respeto
El respeto en XP significa respetar al equipo y el respeto a uno mismo. Los miembros del equipo no deben hacer cambios que rompan la compilación, las pruebas de módulo o ralenticen el trabajo de los colegas. Cada miembro se esfuerza por la más alta calidad de código y diseño.
Implementación de XP y el Flujo de Trabajo
Kent Beck recomienda implementar XP para resolver problemas del proyecto. El equipo selecciona el problema más urgente y lo resuelve utilizando una de las prácticas de XP. Luego, pasan al siguiente problema, utilizando otra práctica. Este enfoque asegura que los problemas motiven la adopción de XP, y el equipo dominará gradualmente todas las herramientas de la metodología.
Para implementar XP en un proyecto existente, adopte gradualmente sus prácticas en las siguientes áreas:
- Pruebas: El equipo crea pruebas antes de escribir nuevo código y refactoriza gradualmente el código viejo.
- Diseño: El equipo refactoriza continuamente el código antiguo, típicamente antes de añadir nueva funcionalidad.
- Planificación: El equipo debe interactuar de cerca con el cliente.
- Gestión: Los gerentes aseguran que todos los miembros del equipo sigan las nuevas reglas.
- Desarrollo: Comience organizando estaciones de trabajo para la programación en pareja y animé a las parejas a programar la mayor parte del tiempo.
Ejemplo de un Flujo de Trabajo Usando XP

Quién Usa XP
Según una encuesta de VersionOne de 2016, solo el 1% de las empresas ágiles usa XP en su forma pura. Otro 10% utiliza un híbrido de Scrum y XP.Aunque XP no es la metodología más común, sus prácticas son utilizadas por la mayoría de las empresas que emplean metodologías ágiles. Por ejemplo, Pivotal Software, Inc. atribuye su éxito a XP.
Pivotal Software, Inc.
Pivotal Software, Inc. desarrolla análisis de negocio basados en big data y proporciona servicios de consultoría. Sus productos son utilizados por corporaciones como Ford, Mercedes, BMW, GAP, Humana, principales bancos, agencias gubernamentales y compañías de seguros.
Pivotal aboga por metodologías ágiles como esenciales para el desarrollo moderno. Entre las variantes ágiles, eligieron XP, un enfoque que beneficia tanto a los clientes como a los equipos de programación. Su jornada laboral comienza con reuniones de pie y termina a las 6:00 PM — sin horas extra. Pivotal utiliza juegos de planificación, programación en pareja, pruebas constantes, integración continua, y otras prácticas de XP.
Qué Leer Para Entender XP
- “Programación Extrema Explicada,” “Planificación de Programación Extrema,” “Desarrollo Guiado por Pruebas” de Kent Beck: Estos libros del creador de XP proporcionan una comprensión profunda de la metodología y sus ventajas.
- “Refactorización: Mejorando el Diseño de Código Existente” de Martin Fowler: Un libro de un coautor de XP que explica los principios y técnicas de refactorización.
- “Programación Extrema Aplicada: Jugando para Ganar” de Ken Auer y Roy Miller: Una guía práctica de las prácticas de XP con ejemplos.
Herramientas para Implementar XP en Equipos
Redmine

Un gestor de tareas gratuito y de código abierto con características como soporte para múltiples proyectos, gestión de tareas flexible, gráficos de Gantt, seguimiento de tiempo, gestión de documentación, y creación de tareas a través de correo electrónico.
Basecamp

Un servicio simple y fácil de usar para el trabajo colaborativo en proyectos, que incluye un gestor de tareas, tablones de mensajes, chat integrado, almacenamiento de archivos y calendario.
Jira

Un robusto servicio diseñado para desarrolladores de proyectos ágiles, que combina un rastreador de errores y una herramienta de gestión de proyectos con muchas características y opciones de sincronización.
Worksection

Un servicio seguro para el trabajo en proyectos, que permite la configuración de tareas y el control de procesos, el seguimiento de correspondencias, la personalización de filtros, el seguimiento de tiempo y financiero, y la gestión de archivos.
Conclusión
La Programación Extrema es una metodología ágil centrada en producir código funcional de alta calidad con una arquitectura simple. Su propósito es reducir la incertidumbre en los proyectos y responder de manera flexible a los cambios en los requisitos del producto.
XP es exclusivamente para el desarrollo de software y no puede adaptarse a otros negocios.
Es una de las metodologías más desafiantes de implementar debido a sus trece prácticas. Sin embargo, sus prácticas son ampliamente utilizadas en proyectos ágiles, demostrando su efectividad.
Los autores aconsejan dominar gradualmente las prácticas de XP mientras se resuelven los problemas del proyecto. Si ves los beneficios, continúa en el mismo espíritu. No hay obligación de implementar XP de manera todo o nada. Después de todo, las metodologías ágiles deben ser flexibles en su aplicación — adaptándose a las necesidades del equipo de proyecto específico.