Y la deuda técnica continua es inmediatamente mala y plantea todos estos riesgos en nuestro producto. Ahora, la deuda técnica de mantenimiento solo se vuelve mala cuando necesitas introducir cambios en el área donde la tienes, lo cual tiene sentido. Porque si algo funciona, no te importa qué tan malo sea el diseño siempre y cuando funcione y no necesites introducir nuevos requisitos allí. Por ejemplo, estamos en el mundo de los microservicios, ¿verdad? Entonces, puede ser un microservicio simple, mal diseñado, creado hace 10 años, que está ahí y simplemente funciona y ha funcionado desde entonces porque no ha habido más requisitos que implementar y no hemos necesitado preocuparnos por la deuda técnica que está ahí.
Lo que todo esto significa es que las principales preguntas sobre la deuda técnica que debemos hacer son, en realidad, ¿cómo determinamos qué deuda técnica necesita ser resuelta, al menos en este momento, y también cómo determinamos cuándo la deuda técnica que necesita ser resuelta se está saliendo de control, de modo que nuestra lista de deuda técnica que realmente necesita ser resuelta a corto plazo se está volviendo demasiado grande para resolver a corto plazo? Y la respuesta a eso está en las métricas de deuda técnica o en las métricas relacionadas con la deuda técnica, que me gusta dividir en tres categorías principales, a saber, métricas heurísticas, métricas de segundo nivel y la categoría que solo contiene una, el interés de la deuda técnica, y verán por qué es tan especial. Spoiler alert, es especial. Así que empecemos una por una.
Métricas heurísticas de deuda técnica. Cuando escuchamos la palabra heurística, generalmente se trata de algo automatizado, ¿verdad? Y estas métricas no son una excepción, son automatizadas, generalmente son proporcionadas por las herramientas que ya existen. Y la mayoría de estas herramientas miden cosas como la complejidad del código ciclomático, la duplicación de código, los malos olores de código, otra cosa que fue popularizada por el tipo llamado Ken Beck en 1990, y luego promovida en gran medida en el libro Refactoring, que muchos de ustedes pueden conocer, escrito por Martin Fowler en 1990... publicado en 1999 en realidad, lo siento. Luego habría algo como el Índice de Mantenibilidad, que puede tener un nombre diferente, pero generalmente es la agregación de las métricas anteriores, y algo más potencialmente. Luego estaría la Relación TAGDAT, que es esta relación entre los Costos de Remediación de TAGDAT divididos por el Costo de Desarrollo. Desafortunadamente, a pesar de tener el costo aquí y de que se supone que esta métrica se trata del impacto comercial directo en dinero y demás, este costo es demasiado sintético e inexacto, porque generalmente se determina por la cantidad de líneas de código que tienes en tu base de código, multiplicado por algún cociente sintético, que es el costo de desarrollar una línea de código, lo cual puede variar dependiendo de la línea y rara vez es una buena métrica para mostrar el esfuerzo real. Luego habría otras dos métricas, algo como problemas de seguridad detectables estática o heurísticamente y también casos límite potencialmente omitidos detectables heurísticamente, que son especialmente importantes en lenguajes de tipado débil donde no tenemos compiladores para detectar esos casos. Y finalmente, estas métricas también se pueden dividir en esos dos tipos de deuda técnica de los que hablamos anteriormente, deuda técnica de mantenimiento y deuda técnica continua. Es solo que la deuda técnica continua aquí no es algo que nos tome por sorpresa, sino más bien algo que ya podemos detectar mientras analizamos el código y potencialmente solucionar, lo cual generalmente es una buena idea.
Ahora, mencionamos herramientas, ¿verdad? Estas son las herramientas que acabo de mencionar de memoria. Probablemente las más grandes, así que SonarQube y luego Code Climate Quality, creo que se llama así. Y hay otras herramientas, herramientas de línea de comandos, herramientas con interfaz de usuario y demás. Así que hablemos de las ventajas y desventajas de las métricas heurísticas de deuda técnica. Entre las ventajas, estará la facilidad para obtener los números o la base de código completa de una vez. Básicamente, una vez que elijas la herramienta y la configures, obtendrás estos números con toda la división necesaria entre módulos, carpetas, etc., en cuestión de minutos, ¿verdad? Luego estará la facilidad para segmentar las métricas. Obtener la división por módulo o lo que mencioné anteriormente. Y esto sería útil para detectar posibles puntos críticos. Lugares donde las métricas muestran más deuda técnica que en otros lugares, que serían algunos puntos en los que potencialmente querrías echar un vistazo más de cerca. Ahora, obviamente, también habrá desventajas. La primera sería que es difícil convertir estas métricas en la cantidad de trabajo real que requiere la deuda técnica detrás de ellas, porque, no sé, toma la complejidad ciclomática, sabes que en esta clase es como 15, o en este método, es 15. ¿Qué te da en términos del esfuerzo para solucionarlo? Prácticamente nada. Así que aún tendrás que investigarlo y estimarlo, interpretarlo de alguna manera.
Comments