¿Qué hacer con la deuda técnica?

Toda aplicación, en mayor o menor medida, tiende a volverse obsoleta y/o acumular deuda técnica con el avance del tiempo y las constantes actualizaciones o cambios en su código. En muchos casos, la deuda es tan grande, costosa y está tan fuera de control, que puede ser más económico invertir en desarrollar una nueva aplicación.
Deuda técnica

«Cuando analizan aplicaciones que llevan algún tiempo en desarrollo y en las cuales no se estaba vigilando la calidad técnica, generalmente el resultado del análisis es una deuda técnica significativa y muy costosa»

¿Qué es la deuda técnica?

Podemos definir la deuda técnica como el esfuerzo necesario para modificar el código de una aplicación, resolviendo todos los problemas que ésta pueda tener, dejándolo en unas condiciones que faciliten la evolución y minimicen los costos de soporte y desarrollo de nuevas funcionalidades.

Es importante tener en cuenta que una aplicación puede cumplir funcionalmente con los requerimientos, pero aun así tener una deuda técnica altísima.

A continuación, compartimos algunas situaciones, con las cuales es posible identificar la deuda técnica de una aplicación.

  • Código complejo, difícil de mantener/actualizar en el cual, pensar, en una actualización implica tiempo, costos y generación de errores.
  • La aplicación es percibida como una limitante de una adecuada operación productiva dentro de la organización.
  • Falta de motivación del equipo de desarrollo para trabajar en nuevas funcionalidades.
  • Temor del equipo ante la necesidad de modificar el código, ya que se puede incurrir en generación de incidentes e inversión de tiempo innecesario.
  • Se evidencia la falta de estándares en el código.
  • Se puede encontrar un alto porcentaje de código duplicado.
  • No hay pruebas unitarias.
  • Es difícil entender el código o no se encuentra correctamente “comentado”
  • Muchas secciones de código no se usan “dead code” o están comentadas.

¿Cómo medir la deuda técnica?

Tan importante como definir los aspectos a medir, es el poder medir y analizarlos constantemente, para lo cual conviene incorporar herramientas que realicen la medición de forma automática, a medida que el equipo de desarrollo va introduciendo modificaciones en el código. Una de las herramientas más usada, actualmente, para este fin es Sonarqube.

En InterGrupo usamos dicha herramienta para analizar el código de las aplicaciones propias y desarrolladas para nuestros clientes, con el fin de determinar cómo están respecto a los variables, previamente definidas en las políticas internas de calidad.

Este análisis y medición es fundamental para el mejoramiento continuo, convirtiéndose en la clave para mantener la deuda técnica bajo control. Recordemos que lo que no se mide no se puede mejorar.

En ocasiones, la deuda técnica se acumula por decisiones conscientes, basadas en metas y estrategias del negocio, los cuales requieren agilidad en la entrega de productos o servicios al público objetivo, antes que la competencia lo realice.

Lo anterior conlleva a que se tomen decisiones que van en contra de la calidad del código, aumentando la deuda técnica, pero favoreciendo el “time to market”. Lo importante es tener conciencia sobre dicha deuda, ya que en algún punto del tiempo debe pagarse (realizando una refactorización del código) y entre más pronto se pague mejor.

InterGrupo, a través de su servicio Imaginar lo acompaña en el desarrollo de ventajas competitivas, a través de la identificación de nuevas oportunidades de negocio.

Al identificar nuevas oportunidades de una manera oportuna, tendrá más posibilidades de acelerar la creación de nuevas soluciones y tener un time to market más óptimo.

¿Cómo tener la deuda técnica bajo control?

Para tener la deuda técnica bajo control, se debe tener claro en qué escenario se encuentra el proyecto tecnológico:

  1. Se está iniciando el desarrollo de una nueva aplicación
  2. Existe una base de código que tiene una deuda técnica alta.

En el primer escenario, es recomendable definir, desde el inicio, los límites aceptables de cada variable de calidad e incorporar el análisis durante la ejecución del proceso de integración continua.

En el caso de las aplicaciones que ya cuentan con una deuda técnica acumulada, lo ideal es comenzar por una medición objetiva, para conocer qué tanta deuda tiene; esto con el fin de asegurar que el equipo de desarrollo no aumente esta deuda, cuando se realicen las modificaciones.

Una vez identificado el nivel de tecnología legada, se debe construir un plan estratégico que nos permita identificar el plan de trabajo y mejora de la herramienta.

Cabe resaltar que, aunque una aplicación tenga un conjunto de problemas, que son la sumatoria de su deuda técnica, puede no ser estratégico resolverlos todos. Puede no tener mucho sentido priorizar ajustes sobre un módulo de una aplicación, que lleva ya algún tiempo en producción y no se ha modificado hace muchos meses o años; a menos, claro está, que se identifique que alguno de los problemas está causando errores que afectan directamente a la prestación del servicio/producto, generan inconsistencias o vuelven la aplicación vulnerable a algún tipo de ataque.

La clave por lo tanto en estos escenarios es una correcta priorización de los problemas que deben resolverse.

Finalmente, si se quiere maximizar la inversión que ya se realizó en alguna aplicación, extendiendo su vida útil por mucho más tiempo, adicionando características de una aplicación moderna y gestionando la deuda técnica de una forma estratégica, un servicio como el de modernización de aplicaciones de Intergrupo le ayudará a conseguir estos objetivos de una manera segura y confiable.

Autor:
Giovanny Saray
Gerente de estrategia de Modernización de aplicaciones