Estimación de una renovación del proceso de CI/CD
Cómo estimar una revisión integral de CI/CD: el trabajo en el pipeline no tiene demostración, así que divídalo en partes según lo que se pueda eliminar. Esa tarea que lleva todo un trimestre y que se esconde en la lista de tareas pendientes como una refactorización.
El trabajo en la canalización no tiene demostración. Seleccione «qué versión se puede eliminar hoy» para que siga siendo estimable.
Las revisiones de CI/CD son las tareas peor definidas de la lista de tareas pendientes. No hay ningún resultado visible para el usuario, ni demostración, ni captura de pantalla que nadie pueda incluir en las notas de la versión. El trabajo es de carácter estructural: sustituir un pipeline por otro, migrar un sistema de compilación, consolidar tres ejecutores de pruebas en uno solo, pasar de un script de shell creado a mano a un archivo de flujo de trabajo adecuado. El equipo sabe que hay que realizar ese trabajo. El equipo también sabe que llevará un trimestre, y que ese trimestre pasará desapercibido fuera del departamento de ingeniería.
El modo de fallo de la estimación es previsible. El equipo vota por el 13 porque «se trata de una refactorización, es un proyecto de gran envergadura». Tras tres sprints, el proceso antiguo sigue funcionando en paralelo al nuevo, los dos sistemas están parcialmente configurados y cada ingeniero tiene un modelo mental diferente sobre cuál de ellos debe utilizarse. La historia no está terminada porque no existe una definición de «terminado»: los procesos no se «lanzan»; se adoptan, y la adopción es una cuestión distinta de «que lo nuevo exista».
Lo que se dice en la sala
SRE: «Tenemos que dejar atrás al corredor que va en cabeza. Dos sprints».
Titular: «¿Cuál es la definición de “terminado”?»
SRE: «…el nuevo funciona».
Titular: «El nuevo ya nos sirve para la mitad de nuestros trabajos».
Backend: «Pero el antiguo sigue funcionando para la otra mitad».
Entrada: «Exacto. Así que habremos terminado cuando podamos borrar el antiguo».
Esa es la clave. La tarea no consiste en «construir el nuevo proceso de compilación»; es probable que el equipo ya lo hubiera creado hace meses, en algún proyecto experimental realizado por alguien en su tiempo libre. La tarea consiste en «eliminar el antiguo proceso». Hasta que el antiguo sistema de compilación no haya desaparecido, la renovación no habrá concluido; se trata de una infraestructura paralela con todos los costes y ninguna ventaja. Definir la tarea como eliminación en lugar de creación proporciona al equipo una definición de «terminado» sobre la que puede votar.
Cómo cortarlo
Haga un inventario de los trabajos que aún se están ejecutando en el sistema antiguo. Para cada trabajo: ¿qué se necesitaría para eliminar la versión antigua? Eso constituye una «historia». Algunas son sencillas (el trabajo ya se ha replicado en el nuevo pipeline; basta con eliminar el YAML antiguo). Otros suponen un trabajo considerable (la suite de pruebas tiene una ruta codificada; el paso de implementación depende de una variable de entorno antigua). Cada eliminación es una pequeña parte que el equipo puede entregar y mostrar. «Hemos eliminado el Jenkinsfile del servicio de autenticación» es un resultado que se puede mostrar.
Cada eliminación se puede estimar de la forma habitual: analice primero las incógnitas (¿tiene este trabajo usuarios que desconocemos?), y a continuación calcule la eliminación comparándola con una eliminación de referencia que ya haya implementado. La mayoría de las partes se sitúan en 2 o 3 puntos. La historia que se presentaba como «13, refactorización, grande» era en realidad quince «2» y un «3» camuflados.
Preguntas que conviene plantearse antes de votar
- ¿Qué se eliminará cuando esta historia haya concluido?
- ¿Qué puestos de trabajo siguen dependiendo del antiguo sistema?
- ¿Existe algún usuario del antiguo proceso del que no tengamos constancia —un equipo externo, una tarea programada?
- ¿Cuál sería la reversión en caso de que el nuevo proceso presentara un retroceso tras eliminar el antiguo?
- ¿Quién tiene la última palabra sobre la afirmación de que «el nuevo canal de información es la fuente de la verdad»?
- ¿Hay alguien que lleve un seguimiento, semana a semana, de qué tareas se ejecutan en el sistema antiguo y cuáles en el nuevo?
Si la respuesta a «¿qué se elimina?» es «nada en este sprint», el equipo sigue en la fase de infraestructura paralela y la historia no supera la puerta de preparación.
Los trabajos en la tubería se realizan una vez que se haya retirado la antigua. Proceda por etapas; calcule cada retirada por separado.
Consulte división horizontal frente a vertical para comprender por qué «crear el nuevo sistema» no es el eje de división adecuado, así como los demás ejemplos de estimaciones que han dado resultado. Organice una sesión gratuita de «planning poker» una vez que el equipo disponga de una lista de elementos que se van a eliminar.