A medida que el negocio crece, los sistemas y procesos también necesitan crecer. Garantizar que la evolución del software sea sencilla y esté enfocada en fomentar que el negocio pueda seguir creciendo es fundamental. Lo lógico es que los sistemas se conciban de manera que traten de dar respuesta a este crecimiento continuado, pero en muchas ocasiones no es tan sencillo evolucionarlos y se convierten en monolíticos.
En la serie Demystifying Software Modernisation destacamos la necesidad de implementar estrategias para que el software sea fácil de cambiar. Centrarse en las fases de diseño iniciales puede ayudar a una organización a identificar la mejor estrategia en cada caso, porque suele ser diferente según el servicio o producto que ofrece una empresa. La modernización consiste en localizar cuál es el elemento específico para cada ocasión que va a permitir potenciar sus posibilidades de crecimiento y sus ventajas competitivas.
La modernización de software no consiste solo en actualizar lo relacionado con el software, sino también de repensar la ingeniería de la plataforma. Puede darse el caso de que los pipelines de implementación que se han definido generen ciertas dificultades para mantener el ritmo de crecimiento.
A continuación, os dejamos 3 ejemplos prácticos de estrategias que pueden implementarse para facilitar el cambio en el software:
1. Code Hotspots
Los equipos de desarrollo suelen trabajar en paralelo y posiblemente sobre el mismo código. En algunas organizaciones, esto se convierte en un desafío considerable. Si analizamos cómo están operando para comprender las dependencias que tienen entre sí, podemos comenzar a comprender la dinámica de cómo funcionan. Esto permite centrarse en crear un backlog de tareas que se pueden realizar de forma independiente sin generar interdependencias. Cualquier punto de contacto entre los equipos necesita ser bien definido y los desarrolladores pueden priorizar su trabajo.
Una forma de identificar estratégicamente qué áreas dificultan el trabajo es observar los puntos de acoplamiento, analizar dónde se deben realizar los cambios y saber qué es lo que escapa el proceso de control y, por lo tanto, nos ralentizará el proceso. Es habitual que esos factores que escapan a nuestro control se den tanto a nivel de desarrollo como de negocio. Por ejemplo, si el proceso que se está revisando implica la coordinación entre varios departamentos, será necesaria la sincronización de todos los equipos.
2. Identificar la deuda técnica
A medida que las cosas cambian, a menudo se incurre en un departamento técnico. Pero el término "departamento técnico" es muy genérico. Software modernisation debe completarse centrándose en los resultados y los objetivos de negocio, por lo que el departamento técnico debe tener el foco puesto en aportar ese valor que el negocio necesita.
De ese modo el departamento técnico debe ser quien impulse y priorizar los cambios. Es necesario poner el foco en qué es aquello que ocasiona bloqueos en el negocio y resolver esos bloqueos para seguir aportando valor. La pregunta que se lanzó en el episodio 6 de la serie Desmitificando la modernización del software y que resume esta idea es: "¿Qué es lo que nos impide hacer que el cambio suceda de la manera más rápida y sencilla posible?"
3. Modularización
La modularización puede ser extremadamente difícil de lograr. Actualmente, existen muchas aplicaciones monolíticas (una aplicación de software que se implementa como un artefacto único donde el código fuente reside en un solo repositorio) que están mal estructuradas.
En un monolito, la mayoría de las características ya existen. Al observar el sistema actual, se puede comenzar a agrupar esas características y comportamientos, lo que te dará la primera indicación de cómo podemos gestionar el sistema de forma más efectiva.
La serie Demystifying Software Modernisation sugiere mantener la modulación a un nivel bajo. Si no tienes claros los límites, la mejor opción es mantener las funciones juntas físicamente para crear un módulo flexible y que puedan ser accesibles entre sí. Durante este proceso, se puede validar la interfaz y el valor, y definir las API, lo que te hará ganar tiempo para estabilizar el sistema hasta que se pueda realizar una separación física.
A continuación te invitamos a ver los episodios 5 y 6 completos de la serie Demystifying Software Modernisation para obtener más información sobre cómo tu software empresarial puede evolucionar al mismo ritmo que tu empresa.
Descubre cómo Codurance puede ayudarte con tu estrategia de modernización.
Demystifying Software Modernisation Ep.5: Strategies for making your software easy to change
Demystifying Software Modernisation Ep.6: Strategies for making your software easy to change (Part 2)