Extreme Programming (XP) surgió a finales de los 90s, cuando la industria del software estaba bajo dos grandes influencias, el cambio de paradigma de programación estructurada a programación orientada a objetos, y el boom de internet enfatizando speed-to-market y el crecimiento de las organizaciones como factores de competitividad para los negocios.
El objetivo de XP es reducir el costo del cambio, usando principios, valores y prácticas básicas, por medio de las cuales un proyecto debe ser mas flexible al cambio.
Aunque en principio se empleó exclusivamente para el desarrollo de la ingeniería del Software, su planteamiento ha ido ganando terreno en otras áreas de la industria. De hecho, a día de hoy es el más destacado de todos los procesos de desarrollo ágil.
Los objetivos que XP plantea en detalle son:
- Un intento de reconciliar humanidad y productividad
- Un mecanismo de cambio social
- Un camino a la mejora
- Un estilo de desarrollo
- Una disciplina de desarrollo de software
XP mejora un proyecto en cuatro formas esenciales: comunicación, simplicidad, retroalimentación y coraje, las cuales se establecen como valores.
Valores XP
Comunicación : La comunicación de los requerimientos de un proyecto a los desarrolladores en un proyecto bajo una metodología formal se hace por medio de la documentación, en XP el objetivo es dar a los desarrolladores una visión compartida del sistema, alineada con la de los usuarios del sistema, favoreciendo diseños simples, metáforas comunes, la colaboración entre usuarios y programadores, comunicación verbal frecuente y retroalimentación.
Simplicidad : XP fomenta el iniciar con la solución mas simple y desarrollar a partir de esa versiones mejores. La diferencia con las metodologías convencionales es diseñar y codificar para las necesidades actuales en lugar de las futuras. XP plantea que el riesgo de codificar sin considerar cambios futuros compensa el trabajo de invertir en posibles futuros requerimientos que podrían cambiar antes de ser relevantes.
Retroalimentación : La retroalimentación se da en varios niveles.
Retroalimentación del sistema al ejecutar periódicamente pruebas unitarias e integrales los programadores conocerán el estado del sistema después de implementar cambios
Las pruebas de aceptación elaboradas por el cliente y pruebas, realizadas cada dos o tres semanas permiten al cliente retroalimentar el desarrollo.
Cuando el cliente tiene nuevos requerimientos, la retroalimentación del equipo de trabajo se da al entregar una estimación del tiempo que estos implican.
Coraje : El coraje es un valor que se aplica a varios aspectos, al diseñar y codificar para las necesidades actuales en lugar de las futuras, al alentar a los programadores a mejorar el código sin afectar el comportamiento externo ( refactoring ), al reconocer cuando alguna parte del código ya no sirve, al ser persistente al buscar la solución de un problema.
Respeto : En XP los miembros del equipo de trabajo deben respetarse entre si, para nunca incorporar cambios que hagan fallar las pruebas o retrasen el trabajo de otra persona. Una forma de respeto al trabajo propio es siempre buscar la mas alta calidad y las mejores soluciones al desarrollar el producto. Nadie en el equipo de trabajo debe sentirse despreciado o ignorado ya que esto mejora la motivación de todos para conseguir los objetivos del proyecto.
Principios de XP
Los principios planteados se basan en los valores establecidos para ayudar a la toma de decisiones en el proyecto. Los principios son mas concretos que los valores y mas fáciles de seguir en situaciones practicas.
La retroalimentación realizada rápidamente es mas útil, el tiempo entre una acción y su retroalimentación es critico para aprender y realizar cambios. El contacto constante con el cliente y su monitoreo en el sistema en desarrollo le permiten guiar el desarrollo de acuerdo a sus necesidades. Las pruebas unitarias indican rápidamente si los cambios realizados funcionan correctamente.
Suponer la simplicidad es tratar cada problema como si su solución fuera extremadamente simple, XP opta por cambios incrementalesen lugar de muchas modificaciones al mismo tiempo.
Adoptar el cambio es aceptarlo y planear la solución de nuevos requerimientos para una nueva iteración, aun si estos han cambiado dramáticamente.
Pensemos en la puesta en marcha de una nueva idea empresarial. Todas las incógnitas que rodean este momento: cómo aceptarán los clientes nuestro producto, la falta de recursos, la competencia. Además, puede que apenas haya referentes o información histórica sobre el comportamiento de un mercado en particular, sobre todo en el sector de las startups. En todos esos casos, es imprescindible minimizar riesgos y costes, y para ello, contar con un aliado como la Programación Extrema no tiene precio.