Blog

Registros de Deuda Técnica

¿Alguna vez te has preguntado cómo llevar un registro de toda la deuda técnica en tus proyectos de software? En este post, exploraremos el concepto de Registros de Deuda Técnica y cómo pueden mejorar la forma en que gestionamos la deuda técnica de nuestros proyectos.

¿Qué es la Deuda Técnica?

La deuda técnica se presenta en diferentes formas, por ejemplo:

  • Uso de librerías obsoletas.
  • Código mal escrito.
  • Falta de documentación.

Es importante saber cuánta deuda técnica tenemos acumulada, ya que si tenemos mucha puede resultar imposible gestionarla de forma eficaz. Antes de llegar a un estado de insostenibilidad total, debemos hacer planes para resolver la deuda técnica de forma adecuada. Para ello, es necesario entender qué tan grave es y cómo nos afecta y localizarla. Esto nos ayudará a decidir qué debemos solucionar primero.

Tipos de Deuda Técnica

La deuda técnica se puede clasificar en cuatro categorías:

  • Arquitectura: surge cuando la estructura del sistema no es óptima, lo que genera problemas como un mantenimiento deficiente, escalabilidad o rendimiento. Puede deberse a las elecciones iniciales de diseño o evolucionar a medida que el sistema crece.
  • Brecha tecnológica: es la brecha entre la tecnología actual utilizada en un proyecto y la última tecnología estable disponible. Por ejemplo: el uso de bibliotecas o marcos de trabajo obsoletos puede degradar el rendimiento y la escalabilidad.
  • Infraestructura: se deriva de los sistemas que respaldan el software, como servidores, almacenamiento y redes. Una infraestructura no óptima puede producir cuellos de botella y reducir la eficiencia.
  • Código: está relacionado con la calidad del código fuente en sí, por ejemplo: errores de código o duplicación. Esto hace que el código sea más difícil de entender, mantener y cambiar.

¿Qué es un Registro de Deuda Técnica?

Los registros de deuda técnica nos permiten documentar y hacer un seguimiento de la deuda técnica dentro de nuestro proyecto de software. Al mantener registros de deuda técnica, podemos priorizar, gestionar y abordar estos problemas, lo que garantiza la salud general y la capacidad de mantenimiento del software.

Cada registro de deuda técnica debe incluir los siguientes elementos:

  1. Descripción: una explicación clara y concisa de la deuda técnica.
  2. Motivo: el motivo por el que se incurre en deuda técnica, como:
    • limitaciones de tiempo.
    • falta de recursos.
    • soluciones temporales.
  3. Impacto: una evaluación de las posibles consecuencias de no abordar la deuda técnica, incluidos los efectos en el rendimiento, la capacidad de mantenimiento o la escalabilidad.
  4. Ubicación: la ubicación exacta del código, el archivo y el número de línea afectados.
  5. Prioridad: una priorización de la deuda técnica en función de su impacto y urgencia.
  6. Propietario: la persona o el equipo responsable.
  7. Fecha de contracción: la fecha en que se identificó o se contrajo la deuda técnica.
  8. Esfuerzo estimado: una estimación del esfuerzo en tiempo y recursos necesarios para resolver la deuda técnica.
  9. Plan de resolución: el plan para abordar la deuda técnica, incluidos los próximos pasos, las dependencias y las aprobaciones o los recursos necesarios.
  10. Estado: el estado actual del registro de deuda técnica, como "Abierto", "En proceso" o "Resuelto".

Ejemplo de un registro de deuda técnica

Campo Detalles
Descripción Refactorizar el módulo de autenticación de usuarios para mejorar la seguridad.
Motivo Implementación rápida para cumplir con una fecha límite de lanzamiento.
Impacto Posibles vulnerabilidades de seguridad y mantenimiento difícil.
Ubicación auth/user_auth_module.py, líneas 45-120.
Prioridad Alta
Propietario Equipo de desarrollo de backend
Fecha de ocurrencia 2024-07-10
Esfuerzo estimado 20 horas
Plan de resolución Implementar cifrado y manejo de tokens estándar de la industria.
Estado Abierto

Herramientas de seguimiento de la deuda técnica

Existen muchas herramientas para realizar el seguimiento de la deuda técnica, por ejemplo:

Esta plantilla se puede usar en tu projecto de GitHub, solo necesitas agregar una nueva plantilla a tu proyecto en .github/ISSUE_TEMPLATE/technical_debt.md:

---  
name: Technical Debt  
about: Create a technical debt record.  
title: ''  
labels: technical-debt  

---  

**Describe the technical debt**  

> _A clear and concise explanation of the technical debt._  

**Reason**  

> _The reason behind incurring technical debt, such as:_  
> - _time limitations._  
> - _lack of resources._  
> - _temporary solutions._  

**Impact**  

> _An assessment of the potential consequences of not addressing technical debt, including the effects on performance, maintainability, or scalability._  

**Location**  

> _The exact location of the affected code, file, and line number._  

**Priority**  

> _A prioritization (critical, high, medium, low) of technical debt based on its impact and urgency._  

**Estimated effort**  

> _An estimate of the effort in time and resources required to resolve the technical debt._  

**Resolution Plan**  

> _The plan to address technical debt, including next steps, dependencies, and any approvals or resources required._

github-technical-debt-issue-template

Ten en cuenta que algunos campos se omiten:

  • owner: la plataforma GitHub proporciona este campo de forma nativa.
  • date incurred: se puede utilizar la fecha de creación como fecha de la deuda.
  • status: los proyectos de GitHub ofrecen la posibilidad de crear campos personalizados, tales como "status", para realizar un seguimiento fácil del estado de la deuda técnica sin agregar explícitamente el campo al registro.

Alternativamente, podemos utilizar notas de descuento para sus registros de deuda técnica, por ejemplo, utilizando:

Estoy usando la siguiente plantilla junto con un pequeño script en Obsidian para rastrear la deuda técnica en mis proyectos personales:

---
id: <%task-id%>
aliases:
  - <%task-id%> <%title%>
tags:
  - task
  - technical-debt
created: <%timestamp%>
status: <%status%>
priority: <%priority%>

---

# <%task-id%> <%title%>

## Reason 

## Impact

## Location

## Estimated Effort

## Resolution Plan

Otras herramientas automatizadas pueden rastrear parte de la deuda técnica de nuestro proyecto. Consulta Herramientas de análisis de código fuente para saber más sobre cómo elegir una herramienta.

Priorización de la deuda técnica

Podemos utilizar algunos de los marcos de trabajo más conocidos, como:

Conclusión

Mantener registros de deuda técnica cambia la forma en que gestionamos la deuda técnica de nuestros proyectos. No se trata solo de llevar un registro de los problemas; se trata de fomentar un enfoque proactivo para el desarrollo de software. Al documentar y priorizar la deuda técnica, podemos abordar los desafíos desde el principio, evitando que se conviertan en problemas mayores en el futuro.

He descubierto que tener registros claros nos permite tomar decisiones informadas sobre dónde y cuándo asignar recursos y cómo optimizar el esfuerzo de desarrollo. Los registros de deuda técnica sirven como una herramienta de aprendizaje, que nos proporciona información valiosa sobre patrones de atajos o problemas recurrentes que se pueden abordar mediante un mejor diseño o refactorización.

En esencia, adoptar registros de deuda técnica no es solo una práctica: es un cambio de mentalidad hacia la creación de software sólido y escalable. Nos permite ofrecer mejores resultados para nuestros usuarios y partes interesadas al tiempo que fomenta un entorno de equipo más colaborativo y proactivo.

Así que, empieza a documentar tu deuda técnica hoy mismo; tu yo futuro se lo agradecerá.

Related Links

  • https://www.agilealliance.org/project-management-and-technical-debt/
  • https://www.atlassian.com/agile/software-development/technical-debt

Post Anterior