Cómo Practicar eXtreme Programming y No Morir en el Intento 😵

Ponente: Concha Asensio
Cargo: Desarrolladora en Wefox Mentora
Fecha: 27 de mayo de 2024
Duración: 55 min

Una guía práctica y honesta sobre eXtreme Programming (XP), explorando sus valores, principios y prácticas desde la experiencia real de alguien que ha hecho la transición desde la abogacía al desarrollo de software.

extreme programmingXPmetodologías ágilespair programmingTDD

Cómo Practicar eXtreme Programming y No Morir en el Intento 😵

En la cuarta charla de Almería Tech, Concha Asensio, desarrolladora en Wofox, abordó la metodología eXtreme Programming (XP) bajo el título “Cómo practicar eXtreme Programming y no morir en el intento 😵”.

Asensio, originaria de Almería, compartió su recorrido desde la abogacía y los recursos humanos en grandes tecnológicas hasta el desarrollo de software, un cambio profesional que Marisol (del equipo organizador) calificó como un acto de “mucha valentía”.

Concha, quien también es GDG ambassador y mentora, se ha especializado en XP y buenas prácticas. Su primera impresión de XP fue que se trataba de un entorno “lleno de gente superlista haciendo cosas super difíciles” bajo una “presión increíble”. Sin embargo, al profundizar, descubrió que XP se centraba en la comunicación, el trabajo en equipo, la mejora continua y, sorprendentemente, en el “cuidado a uno mismo”.

La Filosofía de XP: Valores sobre Procesos

Para Concha Asensio, XP ofrece una alternativa potente a Scrum dentro del mundo Agile. Uno de los motivos clave que la cautivó fue que en XP, “las personas están por encima de los procesos”, un concepto que en esta metodología se siente “real”.

Dado que el desarrollo de software es una actividad social, XP se basa en valores y principios que guían las prácticas diarias, lo que permite a los equipos huir del dogmatismo y entender el “porqué” de las acciones.

💡 El valor fundamental: Para Asensio es el respeto, especialmente el respeto hacia uno mismo, el equipo y el proyecto.

Los Cinco Valores Centrales de XP

XP propone cinco valores clave que dan sentido a todo el marco:

1. 💬 Comunicación

Considerado superimportante, aunque a menudo se habla poco de ella en la práctica. La falta de comunicación puede llevar a equipos a intentar resolver problemas que ni siquiera tienen o a la separación de equipos backend y frontend.

2. ✨ Simplicidad

Se centra en buscar “lo más simple que funcione”. La dificultad radica en que “lo difícil por diseño es conseguir algo simple” y revertir la “complejidad accidental” que se añade al código.

3. 🔄 Feedback

Vital en un entorno de cambio constante. Obtener feedback de forma rápida permite al equipo reaccionar antes, dado que la mejor solución de hoy no es necesariamente la mejor mañana si cambian los requerimientos.

4. 💪 Valor (Courage)

Es la valentía para:

  • Expresar una opinión
  • Decir “no” cuando no se está de acuerdo
  • Reconocer cuando algo no está funcionando para cambiar el procedimiento
  • Hacerse preguntas cuyas respuestas podrían no gustar

5. 🤝 Respeto

Es el valor más importante; sin él, XP “no tiene sentido”.

Principios Guía para Bajar los Valores a Tierra

Los principios ayudan a transformar los valores abstractos en acciones diarias. Algunos destacados son:

👥 Humanidad

Reconoce que los desarrolladores son personas que buscan tener sus necesidades satisfechas, como el reconocimiento y la valoración de su trabajo.

🤝 Beneficio Mutuo

Implica hacer cosas que beneficien al desarrollador, compañeros, clientes y negocio, no solo en el presente, sino también en el futuro.

Ejemplo: Escribir tests automáticos (tests descriptivos sirven como documentación de las reglas de negocio) reporta un beneficio superior a escribir documentación extensa que debe mantenerse.

🌈 Diversidad

Equipos con diversos puntos de vista y backgrounds multiplican las opciones de resolver problemas.

👶 Pasitos Pequeños (Baby Steps)

Aunque pueda parecer “contraintuitivo,” avanzar con pequeños pasos es más rápido a largo plazo, ya que se va asegurando lo que se hace y se evita tener que rehacer grandes partes del trabajo.

Prácticas de XP y sus Desafíos

La charla también cubrió las prácticas más conocidas de XP, siempre vinculándolas a los valores y principios.

1. 👥 Pair Programming (Programación en Pareja)

Dos personas trabajan juntas en la misma tarea, con un Driver (el que tiene el teclado) y un Navigator (el que guía y revisa).

✅ Ventajas:

  • Facilita la incorporación de nuevos compañeros al proyecto y a la empresa
  • Mejora las habilidades técnicas y de comunicación, incluyendo una comunicación respetuosa
  • Permite la revisión de código (Code Review) en el momento, lo cual es más rápido que el tradicional ping-pong de las Pull Requests (PRs)
  • Concha notó que aprendió “un montón” y mucho más rápido al escuchar cómo otro compañero razonaba

⚠️ Desafíos:

  • Es “muy cansado” porque requiere estar al 100% todo el tiempo
  • Genera comparación con el compañero y puede provocar estrés, vergüenza al tomar el teclado, o bloqueo mental

🛠️ Mitigación:

  • Es fundamental hacer pausas periódicas y cambiar de rol (por ejemplo, cada 15 o 20 minutos)
  • Se recomienda generar espacios seguros de no competición
  • También se pueden usar herramientas como Live Share o Code With Me para facilitar el trabajo en remoto
  • Concha sugiere hacer “mini-retros” al final de cada sesión para hablar sobre cómo se sintieron y cómo mejorar la relación de pairing

2. 🧪 TDD (Desarrollo Dirigido por Test)

Consiste en seguir un flujo: escribir un test que falle, escribir el código más simple para que pase, y luego refactorizar.

✅ Ventajas:

  • Ayuda a desarrollar la habilidad de dar “pasos pequeños” y simplificar, descomponiendo el problema en trozos más pequeños
  • Da seguridad para hacer cambios, sabiendo que, si se rompe algo, los tests lo detectarán
  • Los tests funcionan como documentación de las reglas de negocio, ayudando a entender mejor el proyecto

⚠️ Desafíos:

  • Cambiar la dinámica de pensar primero en el test antes que en el código es complicado

🛠️ Mitigación:

  • Practicar con pairing con alguien que sepa TDD
  • Intentar escribir al menos un test para no bloquearse
  • Practicar con katas (ejercicios de programación) en un entorno seguro

3. 🚀 Integración Continua y Despliegue Iterativo

Busca entregar valor de forma incremental, dividiendo el trabajo en trozos pequeños (vertical slicing). La integración continua (CI) implica integrar los cambios a Master (o Main) al menos una vez al día.

✅ Ventajas:

  • Ofrece un feedback muy rápido directamente del usuario que utiliza el software en producción
  • Aporta la sensación de contribuir valor día a día

⚠️ Desafíos:

  • El pánico a romper cosas
  • La dificultad de trocear las funcionalidades (slicing) para que aporten valor poco a poco

🛠️ Mitigación:

  • Conocer bien el control de versiones (Git)
  • La automatización de procesos y el uso de un buen set de tests son clave para dar seguridad
  • Herramientas como git hooks y notificaciones de errores en Slack también ayudan a tener feedback inmediato

Conclusiones Personales

Concha Asensio concluyó que la práctica de XP la ha convertido en una persona más pragmática, enfocada en hacer las cosas lo más simple posible y en iterar. También le enseñó a no “sesionar con la tecnología ni el lenguaje”.

Para ella, esta metodología fomenta un fuerte sentido de equipo, pensando en el “beneficio mutuo” y en la sostenibilidad del trabajo. Incluso, los valores de XP han influido en su vida fuera de la programación.

Consejo Final: Siempre Se Puede Mejorar

Su consejo final, extraído del libro de XP, es que “siempre se puede mejorar”. No importa que la empresa no adopte XP al 100%; se puede empezar por uno mismo, con “cualquier cosa sencilla”, como:

  • 🤝 Proponer pairing
  • 🧪 Hacer TDD en una pequeña tarea
  • 💬 Mejorar la comunicación en el equipo
  • 🔄 Buscar feedback más rápido

🌟 Mensaje clave: XP no es solo una metodología de desarrollo, es una forma de trabajar que pone a las personas en el centro y busca el cuidado mutuo y la mejora continua.