La Gestión de la Deuda Técnica (Technical Debt Management)

Todo proyecto de software incurre en un concepto llamado deuda técnica (Technical Debt) que es inevitable a pesar de que se pueda reducir con el uso de buenas prácticas.

La metáfora de deuda técnica, desarrollada por Ward Cunnigham, explica como el proceso de desarrollar de forma “rápida y sucia” nos hace incurrir en una deuda, que al igual que una deuda financiera, nos obliga al pago de intereses, que se traducen en un esfuerzo extra a realizar en las siguientes iteraciones de desarrollo.

El uso del concepto de deuda técnica es útil a la hora de transmitir a personas menos técnicas los conceptos, estrategias, compromisos y consecuencias de las elecciones y decisiones que se toman a lo largo de un proyecto de desarrollo para poder cumplir con los objetivos trazados.

 

The problem with quick and dirty, is that the dirty remains long after the quick has been forgottenSteve C. McConnell.

 

El cuadrante de la deuda técnica

El cuadrante de la deuda técnica, desarrollado por Martin Fowler, ayuda a establecer el tipo de deuda en la que se incurre: prudente o imprudente y a su vez deliberada o inadvertida.

dosideas.com

Una deuda prudente y deliberada es aquella en la que el equipo sabe que está endeudándose, y por lo tanto analiza si los beneficios de una entrega a tiempo son mayores al costo de pagar luego esta deuda. Por otro lado, un equipo que ignora las buenas prácticas de diseño y programación está asumiendo una deuda imprudente e inadvertida.

Las diferentes formas de deuda técnica, pueden incluir pero no están limitadas a: limpieza de código, la reestructuración o reingeniería de conceptos, cobertura de código, problemas de bases de datos, etc.

 

Gestión ágil de la deuda técnica.

Tomando en cuenta que las metodologías agiles se basan en ciclos cortos de desarrollo, entregas rápidas y correcciones continuas es necesario preguntar: como se debe gestionar la deuda técnica?

Antes de iniciar el camino de pagar o cancelar la deuda técnica, se debe establecer un mecanismo de seguimiento y gestión adecuado. Cada situación debe ser descrita en una historia de usuario y colocada en un backlog de “deuda técnica”.

La deuda debe ser gestionada por lo que es y no en base a quien o que la ha creado, razón por la cual es necesario alentar a todos los miembros del equipo a contribuir con el backlog de “deuda técnica” al igual que en el desarrollo de las historias de usuario relacionadas. Es importante resaltar que este backlog nunca está completo ya que siempre está cambiando a medida que surgen nuevos desafíos y se pagan deudas previamente adquiridas.

 

The time you take out of the schedule to make technical debt payments typically doesn’t result in anything the customers or users will see… – Jeff Atwood

Una vez creado el backlog adecuado, es el momento de convencer y comprometer al product owner. Recordemos que el concepto de deuda técnica puede ser un poco difuso por lo que una introducción podría ser necesaria. Adicionalmente siempre será útil tener a mano una representación visual del backlog (i.e. Un gráfico del total de puntos en el backlog de un sprint a otro).

En un entorno Scrum, la reunión de revisión de Sprint se ajusta como anillo al dedo para gestionar de forma continua la deuda. Otra opción podría ser colocar una versión impresa del backlog sobre un tablero Scrum o Kanban ya que es crucial mantenerlo siempre visible y vigente.

El paso final es implementar una estrategia para reducir el número de actividades presentes en el backlog y por tanto pagar la deuda que se ha adquirido. Dicha estrategia debe estar enfocada en la reducción continua de la deuda, razón por la cual, de ser posible, se debe colocar en la hoja de ruta del producto (road-map).

Obviamente surgirán inquietudes sobre los posibles impactos en la productividad o la obtención de resultados menos directos a lo largo de las distintas iteraciones, y es aquí donde la preparación adecuada y el uso de los mecanismos previamente mencionados darán sus frutos.

Cuando el product owner comprende el concepto y examina cuidadosamente las historias de usuario, este será capaz de evaluar de forma adecuada el riesgo o impacto sobre el negocio de manera que no se acumulen las historias y la deuda crezca provocando que el tiempo del proyecto se emplee más en mitigarla que en desarrollar nuevas características.

 

Más información:

Carlos-Mendible Carlos Mendible con más de 14 años de experiencia diseñando e implementado soluciones de software, comenzó su carrera en Venezuela, donde en 1999 obtuvo su primera certificación Microsoft. Actualmente está certificado como CISA, ITILF, MCSD, MCTS y MCP. Trabaja desde 2012 como Arquitecto Senior de Soluciones Microsoft en Sogeti España colaborando también como evangelista tecnológico, formador e ingeniero de pre-venta.

Para más información: carlos-fernando.mendible-porras@sogeti.com

Autor: qanewsblog

Sogeti es una compañía tecnológica perteneciente al Grupo Capgemini y especialista en: Testing y Calidad de Software; Soluciones Microsoft y High Tech Consulting. En Sogeti entendemos la importancia de obtener el máximo valor empresarial de sus sistemas de IT, por ello somos líderes mundiales en Testing & QA. Somos creadores de las metodologías estándar del mercado: TMap® (Test Management Approach) y TPI® (Test Process Improvement). ¡Nuestro compromiso es el Testing!

Deja tu comentario

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 )

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 )

Google+ photo

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

Conectando a %s