Por qué la metodología ágil no es ágil sin la entrega continua

El envío al final de cada sprint ya está a tu alcance. A continuación, te mostramos cómo empezar.

Ian Buchanan Ian Buchanan

Las prácticas ágiles se dividen en recetas y sensores. Personas con mucha experiencia en software escribieron las prácticas que impulsaban al máximo su productividad. Además, las prácticas revelan las formas en que somos improductivos amplificando las dificultades que provocan.

La entrega continua es parte de la receta como práctica ágil y un gran revelador de ineficiencias. Además, para aprovechar los beneficios de la metodología ágil, debes seguirla en todas las fases del ciclo de vida de desarrollo de software. La planificación y el desarrollo iterativos no sirven de mucho si tus historias de usuario y correcciones de errores languidecen en un repositorio sin parar durante semanas antes de que las partes interesadas y clientes puedan echarles un vistazo.

Eres tan #ágil como tu capacidad para lanzar con frecuencia, y sin complicaciones.

La esencia de la metodología ágil es “inspeccionar y adaptar”. Probablemente no tengas que analizar con lupa tu sistema de compilación e implementación para evaluar si está dificultando o favoreciendo la agilidad de tu equipo. El hecho de que estés leyendo esto es una buena señal de que te decantas por lo primero. De modo que es el momento de adaptarse.

Vivir con frustración continua

Hay un estado común de software al que llamamos “frustración continua”. Se trata de la ausencia de cualquier práctica de integración o entrega continuas. Estos son los “síntomas”:

  • Confirmas la rama principal y esperas impaciente a que alguien te culpe.
  • Tu línea de código principal es inestable.
  • Los errores se ocultan en una maraña de muchísimos cambios de código, y tú temes el esfuerzo que hay que hacer para encontrar el error (por no hablar de solucionarlo) porque ha pasado mucho tiempo desde que trabajaste en esa área del código.
  • Cuando los evaluadores quieren someter a pruebas una función, tienen que molestar a todos los desarrolladores para conocer el estado actual y encontrar una compilación que funcione.
  • Las publicaciones requieren una congelación del código. Alguien se convierte en un cuello de botella artificial para los cambios de código para poder estabilizar la publicación. Mientras tanto, nadie deja de trabajar. Tú solo dejas de confirmar los cambios de código, lo que significa que un torrente de código no probado inundará tu repositorio como si fueran aguas residuales sin tratar en cuanto para la congelación.

Error | CI/CD de Atlassian

Si esa historia te resulta terriblemente familiar, debes saber que hay esperanza.

Piensa en cómo las inspecciones y adaptaciones han mejorado tu proceso de planificación y extrapólalo a los procesos de desarrollo y entrega. Imagina que pudieras detectar problemas en cada confirmación que hayas llevado a cabo. Ahora imagina que pudieras detectar problemas en tu estación de trabajo local, incluso antes de haber realizado una confirmación. Lo que acabas de imaginarte va a la base de por qué la metodología ágil requiere de entrega continua: los desarrolladores necesitan un feedback rápido.

Lo bueno de embarcarse en el viaje hacia la entrega continua es que comienza contigo. No tienes que vendérselo a nadie ni convencer a tu equipo de que deberíais ser más como Etsy. Y no hay nadie que utilice tecnología tan única que los principios, prácticas y herramientas básicas de entrega continua no se apliquen. Hay cosas sencillas que puedes hacer ahora mismo para mejorar tu vida.

Comienza con un script y un servidor

En el pasado solo existía Make, pero muchos desarrolladores se encontraron con el problema de los espacios en blanco. Más tarde, Ant sustituyó los espacios en blanco por los corchetes angulares. Ahora puedes saltarte estas generaciones anteriores. Por supuesto, todavía verás muchos proyectos de código abierto que usan Maven o incluso Ant. Atribúyelo a los viejos hábitos. Pero, como último recurso, puedes recurrir a lenguajes de compilación basados en XML.

Los lenguajes de desarrollo de última generación son mucho más fáciles de aprender y usar. En la mayoría de los casos, puedes utilizar un lenguaje de desarrollo escrito en el mismo lenguaje que estés utilizando para crear tu aplicación, lo que hace que todo sea más fácil para ti y tu equipo.

Gráfico del lenguaje del código y la herramienta recomendada correspondiente | CI/CD de Atlassian

La parte “continua” de la entrega continua implica obtener comentarios sobre cada confirmación, motivo por el que los servidores de compilación escucharán automáticamente tu repositorio y desencadenarán una compilación cuando algo cambie. La continuidad también significa corregir la compilación cuando está dañada. Como desarrollador, puedes beneficiarte del aislamiento del cambio. La mejor manera de evitar que las correcciones de errores se compliquen y se vuelvan difíciles de manejar es evitar que se acumulen. Los servidores de compilación, como Bamboo, son fáciles de instalar. En principio, el propósito es simplemente ejecutar tu script de compilación en un entorno limpio. En cierto modo, lo primero que hace el servidor de compilación es ayudarte a detectar problemas en tu script de compilación.

Comienza a detectar problemas automáticamente

Como podrás imaginar, tu servidor de compilación puede detectar mucho más que problemas con tu script de compilación. Hay cosas sencillas como activar las advertencias del compilador (para algunos lenguajes) y otras más difíciles, que cada orientador ágil defenderá, como las pruebas automatizadas. Esto se debe a que las pruebas solo manuales constituyen un cuello de botella para la entrega continua. Si acabas de empezar con pruebas automatizadas, busca la capa (unidad, integración, aceptación, interfaz de usuario) que te proporcionará el feedback más rápido.

Zanjemos la polémica: las pruebas automatizadas NO son una amenaza para los evaluadores manuales.

De hecho, los evaluadores humanos son excelentes guías cuando se trata de decidir qué automatizar y qué no. Una estrategia inteligente de automatización gira en torno a la pregunta “¿Qué tipo de problemas sería más valioso detectar?”. Necesitas personas experimentadas que se especialicen en calidad de software para responder a esa cuestión.

Las semillas de la entrega continua

Cualquiera puede empezar. Pero, si eres solo tú, nadie lo reconocerá como entrega continua. El siguiente paso es llevar estos bloques de construcción a tu equipo.

Inspírate en libros y artículos sobre la integración continua y las pruebas ágiles. Más adelante, encontrarás más y más motivos por los que es tan útil estar preparado para implementar. Luego puedes inspirarte en la entrega e implementación continuas.

El punto de partida para todos es bastante común, pero el estado final será algo exclusivo de tu producto y empresa.