Mientras la mayoría de metodologías tradicionales se basan en la previsibilidad,
el método Extreme Programming XP
se basa en la adaptabilidad. Cualquier proyecto que pongas en marcha tendrá que hacer frente a una serie de problemas, es algo inevitable, y la clave del éxito está en ser capaces de adaptarnos a los cambios con los que nos encontraremos. Sus defensores aseguran que es más fácil tratar de ajustarse a esos cambios que definir todos los requisitos al principio y luego tratar de controlar los cambios en los requisitos. ¿Qué es la programación extrema? Si nos centramos en el ámbito empresarial, el método Extreme Programming XP, también conocido como programación extrema, es una metodología ágil y flexible utilizada en la gestión de proyectos. Su pilar principal es potenciar las relaciones interpersonales del equipo de desarrollo como factor clave para el éxito a través del trabajo en equipo, el aprendizaje conjunto y la buena química entre todo el equipo de trabajo, unas buenas relaciones que nos ayudarán a solventar sin problemas los cambios con los que nos encontraremos. El Extreme (o XP) Programming es una metodología de desarrollo que pertenece a las conocidas como metodologías ágiles (otras son Scrum, Kanban…), cuyo objetivo es el desarrollo y gestión de proyectos con eficacia, flexibilidad y control. Ambos conceptos, relacionados estrechamente, son distintos. Agile es el marco de trabajo para el desarrollo del software, se hace mediante un proceso iterativo y define las prácticas y roles del equipo. Por su lado, el XP programming es una metodología basada en la comunicación, la reutilización del código desarrollado y la realimentación. La metodología Extreme Programming XP también hace énfasis en la retroalimentación continua entre el cliente y el equipo de desarrollo, lo que la convierte en el método de trabajo ideal para los proyectos con requisitos imprecisos y muy cambiantes. Son precisamente estas características las que nos impiden establecer los requisitos desde el principio, como pasa con las otras metodologías convencionales, y ahí la capacidad de adaptación y de reajustarse de esta metodología es la clave. Funcionamiento de la programación extrema Esta metodología sigue el esquema planificación > diseño > codificación > pruebas, desde donde se pasa al lanzamiento o se vuelve a la planificación. Si empezamos en la fase de planificación, vemos que es el momento en que se tienen en cuenta los valores, las historias del usuario, y se establecen los criterios de pruebas de adaptación y el plan de desarrollo. En la fase de diseño tenemos que buscar las soluciones en punto para los diferentes prototipos, pudiendo pasar por varios rediseños hasta llegar a la codificación. En este punto, podemos hacer pruebas unitarias de integración continua, pasando a las pruebas de adaptación. Si el proyecto no cumple con las expectativas volvemos a la casilla inicial y volvemos a iniciar todo el proceso, pero si hemos alcanzado el punto ideal es la hora del lanzar al mercado el proyecto. Conviene destacar que la fase de planificación debe ser flexible y abierta a los cambios, lo que nos permite ofrecer una rápida respuesta a los imprevistos que puedan surgir a lo largo del proyecto. Ya hemos dicho que el trabajo en equipo es el factor clave para el éxito del proyecto así que es imprescindible que cada actor asuma su rol en el proyecto. Así, los programadores se encargan de estimar los tiempos de desarrollo de cada fase o actividad y programan el proyecto, mientras que el tester se responsabiliza de las pruebas y el tracker de su seguimiento. También hace falta un coach o entrenador, que se ocupa de guiar y orientar al equipo. Un rol que no debemos confundir con el del big boss, gestor o gerente del proyecto, que debe tener una idea general y conocer su estado. Por último, tenemos el papel del cliente. Será el responsable de definir y conducir el proyecto y sus objetivos, ofreciéndonos un feedback en las diferentes fases donde participe que nos servirán para introducir las mejoras o modificaciones convenientes. Es imprescindible que haya una interacción constante entre el cliente y el equipo de desarrollo, una comunicación en las dos direcciones que nos permita completar el desarrollo de proyecto de la forma más eficiente y efectiva posible. El equipo de un proyecto de programación extrema Los equipos de un proyecto de esta tipología y magnitud tienen normalmente las siguientes figuras y roles: – Clientes: Establecen las prioridades y marca el proyecto. Suelen ser los usuarios finales del producto y quiénes marcan las necesidades. – Programadores: Serán los que se encargarán de desarrollar el Extreme Programming. – Testers: se encargan de ayudar al cliente sobre los requisitos del producto. – Coach: Asesoran al resto de componentes del equipo y marcan el rumbo del proyecto. – Manager: Ofrece recursos, es el responsable de la comunicación externa y quien coordina las actividades. En general, no obstante, los participantes en este tipo de equipos no siempre toman un rol fijo y contribuyen con los conocimientos de cada uno en aras del beneficio colectivo. Las planificaciones Por una parte se deben planificar los plazos temporales del proyecto basándose en las exigencias del cliente. En base a las estimaciones de coste y la dificultad del proyecto se marcan las prioridades y las fechas, no siempre de forma precisa, pero sí orientativa. Con la entrega de la planificación efectuada, se desarrolla la de la iteración en el que cada dos semanas se marca el rumbo y se entrega el software útil después de cada uno de estos periodos bisemanales. Con esto se consigue que el nivel de precisión sea mucho mayor, las estimaciones sobre los costes sean más exactas y la información mucho más transparente. Pruebas Continuamente se han de efectuar una serie de pruebas automatizadas en base a los requisitos del cliente para comprobar que todo funcione correctamente. Éstas han de hacerse de forma periódica y automática. Con las planificaciones comentadas anteriormente se incluyen las entregas al final de cada iteración, éstas serán siempre con el software probado y funcionando correctamente y será facilitado al cliente, que puede utilizarlo para cualquier propósito, incluso para el usuario final. Los equipos XP también pueden hacer entregas a otros usuarios finales. Diseño y programación El diseño del programa suele ser simple y basado en la funcionalidad del sistema y se lleva a cabo durante todo el proyecto, tanto durante la planificación de la entrega como en el de la iteración. La programación del software se hace siempre en pareja, lo que se llama programar a dos manos. Se asegura con este método que al menos un programador conoce y controla la labor de otro y queda revisado. La ventaja es que se produce mejor código que en base a un programador aunque la dificultad de la misma sea mayor. El código es de todos, con el desarrollo de las pruebas automáticas y la programación a dos manos se incluye también la posibilidad de que cualquiera pueda añadir y retocar parte del código, aunque eso sí, deba ser un estilo común y cuyo resultado sea como si sólo lo hubiera hecho una persona. Uso de metáforas y otras ventajas Se buscan frases o nombres que definan parte del programa para qué todos sepan a qué se refieren y cuál es su funcionalidad. Por ejemplo está el “recolector de basura” de Java. El Extreme Programming tiene como gran ventaja el de la programación organizada y planificada para que no haya errores durante todo el proceso. Los programadores suelen estar satisfechos con esta metodología. Es muy recomendable efectuarlo en proyectos a corto plazo. Esta metodología forma parte del extenso mundo de la gestión de proyectos Ágiles, metodologías que cada vez son más adoptadas por las grandes empresas de internet para hacer frente a un mundo cada vez más cambiante y veloz.