¿Qué es la Deuda Técnica?

Se trata de un conjunto de efectos negativos que se producen durante la generación de software, efectos a los que tenemos que prestar especial atención cuando utilizamos metodologías ágiles. Por ejemplo, cuando por atender una petición urgente estamos dejando de lado la calidad o la documentación, en ese preciso momento estamos incurriendo en Deuda Técnica.

Deuda Técnica. Un problema del desarrollo de Software

A los compiladores o a los servidores de aplicaciones no les preocupa lo más mínimo que nuestro código sea poco eficiente, que este mal estructurado, que sea sucio o poco limpio. Pero cuando intervienen las personas en su evolución o en su mantenimiento, ahí sí que tiene una importancia crítica.

¿Quién tiene la responsabilidad?

Somos las personas los responsables de la duda técnica ya que no hay nadie más entre nosotros y el código que generamos. Al final, los sistemas o las aplicaciones mal diseñadas o deficientemente documentadas son complicadas de mantener y modificar incluso por quien los creo inicialmente.

¿Tiene Coste?

Llegará el momento en el que tendremos que asumir la existencia de un coste nada despreciable. Pagar o Asumir para pagar finalmente.
  • Pagar: Mejorando el código, revisando su calidad, mejorando la documentación
  • Asumir: Tiempos de mantenimiento y gestión muy superiores a los deseados
En definitiva, la deuda técnica tendrá un coste que finalmente tendremos que pagar. Además, esta deuda funciona de forma similar a una deuda financiera, la pagamos o seguirá creciendo hasta llevarnos a la ruina. En nuestro caso la ruina significa el caos en nuestros sistemas.

¿Es la deuda técnica sinónimo de incompetencia?

Las organizaciones pueden forzarnos a inflarla involuntariamente.
Generalmente esta deuda es consecuencia de nuestro compromiso para satisfacer a nuestros clientes y las fechas que nos imponen. Así pues, en muchos casos se trata de una deuda técnica intencionada o forzada por las circunstancias.

¿Cuáles son los factores principales?

Los tres factores que más incrementan la deuda técnica de un proyecto son los siguientes:
  1. Deuda de Testing. Realización deficiente de pruebas o incluso no realización de las mismas. Factor que incrementa el número de errores que pueden aparecer en el código o el incumplimiento de requerimientos deficientemente especificados.
  2. Calidad. Código deficiente, mala estructuración. Cuanta más velocidad en la generación del código menor será la estructuración del mismo y peor la calidad.
  3. Documentación Obsoleta o Inexistente. La no generación de documentación de valor y la no actualización de la misma puede generar futuros problemas de mantenimiento.

¿Cómo luchamos contra la Deuda Técnica?

Documentar

Curiosamente si uno de los factores principales de esta deuda es la falta de documentación, una forma de luchar contra ella es documentarla para posteriormente poder gestionarla. Por ejemplo, cuando en un desarrollo sabemos que existe algún punto que tenemos que mejorar o revisar tendremos que documentarlo para poder realizar futuras actuaciones. Es lo que se denomina el diario de deuda técnica.

Reflexionar

Reuniones retrospectivas. Estas reuniones que se repiten al final de cada uno de los sprints deben usarse para mejorar continuamente el proceso de desarrollo. Es en estas reuniones donde tenemos que ser conscientes de nuestra Deuda Técnica y tomar medidas tanto para prevenirla como para reducir su existencia.

Refactorizar

Necesitamos eliminar los típicos tópicos :

Si funciona no lo toques
¿Código heredado? ¡Yo no lo toco!
Es responsabilidad del equipo mejorar en la medida de lo posible la calidad del código existente. La única forma de mejorar la calidad del código es la refactorización.

Pasos a seguir

En conclusión, uno de nuestros objetivos tiene que ser minimizar la deuda técnica.  Para alcanzar este objetivo tenemos que seguir los siguientes pasos:
  • Ser conscientes: La Deuda Técnica existe en mayor o menor medida en la mayor parte de los proyectos.
  • Estar comprometidos: Detectarla y mantenerla bajo control. Buscar siempre la mejora.
  • Actuar con firmeza: Aplicar constantemente las mejoras acordadas en nuestros procesos.

Resumen

Categoría:
Agile, Organización, Reflexiones
Etiquetas:
, , , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: