El software como motor de la innovación

El objetivo del software es aportar valor al negocio. Las empresas evolucionan y su software debe evolucionar con ellas. Si  software y objetivos de negocio están alineados harán posible la innovación y por lo tanto permitirá que esa organización obtenga una clara ventaja competitiva. 
 
El problema es que el software rara vez es una parte fluida del negocio, y mucho menos un motor de innovación. Es muy habitual que el software con el que cuenta una empresa apenas puede satisfacer las necesidades actuales del negocio sin fallar o requerir un alto nivel de mantenimiento táctico constante. Cuando eso sucede, el software se convierte en una carga cada vez mayor para la empresa, lo que lleva a una cierta decadencia en cuanto a sus oportunidades competitivas. Si no se controla, esta desaceleración conducirá al fracaso del proyecto.

 

El coste de no modernizar

 

El problema es que este declive muchas veces es  tan lento que nos acostumbramos a él y, el valor de lo que nos está costando todo ese software cada vez más difícil de cambiar está demasiado oculto. Solo vemos que el cambio ya es costoso de por sí, y que agregar modernización es un gasto extra.  Pero la alternativa será peor si no nos damos cuenta de que lo que estamos perdiendo por no modernizar  es mucho mayor que la inversión que necesitamos hacer para no seguir arrastrando defectos o perdiendo oportunidades de negocio.

Lo que sucede finalmente es que la empresa es  incapaz de evolucionar de acuerdo con las necesidades del mercado y de innovar para ser líderes en el sector. Además, hay un coste añadido y es el que supone atraer y desarrollar el mejor talento en una industria de software muy competitiva. Las empresas necesitan comprender todas estas implicaciones en su totalidad y sopesar cuánto les cuesta modernizar frente a los costes reales derivados de no hacerlo.

Es muy raro que un plan de negocios verdaderamente estratégico pueda renunciar a la inversión en el software que hace que el negocio evolucione. En cualquier caso, mantener el  software en la mejor forma posible debería verse como una inversión y no simplemente como un coste.

7 Opciones para modernizar sistemas Legacy

Continua leyendo

"Facilita el cambio, luego haz que el cambio sea fácil".- Kent Beck

 
El consejo que nos da Kent Beck es igualmente aplicable tanto si hablamos de decisiones de negocio al más alto nivel como si hablamos de elaboración del código.  Para que el software sea un activo comercial estratégico, debe estar listo para el próximo cambio y, si no está listo, debemos prepararlo para ese cambio antes de realizar el cambio en sí. Si no aplicamos esta filosofía de trabajo podemos vernos abocados al declive progresivo del que hemos hablado antes, y en consecuencia, "facilitar el cambio" se vuelve cada vez más difícil.
 
 
Software modernisation trata de aportar soluciones a los efectos negativos de un legado de cambios tácticos. Los efectos negativos no solo son inherentes al software en sí, sino que también lo  a las personas y a los procesos. Estos tres aspectos (personas- procesos- software) están forzosamente  vinculados en su capacidad de desarrollo de software. Considerarlos individualmente y por separado puede ahorrar costes y proporcionar beneficios a corto plazo, pero finalmente no logrará el impacto global que se necesita.
 
Software modernisation tiene, por lo tanto una implicación holística en la comprensión del proyecto, lo que significa que es necesario identificar cuáles son los aspectos clave que se van a  utilizar para evaluar el estado actual, así como los mecanismos de feedback continuo utilizando esas medidas. También es necesario comprender la estrategia de producto, las habilidades de las personas, la organización, los procesos, la arquitectura del software, las prácticas de calidad, los build pipelines, la tecnología y la infraestructura. Una vez tengamos claros todos estos aspectos podremos identificar las causas fundamentales del trabajo innecesario que estamos haciendo y eliminarlas. 

Evaluación de dependencias

Una vista holística sirve de ayuda para planificar, priorizar y gestionar las dependencias. Si bien puede haber áreas que se pueden abordar en paralelo, otras áreas pueden depender en gran medida unas de otras. Es también importante considerar el estado actual y la dirección y objetivos de negocio que puede haber en un futuro. Por ejemplo, un esfuerzo por alinear los equipos con los objetivos de negocio puede significar que los equipos necesiten reestructurarse. Sin embargo, los sistemas existentes pueden reflejar la antigua organización y, por lo tanto, requieren una comunicación entre equipos mucho más frecuente que puede conducir a ineficiencias y frustración. Otro ejemplo es trabajar para aislar un área del sistema que dará lugar a muy pocos cambios y que podría resultar un esfuerzo en vano. Ciertas áreas requerirán una evolución gradual; otras áreas pueden beneficiarse de un enfoque mucho más revolucionario.
 
Algunos aspectos de la estrategia se relacionarán con la evolución de la arquitectura del software para que ciertas áreas puedan aislarse porque cambian con frecuencia. Esto requerirá habilidades de desarrollo de software de alto nivel. Descubrirás que esto implicará la evolución de personas y procesos y puede requerir actualizaciones de tecnología y plataformas, incluso, quizá nuevas relaciones con proveedores de software. Otros aspectos de la estrategia se relacionarán con la evolución de la organización para que esté alineada con los objetivos de negocio y la optimización del trabajo entre equipos de manera sincronizada.  

 

En resumen: es posible que se necesario ejecutar varias iniciativas para abordar diferentes aspectos de la estrategia de software modernisation. Estas iniciativas deben relacionarse con un objetivo comúnmente acordado, requerirán un conjunto específico de personas y habilidades y deben contemplarse en su conjunto. 

Mantener el foco

Software Modernisation trata de garantizar que el software sea un activo estratégico para habilitar el negocio y conseguir ventaja competitiva. Por lo general, es necesario cuando un legado de cambios tácticos ha dado lugar a un software que mantiene al negocio como rehén. 
 
Un proyecto de software modernisation que resulte exitoso debe permanecer enfocado en los objetivos de negocio acordados y buscar continuamente feedback para evolucionar junto al objetivo utilizando medidas reflexionadas. A través de esfuerzos tácticos se pueden obtener beneficios, pero deben estar dentro de un contexto de estrategia general respecto al proyecto. 
 
 El 74% de las organizaciones no completan sus proyectos de modernización de sistemas heredados por eso es importante no bajar la guardia y evitar volver al modelo operativo original. Es necesario mantener constantemente el sistema bien adaptado a los cambios, y eso requiere que se mantenga y se desarrolle aún más la cultura, las habilidades, las prácticas y los procesos que han resultado del esfuerzo realizado en este tipo de proyectos. 

Cinco formas de liderar un cambio positivo a través de la modernización del software

Continua leyendo