Trazando el camino hacia la mejora continua: El modelo evolutivo
Autor: José Miguel Lueiza (Engineer Manager, Lead of Software Engineering de DP&Techs de Cencommerce)
La medición y optimización del rendimiento de los equipos de ingeniería de software puede ser un desafío. Determinar el impacto de sus prácticas en el producto final es clave para el desarrollo de productos digitales de calidad. Para abordar este problema, en Cencommerce hemos creado el Modelo Evolutivo, una aplicación que permite rastrear de forma automática las diferentes prácticas de ingeniería de software de los artefactos que conforman nuestro ecosistema. La información que genera nos permite tomar mejores decisiones, mejores estrategias, y mejores prácticas, para abordar los gaps en los diferentes desarrollos de aplicaciones.
Pero ¿en qué consiste el modelo evolutivo?
El modelo evolutivo es una aplicación diseñada para medir y optimizar el rendimiento de la ingeniería de software en las distintas aplicaciones de Cencommerce. Utiliza una combinación de herramientas de software y técnicas de análisis de datos para recopilar y analizar información sobre las prácticas de ingeniería de software utilizadas en nuestro ecosistema. Esto incluye:
- Prácticas de calidad (unit test, load tests, etc).
- DevOps (continuos deploy, continuous integration, etc).
- Branching model (hotfix, gitflow, etc.), y muchas más.
La idea detrás de esto es siempre empoderar a los equipos en cómo quieren que sus aplicaciones evolucionen. Para eso, ellos mismos deberían definir el camino que quieren seguir y los niveles que esperan delimitar.
Por ejemplo, puede que un equipo considere que, en cuanto a calidad, deberían contar con lo siguiente:
Como vemos en la tabla, el equipo comienza con pruebas manuales en el nivel inicial del proyecto (Level 0) y progresa hacia pruebas unitarias, para luego avanzar hacia pruebas de carga y otras prácticas más avanzadas. Este proceso iterativo se repetirá para cada uno de los componentes del proceso de desarrollo de software en los que la ingeniería de software interviene, permitiendo tener un panorama del proceso evolutivo de su proyecto.
Implementación
Para implementar el modelo evolutivo, hemos seguido un enfoque iterativo y basado en datos. Primero, hemos seleccionado las herramientas adecuadas para recopilar los datos necesarios. Esto incluye GitLab para el código y el proceso de integración continua, Backstage y Jira para las tareas y proyectos, y New Relic para el rendimiento de las aplicaciones en producción.
Una vez que hemos configurado estas herramientas y comenzado a recopilar la data, hemos utilizado técnicas de análisis de datos para comprender mejor cómo se está desempeñando el equipo y qué áreas necesitan mejoras. Esto nos ha permitido establecer objetivos de mejora y crear planes de acción para abordar los gaps de ingeniería de software. También hemos implementado un sistema de retroalimentación para medir el impacto de nuestras iniciativas de mejora y ajustar nuestro enfoque.
Visualización
La visualización de este modelo es una parte fundamental para tomar decisiones estratégicas acerca del trabajo a realizar sobre las aplicaciones. Como ya tenemos Backstage como catálogo de software, implementamos sobre él una aplicación que nos permite esa visualización. Acá un ejemplo:
Con esta información buscamos comprender el desempeño del equipo y las áreas donde mejorar, a través de identificar oportunidades de innovación y profundizar iniciativas de mejoras, siempre midiendo el impacto en el rendimiento del equipo y la calidad del producto final. Además, el modelo evolutivo nos permite comparar el rendimiento del equipo con el de otras organizaciones y con el de nuestras propias aplicaciones en el pasado, lo que nos permite establecer objetivos realistas y medibles.
Resultados esperados
Esperamos que el modelo evolutivo nos ayude a mejorar significativamente el rendimiento de las aplicaciones de Cencommerce. Para lograrlo, analizaremos la evolución de varios indicadores de DevOps, como el lead time, la tasa de fallos en los cambios, la frecuencia de implementación y el tiempo medio de recuperación, junto con los indicadores de negocio y de impacto para el usuario. Esto nos empujará a tomar decisiones informadas sobre cómo abordar los gaps de ingeniería de software.
También aspiramos a que este enfoque nos ayude a descubrir áreas de mejora en las que podamos innovar y mejorar continuamente, mientras medimos el impacto de nuestras iniciativas en el desempeño del equipo y la calidad del producto final.
En Cencommerce creemos firmemente en que la mejora continua de la ingeniería de software en nuestras aplicaciones puede generar mejoras significativas en diversos aspectos, como el rendimiento, la calidad y la experiencia del usuario. Es por eso que nos enfocamos en implementar prácticas y herramientas que nos permitan alcanzar estos objetivos de manera efectiva.
El Modelo Evolutivo está diseñado para dar respuesta a estas necesidades, a través del monitoreo y la optimización de las distintas prácticas de ingeniería de software. Además esta aplicación nos permitirá compartir conocimientos, prácticas y técnicas, entre los distintos equipos que tiene todo el ecosistema.
Con una visión clara y sencilla del estado de las aplicaciones, se puede identificar fácilmente qué áreas necesitan mejoras y priorizar el camino hacia la excelencia en el desarrollo de software.