Aunque esta metodología ágil es menos popular en la actualidad, el Extreme Programming sigue influyendo en el Scrum actual y en diversos movimientos ágiles que abogan por la excelencia técnica, como el Software Craftsmanship y el DevOps.
Hablo mucho de ello en varios artículos, pero nunca había escrito uno específico sobre este método ágil que fue muy popular a principios de la década de 2000. Muchas personas conocen su nombre, pero muy pocas saben en qué consiste concretamente.
Orígenes del Extreme Programming
Kent Beck, Ward Cunningham y Ron Jeffries experimentaron un nuevo método de gestión de proyectos en 1996 en el proyecto C3 de Chrysler, lo que dio lugar a esta metodología. Fue presentada oficialmente en 1999 en la publicación « Extreme Programming Explained ».
Los 5 valores del Extreme Programming
El Extreme Programming se basa en 5 valores esenciales que presentaré brevemente aquí.
- Comunicación
El Extreme Programming exige una comunicación excelente dentro del equipo. La comunicación es la base de un buen funcionamiento.
- Simplicidad
Es esencial pensar en el principio « Keep It Simple, Stupid » (KISS) y desarrollar solo lo que sea necesario. Los desarrolladores no deben tratar de anticipar las cosas, incluso si eso implica realizar refactorización más adelante.
- Retroalimentación (Feedback)
El Extreme Programming (XP) insiste en la importancia de entregar rápidamente para obtener retroalimentación lo antes posible, e incluso con la mayor frecuencia posible. De hecho, esa es la razón por la cual el XP propone ciclos de desarrollo cortos.
Las pruebas unitarias (con TDD) y las pruebas funcionales automatizadas (como BDD) también son formas de obtener retroalimentación rápida sobre los aspectos técnicos del producto. Tener esta retroalimentación rápidamente evita dejar pasar errores a la producción.
- Valentía (Courage)
Es esencial tener valentía para, en ocasiones, aceptar cambios radicales. No se debe persistir en una práctica o arquitectura que no sea adecuada, sino que se debe tener la valentía de elegir algo nuevo.
- Respeto
Aunque este valor no estaba presente originalmente en 1999, Kent Beck lo añadió rápidamente al Extreme Programming para enfatizar la importancia de respetar a las personas con las que trabajamos, ya sea dentro o fuera del equipo.
Iteraciones en el Extreme Programming
Como muchas metodologías ágiles, el Extreme Programming insiste en que se deben realizar iteraciones de corta duración. Cada iteración comienza con una Planificación de Iteración, en la que el equipo define el trabajo a realizar durante esa iteración.
El XP (Extreme Programming) insta a seleccionar las historias de usuario que tienen más valor para los clientes durante cada Planificación de Iteración. Dado que el Extreme Programming recomienda un ritmo sostenible, los usuarios clave (o sus representantes) deben planificar la iteración en función de la velocidad previa.
Además, las historias de usuario utilizadas hoy en día en Scrum, así como el concepto de velocidad/predictibilidad, se derivan en última instancia del Extreme Programming. En Scrum, en realidad, es el equipo de desarrollo el que elige lo que cree que puede lograr.
El contenido de estas iteraciones consta de historias de usuario (requisitos funcionales) y tareas técnicas.
Las iteraciones en XP deben durar entre 1 y 3 semanas. Sin embargo, también es necesario realizar Iteraciones de Lanzamiento en los proyectos con esta metodología (lo cual ha sido adoptado por algunos en Scrum).
Todos los días, excepto el día de la Planificación de la Iteración, todo el equipo realiza una Reunión Diaria para sincronizarse, al igual que hacen todos los equipos Scrum.
El equipo también puede realizar retrospectivas de vez en cuando cuando el método ya no es 100 % adecuado y necesita mejorar.
Esto es lo que ofrece el Extreme Programming de manera simplificada:
Algunos elementos del marco de XP (Extreme Programming)
A continuación, veremos algunas de las reglas impuestas por el XP que curiosamente se encuentran en muchos equipos Scrum maduros.
Hoy en día, esto es bastante común, pero el XP (Extreme Programming) hacía hincapié en que el equipo debía estar ubicado en un espacio de trabajo compartido (open space) y que era fundamental que el equipo mantuviera un ritmo sostenible.
Para las fases exploratorias, el XP (Extreme Programming) recomienda el uso de Spikes, que ya hemos visto en un artículo dedicado. Los Spikes son solicitudes acotadas en el tiempo y sin estimar.
Por otro lado, el XP proponía estimar en días ideales (el número de días que llevaría realizar la solicitud sin tener en cuenta restricciones de tiempo ni las ceremonias). Si bien esta forma de estimación solía ser común en muchas empresas en el pasado, en Francia ha caído en desuso y se ha adoptado la estimación en « puntos de esfuerzo ».
La Prueba es la Retroalimentación
Este marco que promueve la excelencia técnica exige la implementación de diferentes técnicas de ingeniería de software para garantizar la calidad, como TDD, BDD, programación en pareja (trabajar en el mismo equipo), normas de codificación, etc. No se permite llevar una versión a producción sin aplicar estas prácticas.
Roles en el Extreme Programming
El Verificador
El Verificador supervisará regularmente a los desarrolladores para evaluar cómo van. Si se detecta algún problema, se asegurará de que se tome una medida rápidamente. El Extreme Programming insiste en que no se debe permitir que un problema persista.
El Representante del Cliente
Este rol se encarga de escribir las historias de usuario y realizar las pruebas funcionales que validen todos los escenarios requeridos por las historias de usuario. También es responsable de priorizar las solicitudes para los desarrolladores.
El Desarrollador
El desarrollador es quien crea la aplicación. Es multidisciplinario, estima las historias de usuario y puede opinar sobre el contenido de las historias de usuario.
El Probador
Este rol implementa las pruebas funcionales y se encarga de supervisar los resultados de estas pruebas. Si alguna prueba falla, informa a todo el equipo.
El Entrenador XP (Extreme Programming)
El Entrenador XP (Extreme Programming) ayuda al equipo a alcanzar un alto nivel de madurez y mejora continua. También ayuda a planificar las reuniones y a facilitarlas.
Potencialmente, el Verificador y el Entrenador XP (Extreme Programming) pueden ser la misma persona.
Conclusión Extreme Programming
De hecho, Scrum tal como se aplica en las empresas hoy en día ha incorporado todos estos elementos. Se podría hablar incluso de « Scrum XP » porque todos los conceptos del Extreme Programming son parte integral del Scrum que vemos todos los días.
Nota: La escritura « Extrem programming » es incorrecta. No se debe escribir « Extrem Programming » sino « Extreme Programming ».
Soyez le premier à commenter