Parte I: Más Allá de la Velocidad: Gestión de Entrega Basada en Datos para Equipos Ágiles
En un entorno empresarial volátil e incierto, es fundamental poder entregar incrementos de software con calidad y rapidez. Estos objetivos son una parte clave del desarrollo ágil, pero para poder moverse rápido, el equipo necesita una comprensión profunda de lo que se está haciendo y, más importante aún, si va por el camino correcto. Para ello, no basta con preguntarse «¿qué tan rápido vamos?». Los Service Delivery se aseguran de que el equipo progrese de manera eficiente hacia las metas. Necesitan profundizar y usar datos reales para comprender lo que sucede tras bambalinas. Con esta comprensión, pueden identificar obstáculos, tomar decisiones informadas y, en última instancia, permitir al equipo construir un mejor software y lanzar una versión más rápida del mismo.
Esta Parte I de esta serie de artículos explora la gestión de entregas basada en datos, un poderoso enfoque que permite a los equipos ágiles desbloquear información valiosa de sus herramientas de desarrollo existentes. Al unir esos puntos de datos, los Service Delivery pueden obtener señales valiosas que luego se pueden convertir en información procesable.
Datos: Su ventaja ágil. ¿La está utilizando?
Cada paso del proceso de desarrollo de software crea señales valiosas. Las señales las producen las actividades del equipo. Por lo tanto, es necesario que un Delivery Manager las identifique, comprenda e integre para ganar conocimiento. Para obtener esas señales, es importante utilizar las herramientas adecuadas. A continuación, presentamos los tipos de herramientas más comunes que pueden ser útiles para recopilar señales:
Herramientas de gestión de proyectos: (Jira, Asana) se utilizan para planificar, rastrear e informar sobre tareas, historias de usuario y el progreso general del proyecto. Estas herramientas brindan una descripción visual del flujo de trabajo, los plazos y la carga de trabajo del equipo.
Verificadores de código: (SonarQube, CodeClimate) se utilizan para el análisis estático del código, identificando posibles errores y vulnerabilidades de seguridad antes de que causen problemas.
Sistemas de control de versiones: (Git) sus dos propósitos principales son primero, mantener la integridad de los diferentes artefactos; y segundo, permitir una colaboración eficaz sobre una base de código común. El sistema de control de versiones es esencial para gestionar los cambios y mantener un historial de la evolución del proyecto.
Herramientas de implementación: (Jenkins, CircleCI) son como el equipo de boxes para el software, se utilizan para agilizar el proceso de implementación. Realizan un seguimiento de la frecuencia con la que se lanzan nuevas versiones y la rapidez con la que se corrigen los problemas.
Herramientas de prueba: (Las pruebas se realizan para garantizar que el software funcione correctamente). Estas herramientas se utilizan para mantener una estrategia de control de calidad sistemática. En estas herramientas, los equipos crean diferentes casos de uso pero también registran la ejecución y los resultados de los diferentes tipos de prueba.
Herramientas de monitoreo: (Datadog, New Relic) estas herramientas monitorean el software en parámetros de producción, como el rendimiento y la salud general, produciendo una visión de qué tan rápido responde a los usuarios y si hay algún error.
Comentarios de los clientes: (encuestas, entrevistas) permiten recopilar el resultado real: retroalimentación de los usuarios que utilizan el software. Puede brindar información valiosa sobre la satisfacción del cliente al recopilar información sobre la satisfacción del usuario.
Convertir señales en información procesable
¡Imagina toda esta información encerrada en cajas separadas! Eso no es útil. Para que un Delivery Manager convierta las señales en información procesable, necesita unirlas de todas estas herramientas y analizarlas para obtener una imagen completa de cómo progresa el trabajo. Las herramientas de integración de datos como Swarmia, Minware o Hevo Data actúan como puentes, conectando todos estos datos de diferentes herramientas para que pueda ver el panorama general. Para hacer esta integración, es importante que el Delivery Manager use los datos para responder las preguntas correctas. Solo entonces se deben definir las métricas.
Una metodología interesante para determinar qué métricas se necesitan es Goal – Question – Metrics (GQM)1. Siguiendo esta metodología, aquí hay algunas preguntas que deben hacerse y ejemplos de posibles métricas para ayudar a responderlas:
¿El equipo avanza a un buen ritmo?
Métrica: Velocity.
Por qué es importante: La velocidad mide la cantidad de trabajo que un equipo completa dentro de un marco de tiempo específico (generalmente un sprint), normalmente calculada sumando los Story Points (una estimación relativa del esfuerzo) de todas las historias de usuario completadas en un sprint. Las herramientas de gestión de proyectos como Jira o Asana pueden rastrear las historias de usuario completadas y sus Story Points asociados.
¿Las tareas tardan demasiado en completarse?
Métrica: Lead Time & Cycle Time.
Por qué es importante: El tiempo de entrega mide el tiempo total que lleva completar un elemento de trabajo, desde que ingresa al proceso de desarrollo hasta que está listo para la implementación. El tiempo de ciclo se enfoca en el tiempo dedicado activamente a trabajar en un elemento de trabajo, excluyendo los tiempos de espera. Los sistemas de control de versiones como Git pueden rastrear cuándo se inicia y finaliza un elemento de trabajo, y puedes calcular el tiempo de entrega y el tiempo de ciclo analizando esas marcas de tiempo.
¿Hay muchos errores en el código?
Métrica: Defect Rate.
Por qué es importante: La tasa de defectos mide la frecuencia de errores descubiertos en el código base. Normalmente se expresa como la cantidad de defectos encontrados por unidad de trabajo (por ejemplo, por cada 1000 líneas de código). Las herramientas de seguimiento de problemas utilizadas para informar errores pueden proporcionar datos sobre la cantidad de defectos identificados. Para calcular la tasa de defectos, divide el número total de defectos por el tamaño del código base o el número de historias de usuario completadas.
¿Está bien probada la mayor parte del código?
Métrica: Code Coverage.
Por qué es importante: La cobertura del código mide el porcentaje de tu código base que está cubierto por pruebas unitarias automatizadas. Una mayor cobertura del código indica un proceso de prueba más completo y potencialmente menos errores. Las herramientas de prueba proporcionan informes de cobertura del código que indican qué secciones de tu código están cubiertas por pruebas unitarias.
¿Con qué frecuencia se lanzan nuevas versiones?
Métrica: Frecuencia de release.
Por qué es importante: La frecuencia de implementación mide la frecuencia con la que lanzas nuevas versiones de tu software a producción. Normalmente se expresa como la cantidad de implementaciones por unidad de tiempo (por ejemplo, implementaciones por semana). Las herramientas de implementación como Jenkins o CircleCI permiten calcular la frecuencia de implementación al rastrear los eventos de implementación.
¿Qué tan rápido podemos solucionar problemas en producción?
Métrica: Deployment Lead Time.
Por qué es importante: El tiempo de entrega de implementación mide el tiempo que lleva arreglar un error o problema en producción e implementar una corrección para los usuarios. Refleja la capacidad del equipo para responder a los problemas de manera oportuna. Rastrea el tiempo desde que se identifica un problema de producción hasta que se implementa una corrección. Las herramientas de implementación y los sistemas de control de versiones pueden proporcionar información sobre los tiempos específicos donde se realizaron ciertas actividades que más tarde se pueden usar para calcular el tiempo de entrega de la implementación.
¿Tenemos que revertir las versiones con frecuencia?
Métrica: Rollback Rate.
Por qué es importante: La tasa de reversión mide la frecuencia de las reversiones debido a errores o problemas imprevistos. Una alta tasa de reversión indica posibles problemas con el proceso de implementación o la calidad del código. Las herramientas de implementación rastrean las implementaciones exitosas y fallidas. Analiza el historial de implementación para identificar reversiones y calcular la tasa de reversión.
¿Funciona el software sin problemas?
Métricas: Application Uptime, Average Response Time, Error Rate.
Por qué es importante: Estas métricas miden la salud y el rendimiento del software en producción. El tiempo de actividad de la aplicación refleja el porcentaje de tiempo que el software está disponible para los usuarios. El tiempo de respuesta promedio indica qué tan rápido responde el software a las solicitudes de los usuarios. La tasa de error mide la frecuencia de errores encontrados por los usuarios. Las herramientas de monitoreo como Datadog o New Relic rastrean estas métricas continuamente. Aprovecha estas herramientas para analizar la salud y el rendimiento de la aplicación.
¿Están contentos los clientes o usuarios?
Métrica: Satisfacción del Cliente.
Por qué es importante: La satisfacción del cliente es una medida más amplia de qué tan felices están los usuarios con el software. Se puede evaluar mediante encuestas, entrevistas y reseñas de usuarios. Realiza encuestas o entrevistas con una muestra representativa de la base de usuarios para medir su satisfacción.
Hasta ahora, hemos visto las limitaciones de la velocidad como única métrica para los equipos ágiles. También hemos introducido la gestión de entrega basada en datos como un enfoque poderoso para obtener una comprensión más profunda de su trabajo.
La entrega rápida de software de alta calidad es crucial, pero para moverse con agilidad, los equipos necesitan ir más allá de la simple medición de la velocidad. Necesitan comprender qué se está haciendo y si se están moviendo en la dirección correcta.
No te pierdas la Parte II de nuestra serie, Más allá de la velocidad: Gestión de entregas basada en datos para equipos ágiles, donde pasaremos de la teoría a la práctica. Exploraremos escenarios del mundo real y mostraremos cómo los equipos ágiles pueden aprovechar los datos para diagnosticar problemas, optimizar el flujo de trabajo y, en última instancia, entregar software de alta calidad.