La programación extrema (XP) produce resultados, pero ¿es la metodología adecuada para ti?

Foto de la colaboradora - Alicia RaeburnAlicia Raeburn16 de mayo de 202211 min de lectura
facebooktwitterlinkedin
What is extreme programming (XP) article banner image
Prueba Asana

Summary

Extreme programming (XP) is an Agile project management methodology that targets speed and simplicity with short development cycles. XP uses five guiding values, five rules, and 12 practices for programming. The structure is rigid, but the result of these highly focused sprints and continuous integrations can result in a much higher quality product.

Si el término “programación extrema” te hace pensar en los X games y los deportes extremos, no estás errado. De hecho, se trata de un proceso de programación bastante riguroso. Al igual que otros métodos ágiles de desarrollo de software, la programación extrema utiliza un enfoque adaptable y basado en pruebas para la ingeniería de software. Sin embargo, a diferencia de otros métodos, tiene reglas y valores estrictos que rigen cómo se realiza el trabajo.

¿Qué es la programación extrema (XP)?

La programación extrema es una metodología ágil de gestión de proyectos que se centra en la velocidad y la simplicidad con ciclos de desarrollo cortos y con menos documentación. La estructura del proceso está determinada por 5 valores fundamentales, 5 reglas y 12 prácticas de XP (que detallaremos más adelante en este artículo).

Al igual que otras metodologías ágiles, la programación extrema es una método de desarrollo de software dividido en sprints de trabajo. Los marcos ágiles siguen un proceso iterativo, en el que se completa y revisa el marco al final de cada sprint, refinándolo para adaptarlo a los requisitos cambiantes y alcanzar la eficiencia máxima. Al igual que otros métodos ágiles, el diseño de la programación extrema permite a los desarrolladores responder a las solicitudes de los clientes, adaptarse y realizar cambios en tiempo real. Sin embargo, la programación extrema es mucho más disciplinada; realiza revisiones de código frecuentes y pruebas unitarias para realizar cambios rápidamente. Además es muy creativa y colaborativa, ya que promueve el trabajo en equipo durante todas las etapas de desarrollo.

Programación extrema vs. Scrum

Scrum es otro tipo común de metodología ágil gestionada por un Scrum master. Al igual que la programación extrema, organiza sprints basados ​​en historias de usuarios para desarrollar funciones nuevas de productos o de software. Sin embargo, el método XP es mucho más rígido que el método Scrum, ya que tiene reglas y pautas estrictas que promueven intercambios constantes entre desarrolladores y clientes. Además, puedes aplicar Scrum para cualquier proceso que requiera iteración y aportes del cliente, mientras que solo usarías la programación extrema para la programación.

¿Quién desarrolló la programación extrema?

Los orígenes de XP se remontan a fines de la década de 1990, cuando Kent Beck la creó para gestionar el desarrollo de un sistema de software de nómina para Chrysler llamado Proyecto C3. El objetivo al implementar la programación extrema era (y sigue siendo) eliminar la resistencia a cambiar el código en un proyecto de desarrollo. En los métodos de desarrollo de software más tradicionales, es muy común que el código no se cambie una vez que está escrito (excepto para la depuración). Con la programación extrema, en cambio, el código se examina con tanto detalle que los desarrolladores pueden decidir modificarlo por completo luego de una sola iteración.

¿Cuándo deberías implementar la programación extrema?

Como la programación extrema se centra en el desarrollo de software, suele ser implementada solamente por los equipos de ingeniería. Incluso los equipos de software, suelen usarla únicamente para determinadas configuraciones. Para obtener el máximo beneficio de la programación extrema, recomendamos usarla en los siguientes casos:

  • Para gestionar un equipo más pequeño. Debido a su naturaleza altamente colaborativa, la programación extrema funciona mejor en equipos pequeños de menos de diez personas.

  • Si estás constantemente en contacto con tus clientes. La programación extrema incorpora los requisitos de los clientes a lo largo del proceso de desarrollo y también se basa en ellos para las pruebas y aprobaciones.

  • Si trabajas con un equipo flexible que pueda aceptar el cambio (sin resentimientos). Dada su propia naturaleza, la programación extrema a menudo requerirá que todo el equipo deseche todo su arduo trabajo. Algunas reglas también permiten que algunos miembros del equipo realicen cambios en cualquier momento, lo que supondría un problema si los demás compañeros del equipo se lo toman como algo personal.

  • Si dominas los aspectos técnicos de la codificación. La programación extrema no es para principiantes ya que necesitas poder trabajar e implementar cambios rápidamente.

Ciclo de vida de la programación extrema (XP)

El ciclo de vida de XP fomenta la integración continua, ya que requiere que los miembros del equipo trabajen casi constantemente, cada hora o todos los días. Sin embargo, el ciclo de vida completo se estructura de la siguiente manera:

  • Extraer trabajos sin finalizar de las historias de usuarios

  • Priorizar los elementos más importantes

  • Comenzar con la planificación iterativa

  • Incorporar un plan realista

  • Mantener una comunicación constante con todas las partes interesadas y empoderar al equipo

  • Presentar el trabajo

  • Recibir comentarios

  • Regresar a la etapa de planificación iterativa y repetir si es necesario

Los 5 valores de la programación extrema (XP)

La programación extrema está impulsada por el valor. En lugar de usar motivadores externos, la programación extrema permite que tu equipo trabaje de una manera más sencilla (priorizando la simplicidad y la colaboración sobre diseños complejos), basándose siempre en estos cinco valores.

1. Simplicidad

Antes de empezar cualquier trabajo de programación extrema, debes hacerte la siguiente pregunta: ¿Cuál es el proceso más simple y que también funciona? El concepto “que también funciona” es un diferenciador clave ya que lo más simple no siempre es práctico o efectivo. En la programación extrema, tu atención se centra en realizar primero el trabajo más importante. Esto significa que debes buscar un proyecto simple que sabes que puedes lograr.

2. Comunicación

XP se basa en una respuesta rápida y una comunicación efectiva. Para trabajar de manera efectiva, el equipo debe ser abierto y ‌honesto entre sí. Cuando surgen problemas, se espera que todos aporten sus comentarios e ideas, ya que probablemente alguno de ellos ya tenga una solución adecuada. Y si no la tiene, podrán resolver el problema más rápidamente como grupo de lo que podrían hacerlo solos.

Lee: Cómo mejorar las comunicaciones del equipo: 6 estrategias y muchos consejos útiles

3. Comentarios

Al igual que otras metodologías ágiles, el método XP incorpora comentarios e historias de usuarios directamente en el proceso. El enfoque de XP es producir trabajo de forma rápida y sencilla, para luego compartir los resultados para obtener comentarios de forma casi inmediata. Por eso, los desarrolladores están en contacto casi constante con los clientes durante todo el proceso. En la programación extrema, se lanzan varias versiones con regularidad para obtener información nueva desde el primer momento y con frecuencia. Podrás adaptar el proceso (en lugar del proyecto) para incorporar los comentarios recibidos de clientes. Por ejemplo, si los comentarios ayudan a reducir el tiempo de retraso innecesario, podrás ajustar el proceso para que los desarrolladores trabajen para mejorar el tiempo de retraso en lugar de ajustar el proyecto completo.

Lee: ¿Te resulta difícil brindar comentarios? Estos 20 consejos son ideales para ti

4. Valentía

Para implementar la programación extrema, se requiere de mucha valentía. Siempre se espera que seas honesto al brindar actualizaciones al equipo sobre tu progreso, lo que puede dejarte en una posición de vulnerabilidad. Si no cumples con una fecha de entrega en la programación extrema, es probable que al líder de tu equipo no le interese analizar los motivos. En cambio, le dirías que no cumpliste con la fecha de entrega, te responsabilizarías por ello y te pondrías a trabajar nuevamente.

Si eres líder de un equipo, tu responsabilidad al comienzo del proceso de XP será establecer las expectativas de éxito y definir lo que será “el trabajo terminado”. A menudo suele haber poca planificación para lidiar con el fracaso ya que el equipo se centra principalmente en el éxito. Sin embargo, puede ser un poco alarmante ya que sabemos que las cosas no siempre suceden como se planifican. Pero si surgen cambios durante el proceso de XP, se espera que el equipo se adapte y acompañe estos cambios.

5. Respeto

Teniendo en cuenta que las comunicaciones y la honestidad son prioridad en el método XP, tiene sentido que el respeto sea una virtud esencial. Para que los equipos se comuniquen y colaboren de manera efectiva, deben aprender a estar en desacuerdo. Pero hay maneras de hacerlo amablemente. El respeto es una base importante que promueve la bondad y la confianza, incluso cuando se expresan las opiniones con total honestidad. Para la programación extrema, estas son las expectativas:

  • Respeto mutuo entre los clientes y el equipo de desarrollo.

  • Respeto mutuo entre los miembros del equipo.

  • El reconocimiento de que todos en el equipo aportan algo valioso al proyecto.

5 reglas de la metodología de programación extrema (XP)

Los valores de la programación extrema son los aspectos más filosóficos. Las reglas, por otro lado, son los usos prácticos de cómo se realiza el trabajo. Necesitarás contar con ambos aspectos para gestionar un equipo XP efectivo.

1. Planificación

Durante las etapas de planificación de la programación extrema, deberás determinar si el proyecto es viable y si se adapta al método XP. Para hacer esto, deberás evaluar:

  • Las historias de usuarios para confirmar que coinciden con el valor de simplicidad y garantizar que el cliente esté disponible para participar del proceso. Si la historia del usuario es más compleja o fue creada por un cliente anónimo, es probable que no sea adecuada para el método XP.

  • El valor comercial y el nivel de prioridad del proyecto para asegurarte de que esté alineado con la idea de “realizar el trabajo más importante primero”. 

  • La etapa de desarrollo en la que te encuentras. La programación extrema se adapta mejor al desarrollo en sus etapas iniciales y no será un método tan efectivo para iteraciones posteriores.

Una vez que hayas confirmado que el proyecto es viable para implementar la programación extrema, ‌te recomendamos crear un cronograma de lanzamiento. Sin embargo, es importante tener en cuenta que debes lanzarlo tan pronto sea posible y con frecuencia para poder obtener comentarios. Para hacer esto:

  • Divide el proyecto en iteraciones y crea un plan para cada una.

  • Establece plazos realistas y un ritmo de trabajo sostenible.

  • Comparte actualizaciones a medida que ocurren para permitir que el equipo sea lo más honesto y transparente posible.

  • Comparte actualizaciones en tiempo real para ayudar al equipo a ‌identificar, adaptar y realizar cambios más rápidamente.

  • Usa una herramienta de gestión de proyectos para crear un tablero Kanban o un cronograma para poder dar seguimiento al progreso en tiempo real.

2. Gestión

Uno de los elementos clave de la programación extrema es el espacio de trabajo. Los puristas de XP recomiendan usar un espacio de trabajo abierto donde todos los miembros del equipo puedan trabajar juntos. Debido a que la programación extrema es altamente colaborativa, es una ventaja contar con un espacio donde puedan reunirse todos los colaboradores físicamente. Sin embargo, en estas épocas, esta no siempre es una solución práctica o factible. Si trabajas en un equipo remoto, considera usar una plataforma que fomente el trabajo asincrónico para la colaboración remota. De esta manera, todos los miembros podrán trabajar juntos en el proyecto, incluso si no se encuentran en el mismo espacio físico.

Al igual que con otros métodos ágiles, puedes organizar reuniones diarias de actualización para verificar el estado del trabajo y fomentar las comunicaciones abiertas y constantes. Te recomendamos implementar un ciclo semanal y un ciclo trimestral. Durante el ciclo trimestral, tu equipo y tú revisarán las historias que guiarán el trabajo a realizar. También analizarán los procesos de XP, para identificar brechas u oportunidades para realizar cambios. Luego, trabajarás en ciclos semanales, que comenzarán con una reunión con el cliente. El cliente elegirá la historia de usuario para que los programadores trabajen esa semana.

Como gerente o líder de equipo, tu atención deberá centrarse en mantener el progreso constante del trabajo, supervisar el ritmo, gestionar la carga de trabajo del equipo para que puedan trabajar en los errores o problemas a medida que surjan, o cambiar el proceso de XP para que se ajuste a tu proyecto e iteración actuales. Recuerda que el objetivo de la programación extrema es ser flexible y ágil, por lo que tu trabajo estará muy centrado en el trabajo actual del equipo y en poder responder rápidamente a cualquier cambio.

3. Diseño

Si recién incursionas en la programación extrema, te recomemos empezar con el diseño más simple posible, ya que las iteraciones posteriores incrementarán su complejidad. Intenta no agregar ninguna funcionalidad temprana durante esta etapa para mantener el proceso lo más sencillo posible.

Los equipos de metodología XP a menudo usan tarjetas de clase, responsabilidad y colaboración (CRC, por sus siglas en inglés) para mostrar cómo interactúa cada elemento en el diseño global. Al completar cada campo de la tarjeta, podrás obtener una imagen visual de cómo se relacionan e interactúan todas las funciones. Las tarjetas CRC incluyen:

  • Clase (conjunto de elementos similares)

  • Responsabilidades (según la clase)

  • Colaboradores (clase que interactúa con el colaborador en cuestión)

Las tarjetas CRC son útiles para simular el proceso y detectar problemas potenciales. Independientemente del tipo de diseño, te recomendamos usar un sistema que permita reducir los cuellos de botella potenciales. Para esto, asegúrate de prevenir los riesgos de manera proactiva. Tan pronto como descubras una amenaza potencial, asigna uno o dos miembros del equipo para encontrar una solución en caso de que suceda.

Lee: El proceso de gestión de riesgos de proyectos en 6 pasos claros

4. Codificación

Uno de los aspectos clave de la programación extrema es el contacto permanente que mantendrás con el cliente durante todo el proceso de codificación. Esta interacción ‌te permite probar e incorporar comentarios dentro de cada iteración, en lugar de esperar hasta el final de cada sprint. Sin embargo, las reglas de codificación son bastante estrictas en el método XP. Algunas incluyen:

  • Todo el código debe cumplir con el estándar de programación.

  • Se deben realizar pruebas unitarias para definir los requisitos y desarrollar todos los aspectos del proyecto.

  • La programación se realiza en parejas: dos desarrolladores trabajan juntos y simultáneamente en la misma computadora. El tiempo de programación sigue siendo el mismo; sin embargo, se duplica el enfoque para lograr resultados de la más alta calidad posible.

  • Se deben usar integraciones continuas para agregar código nuevo y probarlo de inmediato.

  • Solo un par de desarrolladores puede actualizar el código en un momento dado para reducir los errores.

  • Propiedad colectiva del código: cualquier miembro del equipo puede cambiar el código en cualquier momento.

5. Prueba

Deberás realizar pruebas durante todo el proceso de programación extrema. Todo el código deberá someterse a pruebas unitarias antes de su lanzamiento. Si detectas errores durante estas pruebas, necesitarás crear pruebas adicionales para corregirlos. Más adelante‌, incorporarás la misma historia de usuario en la que has estado trabajando en una prueba de aceptación. Durante esta prueba, el cliente examinará los resultados para comprobar que has implementado correctamente la historia de usuario al producto.

¿Cuáles son las 12 prácticas de la programación extrema?

Para perfeccionar aún más el proceso, la programación extrema también implementa un conjunto de 12 prácticas a lo largo del proceso. Se basan en el Manifiesto ágil, pero se adaptan a las necesidades de la programación extrema.

  1. El juego de planificación: La planificación XP se usa para guiar el trabajo. Los resultados de la planificación deben ser los objetivos que pretendes alcanzar, los plazos previstos y los pasos a seguir.

  2. Pruebas de clientes: Cuando finalices una función nueva, el cliente desarrollará una prueba de aceptación para determinar si has cumplido con la historia de usuario original.

  3. Pequeñas entregas: La programación extrema realiza entregas pequeñas y periódicas para obtener información importante durante todo el proceso. A menudo, las entregas se envían directamente a los clientes, aunque también pueden enviarse internamente.

  4. Diseño simple: El sistema XP está diseñado para ser simple, producirá solo lo necesario y nada más. 

  5. Programación en parejas: Toda la programación la realizan simultáneamente dos desarrolladores que se sientan físicamente uno al lado del otro. No hay trabajo individual en la programación extrema.

  6. Desarrollo guiado por pruebas (TDD): Debido a que la programación extrema se basa en los comentarios, se requieren pruebas exhaustivas. A través de ciclos cortos, los programadores realizan pruebas automatizadas para luego reaccionar de inmediato.

  7. Refactorización: Aquí es donde se deberá prestar especial atención a los detalles más finos del código base, para eliminar los duplicados y asegurarse de que el código sea coherente. De esta manera obtendrás diseños simples y de alta calidad.

  8. Propiedad colectiva: Cualquier par de desarrolladores puede modificar el código en cualquier momento, independientemente de que lo hayan desarrollado o no. En la programación extrema, la codificación se realiza en equipo, y el trabajo de todos se lleva a cabo según los estándares colectivos más altos.

  9. Integración continua: Los equipos de XP no esperan a que se completen las iteraciones, sino que se integran constantemente. A menudo, un equipo de XP se integrará varias veces al día.

  10. Ritmo de trabajo sostenible: La intensidad de los trabajos de XP requiere que se establezca un ritmo de trabajo sostenible. Los equipos deben determinar cuánto trabajo pueden producir a este ritmo por día y por semana, y usarlo para establecer plazos de trabajo.

  11. Metáfora: La metáfora es, literalmente, una metáfora. Se decide en equipo y se usa un lenguaje para expresar cómo debe funcionar el equipo. Por ejemplo, somos hormigas trabajando en colectivo para construir el hormiguero. 

  12. Estándares de codificación: Los equipos de XP siguen un estándar. De la misma manera que un grupo de escritores necesita adoptar el tono de una marca para que parezca que siempre está escribiendo una misma persona, los desarrolladores de XP deben codificar de la misma manera unificada para que parezca que el código esté escrito por un solo desarrollador.

XP: intensa, pero efectiva

A esta altura, probablemente te hayas dado cuenta de que la programación extrema es, en esencia, extrema. El proceso es muy riguroso y altamente estructurado, pero los resultados realmente valen la pena. El proceso de desarrollo único de XP que incorpora los comentarios de los clientes y requiere una intensa programación colaborativa da como resultado un software de alta calidad.

Optimiza la planificación y gestión de XP con una herramienta de gestión del trabajo que tenga la capacidad de actualizarse y adaptarse en tiempo real, tal como lo hace tu trabajo.

Prueba Asana gratis

Recursos relacionados

Artículo

Método Kaizen: la guía para la mejora continua en las empresas