XP: Extreme People, digo, Programming

XP siendo el más específico de los marcos ágiles con respecto a las prácticas de ingeniería propias del desarrollo de software, tiene un enfoque bastante marcado en las personas, aunque no sea popular por ello.

Día 15 del reto #30díasdeblog y esta semana, como en cualquier desarrollo ágil, me encuentro en un contexto diferente al que había pensado cuando planifique las reglas del reto. Según el plan inicial de este reto, que puedes encontrar en el post Reto #30díasdeblog - Día 1, los lunes me corresponde escribir sobre algún tema #Personal, sin embargo hoy he decidido hacer un ajuste, y escribir sobre #Agile específicamente de Extreme Programming (XP), dejando el tema personal para el miércoles, ya que coincide con una fecha especial que quiero aprovechar.

Ahora sí, pasamos al tema principal de este artículo.

¿Qué es XP?

Extreme Programming (XP) es un marco de desarrollo de software ágil creado por Kent Beck en 1999, que tiene como objetivo principal producir software de mayor calidad a la vez que se mejora la calidad de vida del equipo de desarrollo (LAS PERSONAS). XP a pesar de ser el más específico de los marcos ágiles con respecto a las prácticas de ingeniería apropiadas para el desarrollo de software, tiene un enfoque bastante marcado en las personas, aunque no sea popular por ello.

“No soy un gran programador; Solo soy un buen programador con buenos hábitos ". - Kent Beck

XP tiene sus bases en el desarrollo de software basado en valores, principios y prácticas. Cuando los analizamos detenidamente no damos cuenta que son aplicables a cualquier equipo de trabajo (personas) y que pueden ayudarles a convertirse en un equipo de excelencia y alto rendimiento.

Libro Extreme Programming Explained escrito por Kent Beck, se le conoce como el libro blanco.

5 Valores, 15 principios y 24 prácticas

XP consta de valores, principios y prácticas, cada una de ellas derivada de la anterior.

Las prácticas de XP son cosas concretas que un equipo puede hacer día a día, mientras que los valores son el conocimiento y la comprensión fundamentales que sustentan el enfoque.

Los valores sin prácticas son difíciles de aplicar y pueden aplicarse de tantas maneras que es difícil saber por dónde empezar. Las prácticas sin valores son actividades de memoria sin un propósito. Se necesitan valores y prácticas, pero hay una gran brecha entre ellos: los principios ayudan a cerrar esa brecha. Muchas de las prácticas de XP son técnicas antiguas, probadas y comprobadas, pero a menudo olvidadas por muchos, incluidos los procesos más planificados. Además de resucitar estas técnicas, XP las entrelaza en un todo sinérgico donde cada una se ve reforzada por las demás y los valores les dan un propósito.

Los valores de XP

Los valores de XP representan la mentalidad de las personas, incentivando al equipo hacer todo lo posible en el camino hacia el logro de un objetivo común, estos valores pueden abstraerse de modo que se apliquen en cualquier entorno sin considerar inicialmente que ese objetivo es software de calidad.

Valores de XP
  • Comunicación: El trabajo que un equipo debe desarrollar para cumplir un objetivo, se puede comparar con un deporte de equipo que se basa en la comunicación para transferir el conocimiento de un miembro del equipo a todos los demás miembros del equipo. XP enfatiza la importancia del tipo apropiado de comunicación: discusión cara a cara con la ayuda de una pizarra blanca u otro mecanismo de dibujo.
  • Simplicidad: La simplicidad significa "¿qué es lo más simple que funcionará?" El propósito de esto es evitar el desperdicio y hacer solo cosas absolutamente necesarias, como hacer el trabajo lo más simple posible para que sea más fácil de mantener, respaldar y revisar. La simplicidad también significa abordar solo los requisitos que usted conoce; no intentes predecir el futuro.
  • Retroalimentación: A través de comentarios constantes sobre sus esfuerzos anteriores, los equipos pueden identificar áreas de mejora y revisar sus prácticas (Kaizen). La retroalimentación también admite un diseño simple. Su equipo construye algo, recopila comentarios sobre su diseño e implementación, y luego ajusta su producto en el futuro.
  • Valor: Kent Beck definió el coraje como "acción efectiva frente al miedo" (Libro Programación extrema explicada, página. 20). Esta definición muestra una preferencia por la acción basada en otros principios para que los resultados no sean perjudiciales para el equipo. Necesita valor para plantear problemas organizativos que reducen la eficacia de su equipo. Necesitas valor para dejar de hacer algo que no funciona y probar otra cosa. Necesitas coraje para aceptar y actuar en respuesta, incluso cuando es difícil de aceptar.
  • Respeto: Los miembros del equipo deben respetarse mutuamente para comunicarse entre sí, proporcionar y aceptar comentarios que honren su relación, y trabajar juntos para identificar diseños y soluciones simples.

A pesar de que XP nace como una práctica de desarrollo de software, se fundamenta en valores que pueden ser abrazados y aplicados por cualquier organización y equipo de trabajo.

"El desarrollo de software es un juego de comprensión, y la comprensión llega a la mente preparada, descansada y relajada". – Kent Beck

Principios de XP

Los principios de XP derivan de los valores pero tienen la intención de reflejarlos de maneras más concretas. Existen 5 principios core:

  • Realimentación rápida (Rapid feedback) - los miembros del equipo, piden retroalimentación, la entienden y reaccionan de inmediato de acuerdo a lo recibido.
  • Asumir simplicidad (Assume simplicity) - los miembros del equipo deben centrarse en el trabajo que es importante en este momento, lo que se ha planificado, lo que se ha comprometido como entregable. Tienen presente acrónimos como YAGNI = You Ain’t Gonna Need It y DRY = Don’t Repeat Yourself.
  • Cambio incremental (Incremental change) - aplicar pequeños cambios al producto funciona mejor que grandes cambios hechos a la vez.
  • Abrazar el cambio (Embracing change) - Si un cliente piensa que un producto necesita ser cambiado, nuestro equipo de desarrollo debe apoyar esta decisión y planear cómo implementar nuevos requisitos.
  • Trabajo de calidad (Quality work) - un equipo que trabaja bien hace un producto valioso, con calidad y se siente orgulloso de ello.

Los otros principios son:

  • Enseñar a aprender
  • Pequeña inversión inicial
  • Juega para ganar
  • Trabajar con los instintos de las personas, no en contra de ellos
  • Responsabilidad aceptada
  • Experimentos concretos
  • Comunicación abierta y honesta
  • Viaja con poco equipaje
  • Medición honesta

Estos valores y principios en resumen profesan que la excelencia es un hábito y debemos llevarlos en nuestro ADN. Además de ser buenos para desarrollar software de calidad, son útiles para implantar un cambio organizacional.

Los principios ayudan cuando tenemos que elegir entre alternativas. Preferiremos una alternativa que cumpla con los principios más plenamente que una que no lo haga. Cada principio encarna los valores. Un valor puede ser vago. Lo que es “Simple” para una persona, para otra es “Complejo”. Un principio es más concreto. U obtienes feedback rápidamente o no.

Uno de los mayores problemas con XP, y de hecho con cualquier método ágil, es cómo hacer la adaptación local esencial, donde se modifica el proceso para adaptarse a las condiciones locales. Los principios ayudan a proporcionar algunas pautas sobre qué partes de adaptación funcionarán y cuáles irán en contra de las bases de XP.

Prácticas de XP

XP, además de los valores y principios involucra ciertas prácticas de ingeniería de software que en conjunto logran crear una cultura de equipo de excelencia. No explicaremos las prácticas en este post, pero sí vale la pena mencionarlos.

  • The Planning Game
  • Small Releases
  • Metaphor
  • Simple Design
  • Testing
  • Refactoring
  • Pair Programming
  • Collective Ownership
  • Continuous Integration
  • 40-hour week
  • On-site Customer
  • Coding Standard

Las prácticas de XP pueden ser adaptadas y aplicadas en cualquier contexto de desarrollo de producto y cualquier equipo.

Una cultura de trabajo basada en los principios, valores y prácticas de XP permite crear una atmósfera competitiva pero motivacional, donde todos aprecian el trabajo de cada uno de los compañeros, entregan trabajo que aporta valor rápidamente porque se distinguen las tareas relevantes de las innecesarias. Se crea un equipo donde reaccionan rápidamente a la retroalimentación dándose cuenta de que es una crítica razonable dirigida a hacer un producto, trabajo y equipo mejor, lo que promueve principalmente la mejora continua.

Todo esto podría aplicarse en cualquier contexto que busca eficiencia, reducir desperdicios y aprovechar el talento y el tiempo se las personas para generar valor de la siguiente manera:

Equipo

  • El equipo debe estar junto y trabajar como una unidad
  • Reglas de equipo y estándares de calidad claros
  • Objetivos claros
  • Propiedad compartida del trabajo realizado y a realizar

Organización

  • Trabaja las horas razonables para ser productivo
  • Margen en la planificación (slack)
  • Planifica regularmente pensando en historias (ejemplos)
  • Ciclos cortos (semanales / trimestrales)
  • Ritmo sostenible
  • Transparencia a través de radiadores de información

Desarrollo

  • Desarrollo de tareas en pares
  • Piensa en tu resultado primero,  crea lo necesario para cumplirlo y luego evoluciona (TDD)
  • Desarrollar pensando en el End-2-End (Integración continua)
  • Pequeñas versiones incrementales
  • Diseño sencillo y emergente (MVP)
  • Trabajo hecho de calidad (código)
  • Pruebas de concepto para validar hipótesis (Spikes)

Excelencia Técnica

Cuando los autores del Manifiesto Ágil se refirieron al desarrollo ágil de software, se referían principalmente a XP, además de otras prácticas de desarrollo que persiguen la excelencia técnica y la simplicidad.

"La atención continua a la excelencia técnica y el buen diseño mejora la agilidad".

"La simplicidad, el arte de maximizar la cantidad de trabajo no realizado, es esencial".

Conclusión

XP es una práctica de desarrollo que persigue el feedback continuo, la excelencia técnica y la entrega de valor constante.

Valores - Representan la mentalidad del equipo, incentivan el trabajo en equipo y el enfoque hacia un objetivo común.

Principios - Reflejan los valores de maneras más concretas.

Prácticas - No hay agilidad sin cultura de equipo, una buena organización ni excelencia en la ejecución técnica de las actividades que generan valor.

Cuando basamos nuestra cultura de trabajo en los principios y valores de XP creamos una atmósfera competitiva pero motivacional, donde todos apreciamos el trabajo de cada uno de los compañeros, entregamos trabajo valioso rápidamente porque podemos distinguir las tareas relevantes de las innecesarias. Reaccionamos rápidamente a la retroalimentación dándonos cuenta de que es una crítica razonable dirigida a hacer un producto, trabajo y equipo mejor, promoviendo la mejora continua.

Y así, completo el día 15 del reto #30díasdeblog👨‍💻.

Un abrazo!

i'marv.in

P. D.: Este artículo tiene 1678 palabras.