Documentos de Académico
Documentos de Profesional
Documentos de Cultura
“Enviar el código por primera vez es como endeudarse. Un poco de deuda acelera el desarrollo
siempre que se pague pronto con una reescritura... El peligro surge cuando la deuda no se
paga. Cada minuto gastado en código no del todo correcto cuenta como interés sobre esa
deuda. Las organizaciones de ingeniería enteras pueden paralizarse bajo la carga de la deuda
de una implementación no consolidada, orientada a objetos o de otro tipo”.
—Ward Cunningham, 1992
Beneficios:
Cumplir con el plazo de comercialización
El período de tiempo de comercialización cubre el tiempo para generar la idea de un producto y
luego diseñarlo, desarrollarlo y lanzarlo. A menudo, un cliente tiene plazos de publicación
estrictos debido a eventos de marketing o demostraciones importantes.
En este tipo de situación, su equipo debe trabajar con rapidez y es posible que deba permitir
fallas menores en el código (que no interrumpen un lanzamiento exitoso) para cumplir con la
fecha límite. Estos problemas luego se convierten en una deuda técnica que su equipo aborda
después del lanzamiento.
Creación de POC y MVP
Si su equipo prepara una Prueba de concepto (POC) o un Producto mínimo viable (MVP) para
un cliente, debe presentar la idea general de cómo implementará la solución. En este caso,
está bien si la calidad del código no es perfecta.
Aquí, entrar en deuda técnica ahorrará tiempo y no hay riesgo de perjudicar el negocio.
INDICADORES:
Para reducir las posibilidades de que su equipo acumule deuda técnica no intencional, esté
atento a los indicadores en cada una de estas áreas: entrega, arquitectura y personas.
INDICADORES DE ENTREGA:
Degradación de la calidad:
Si aumenta la cantidad de esfuerzo y tiempo que lleva hacer un nuevo cambio, puede
indicar una deuda técnica.
Incapacidad para experimentar rápidamente.
Un proceso típico de desarrollo de software incluye investigar las posibilidades técnicas y
prepararPicosy POC. Estas actividades a menudo tienen un cronograma limitado, que suele ser
suficiente para que un equipo produzca un resultado deseable. Sin embargo, si se da cuenta de
que su trabajo en picos o POC está acompañado de muchos efectos secundarios, problemas
de implementación y falta de transparencia y legibilidad, esto podría indicar una deuda técnica.
Aumento de las barreras de entrada.
Si encuentra que navegar a través de su código requiere conocimiento experto, podría indicar
una deuda técnica. Si solo uno o dos compañeros de equipo pueden implementar la
funcionalidad (¡alerta de factor bus!) y la curva de aprendizaje para una nueva persona es muy
alta, esté atento a la deuda técnica.
Indicadores de arquitectura
Si es un desarrollador de software o un arquitecto responsable del diseño del sistema, es
posible que note una deuda técnica a través de sus efectos adversos en la facilidad de
integración, reutilización, escalado del sistema, mantenibilidad o calidad de la documentación.
INDICADORES DE EQUIPO
Varios problemas del equipo también pueden indicar la necesidad de gestionar la deuda
técnica. Cualquier miembro de su equipo puede ver este tipo de indicadores,
independientemente de su función.
Retrasos: Los retrasos causados por las complejidades del proyecto son un indicador común
de la deuda técnica.
Bajo Nivel de confianza en la estimación del alcance: Si ve que su equipo subestima o
sobreestima el alcance del proyecto, eso podría indicar una deuda técnica.
Desmotivación: Los impactos de la deuda técnica pueden llevar a la desmotivación del
equipo.
Seguimiento de la deuda técnica
Evite los olores de código. Como desarrollador, la contribución más importante que puede
hacer a la gestión de la deuda técnica es evitar los olores de código siguiendo los principios
de código limpio, como Responsabilidad única, Abierto/Cerrado, Sustitución de Liskov,
Segregación de interfaz e Inversión de dependencia (SOLID) y Don' t Repítase (SECO).
Realizar revisiones del código. La revisión del código puede ayudar a su equipo a identificar
discrepancias en el código y señalar si su equipo sigue los mismos estándares y pautas.
Cuanto antes pueda identificar un problema, más rápido podrá asegurarse de que no
genere ningún problema con su solución.
Compartir conocimientos. El intercambio efectivo de conocimientos garantiza que todos en
su equipo estén en la misma página. Cuantos más guardianes del conocimiento tenga en
su proyecto, más estable será.
Utilice herramientas de análisis de código. Varias herramientas de análisis de código
pueden ayudar a su equipo a verificar la confiabilidad, la capacidad de mantenimiento y
otras características del código. Verificar el código manualmente en lugar de usar las
herramientas apropiadas no es un uso eficiente del tiempo y no garantiza que identificará
todas las fallas.
Utilice pruebas automatizadas. Las pruebas automatizadas pueden ayudar a su equipo a
identificar los problemas que surgen al descuidar los principios de diseño de software. La
unidad de automatización, la interfaz de programación de aplicaciones (API) y las pruebas
de extremo a extremo (E2E) le brindarán a su equipo una retroalimentación rápida que le
permitirá introducir cambios seguros en su solución.