- Por Matt Belcher
- ·
- Publicado 26 Jun 2024
Señales de que tu software se está deteriorando
Cuando comencé mi carrera como desarrollador de software, uno de los muchos libros que leí fue "Growing Object Oriented Software Guided By Tests" de..
No hay una respuesta única a por qué es importante para una empresa modernizar su tecnología y tampoco hay un enfoque único para abordar un proceso de modernización de sistemas legacy, pero existen varias razones por las que tiene sentido tomar este camino.
Este artículo repasa por qué las empresas deben comprender los beneficios de la modernización de su software a la hora de pensar en la migración de aplicaciones, y analiza las ventajas de adoptar tecnologías modernas.
La modernización es una estrategia que ayuda a las empresas a mantenerse competitivas en el mercado. Les permite mantenerse al día con las tendencias y responder rápidamente a las demandas de los clientes. Por ejemplo, si pensamos en una empresa como Cazoo que ha sido capaz de revolucionar por completo el mercado de los coches de segunda mano en el Reino Unido. Sí, gran parte de ello es la oferta de servicios, pero en el fondo se trata de una estrategia tecnológica que ha adoptado enfoques y técnicas de ingeniería modernas. Todo ello les ha catapultado a convertirse en la empresa más rápida del Reino Unido en alcanzar el estatus de unicornio. Las empresas que llevan mucho tiempo vendiendo coches usados en el Reino Unido se encuentran ahora en la situación de tener que ponerse al día hasta cierto punto. Entonces, ¿cómo pueden las empresas ya establecidas mantener el ritmo utilizando la tecnología moderna?
Tradicionalmente, la tecnología o " IT " se consideraba un centro de costes dentro de una empresa. Sin embargo, en la actualidad, con la tecnología tan presente, las empresas deben considerar a la tecnología como un elemento fundamental.
Hay varios indicadores que las empresas pueden utilizar para orientarse sobre si necesitan o no emprender un viaje de modernización de software. Uno de los principales es que sus sistemas son cada vez más difíciles de cambiar y que la tecnología es incapaz de seguir el ritmo del negocio. Con el tiempo, esto se traduce en un aumento de los plazos de entrega, lo que significa que cada vez se tarda más en poner los cambios y los nuevos servicios en manos del cliente. Como resultado, esto puede llevar a menudo a no seguir el ritmo de los competidores y, en última instancia, a perder cuota de mercado.
Como sabemos, la tecnología evoluciona a gran velocidad. La tecnología actual es capaz de ofrecer soluciones innovadoras y enfoques diferentes para resolver problemas que no estaban disponibles hace unos 10 años. Por ejemplo, los sistemas de comercio financiero. La mayoría de los sistemas que se utilizan hoy en día se escribieron hace unos 15 años, si no más.Por aquel entonces, el navegador web no era tan potente ni tan rico en funciones como ahora. En consecuencia, las aplicaciones se creaban generalmente como aplicaciones de escritorio, ya que la computación en nube no había despegado todavía.
Las aplicaciones de escritorio plantearon entonces retos en cuanto a la implantación, la actualización y la provisión de acceso en muchas ubicaciones geográficas. Si avanzamos hasta el día de hoy, el navegador web es ahora mucho más maduro que nunca y podemos construir algunas aplicaciones increíblemente potentes y ricas en características en el navegador web que también son muy eficientes. Algo que no era posible hace unos 15 años.
Para que las empresas avancen estratégicamente es vital ser proactivo en lugar de reactivo en lo que respecta a la tecnología. Los sistemas de software deben recibir cuidado y atención constantes, y ser capaces de evolucionar continuamente en función de las demandas del negocio.
Hay que aprovechar el acceso a las nuevas tecnologías. Esto significa que es importante revisar lo que se ha hecho anteriormente, incluso si las aplicaciones funcionan bastante bien, puede haber una forma mejor de hacer las cosas que libere el potencial. Esto podría equivaler a una entrega más rápida o a una mejor capacidad operativa, lo que, a su vez, daría a la empresa mejores beneficios en cuanto a costes, fiabilidad, seguridad, rendimiento y sostenibilidad.
Sin embargo, modernizar no consiste únicamente en adoptar las últimas y mejores tecnologías. Es fundamental comprender primero las necesidades de la empresa y luego evaluar qué tecnologías pueden satisfacerlas mejor. El primer paso para el éxito de cualquier proyecto de modernización es comprender los objetivos y los motores de la empresa, por ejemplo, las razones para pasar a la nube mientras se moderniza la tecnología. Todo se relaciona con estos objetivos empresariales y con lo que la empresa espera conseguir. La alineación empresarial es vital en esta fase, no es algo que se espera que se consiga, sino algo que es estratégico para la empresa y para conseguir los beneficios.
Beneficios como la calidad, el tiempo y el coste pueden lograrse, pero están relacionados con la calidad de los resultados. Si no se dedica tiempo a establecer objetivos buenos y alcanzables, hay muchas posibilidades de fracasar. De hecho, casi tres cuartas partes de las organizaciones (74%) que han iniciado un proyecto de modernización de sistemas legacy no han llegado a completarlo. Pero, si tu software no es capaz de seguir el ritmo del negocio, entonces se convierte un factor inhibidor de crecimiento. Si la tecnología está frenando a tu organización, podría significar que no eres capaz de escalar en términos de oferta de servicios o incluso en nuevos mercados. Es vital cambiar esta situación y evitar que la tecnología se convierta en un obstáculo para el crecimiento de la organización. A menudo, la única manera de avanzar es embarcarse en un plan de modernización de software.
Al embarcarse en un proyecto de modernización del software, las empresas deben ser muy conscientes de no paralizar sus operaciones habituales. Tiene que haber un cierto nivel de mantenimiento: la tecnología es lo que da soporte a la empresa y genera dinero. El enfoque debe permitir que los sistemas sigan operativos mientras la empresa gestiona la modernización de forma gradual. Esto podría hacerse trabajando por áreas de los sistemas y adoptando un método gradual para modernizar cada parte del sistema.
Como parte de un esfuerzo de modernización del software, la Ley de Conway es algo que debería considerarse. En 1967, Melvin Conway introdujo la idea de que una organización debería diseñar sistemas que reflejen su propia estructura de comunicación. Esto permite que los sistemas estén débilmente acoplados. En la actualidad, también se ha investigado mucho sobre la composición de los equipos, lo que sugiere que los equipos que tienen más éxito son los multifuncionales. Es decir, los que incluyen una mezcla de diversas habilidades y disciplinas. Lo ideal es que los equipos individuales tengan todas las habilidades que necesitan. Esto les permite tener mayor autonomía, desvincularse de otros equipos y, en última instancia, avanzar más rápido.
Si imaginamos que una empresa quiere embarcarse en un esfuerzo de modernización de software que implique pasar a una arquitectura de microservicios, entonces para que esto sea realmente exitoso la empresa va a necesitar crear equipos de producto de larga duración y multifuncionales para cada uno de estos microservicios. Para muchas organizaciones esto puede suponer un fuerte contraste con el modelo actual de sus equipos. De nuevo, como otro ejemplo, si tienes quizás un rol de Administrador de Bases de Datos (DBA) dentro de una organización, que soporta bases de datos alojadas en las instalaciones, es muy probable que este rol tenga que evolucionar si la organización se moderniza y mueve su patrimonio de bases de datos a un servicio gestionado en una plataforma en la nube. Las funciones rutinarias, como las copias de seguridad de las bases de datos, la optimización de las consultas, etc., las proporciona ahora el servicio de gestión. Muchas organizaciones han hecho evolucionar estas funciones de DBA para que estén más orientadas a la ciencia de los datos como resultado de la adopción de la nube.
Por lo tanto, como parte de cualquier esfuerzo de modernización de software es vital tener en cuenta las topologías de los equipos y también el impacto en las definiciones actuales de los roles.
Además, entender cómo se entregará el software ayudará a determinar las funciones y responsabilidades. La modernización no sólo implica la adopción de nuevas tecnologías, sino también la evaluación y mejora de los procesos. Por ejemplo, para muchas organizaciones, una gran parte del proceso de modernización implica la incorporación de un mayor grado de automatización y la adopción de métodos de ingeniería avanzados, como la integración y la entrega continuas, para garantizar un proceso de despliegue sólido y repetible del software. Esto podría implicar, por ejemplo, la sustitución de un conjunto de casos de prueba ejecutados manualmente por pruebas automatizadas. En ese caso, el papel de esos tests manuales podría evolucionar.
Es probable que el personal que trabaja con la infraestructura local tenga que volver a formarse para adoptar las tecnologías de la nube, lo que implicaría una actualización de las habilidades, un cambio de la estructura organizativa y de los procesos de mantenimiento y una comprensión de las responsabilidades que asumiría esta función. Los proveedores de la nube a menudo pueden ayudar a realizar este cambio, por ejemplo, AWS tiene un modelo de responsabilidad. Esto ayuda a detallar a qué nivel es responsable la empresa, para gobernar y gestionar el nuevo sistema en la nube.
Las empresas también tienen que prepararse para los cambios en la contratación y la retención. Existen comunidades para diferentes tecnologías. El grado de madurez de la tecnología ayudará a determinar el tamaño de la comunidad existente. Si está madura o evoluciona rápidamente, habrá mucha charla en torno a ella. Habrá gente que tenga los conocimientos necesarios y quiera trabajar con ella. Pero si se utiliza una tecnología obsoleta, habrá menos comunidad que quiera trabajar con ella, por lo que le costará encontrar la demanda de contratación.
La transición a la nube y la modernización no es sólo una cuestión de tecnología. Las cosas que la empresa necesita hacer van a ser diferentes en la nube, la automatización y otros servicios cambiarán los procesos que se adopten.
Como se mencionó al principio, no hay una solución única para la modernización de la tecnología. La respuesta a cuándo es el momento adecuado depende del contexto y del nivel de riesgo que la empresa tenga en ese momento. Si la compañía no es capaz de detallar los factores que impulsan el negocio, la visión técnica y la hoja de ruta, puede que no sea el momento adecuado. Durante esta etapa, si la empresa necesita pasar a la nube rápidamente, a menudo la opción sería centrarse en una estrategia de migración de realojamiento, también conocida como "lift and shift", que permite a la empresa comenzar el proceso de migración a la nube sin tener el riesgo de centrarse en la modernización en su totalidad. Estas estrategias completas se detallan en: Estrategias de migración de aplicaciones - Las 3 R.
En un escenario ideal, las empresas evolucionan gradualmente, en lugar de tener que modernizarse: un ligero cambio en el volante en lugar de una vuelta en U. Pero, como algunas empresas descuidan la visión técnica, ya que la tecnología funciona como estaba previsto durante 10/15 años, el momento adecuado para modernizar o evolucionar ha pasado y las empresas están viendo las consecuencias de no evolucionar. Esto podría suponer, por ejemplo, baches en la producción o plazos de entrega prolongados, que son indicadores de la degradación de la arquitectura a lo largo del tiempo. Si estos son los indicadores que ponen de manifiesto la necesidad de modernizarse, el momento óptimo para hacerlo ha pasado porque los negocios están experimentando retos que los perjudican.
El peligro de no modernizar puede afectar a la cuota de mercado de una empresa y a la capacidad de reaccionar a la demanda de los consumidores. Además de los plazos de entrega, la insatisfacción del equipo y la tasa de defectos de las versiones: si estos índices se reducen, la capacidad de ejecución disminuye.
Esto se debe a la forma en la que se respaldan los sistemas y a la capacidad de responder rápidamente a los cambios del mercado. Si la ventaja competitiva se ralentiza, los sistemas no pueden ser soportados y la empresa pierde la capacidad de cambiar y satisfacer las demandas de su cliente. Otro reto sería el descontento de los empleados, el entorno se convierte en un lugar difícil para trabajar.
Estos retos pueden invertirse si se comprenden los beneficios de la modernización. Las empresas pueden responder a los cambios con rapidez, lo que les permite crecer y evolucionar junto con el negocio a medida que se adapta en diferentes direcciones para mantenerse al día con las demandas de los consumidores. La empresa experimenta una mejora del talento y la retención con un mayor rendimiento, seguridad y fiabilidad.
El potencial de negocio puede ser desbloqueado. En lugar de gastar tiempo preocupándose por la tecnología, el tiempo puede ser utilizado en el valor añadido de negocio puro. Tomemos como ejemplo las empresas más nuevas, como Cazoo, mencionada anteriormente. Los problemas y las oportunidades del negocio se abordan con mayor rapidez, ya que la empresa puede centrarse por completo en su actividad, en lugar de preocuparse por la deuda técnica.
Cuando comencé mi carrera como desarrollador de software, uno de los muchos libros que leí fue "Growing Object Oriented Software Guided By Tests" de..
Como CTO, tu día a día se basa en tomar decisiones informadas para guiar a tu equipo y cumplir con los objetivos estratégicos del negocio. Sin..
¿Te preguntas si tu software cumple con tus objetivos de crecimiento empresarial? Para responder a esa pregunta es necesario evaluar su calidad para..
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores