Artículos

¿Qué es la deuda técnica y por qué debería importarte?

La deuda técnica es un término acuñado por Ward Cunningham, pionero de Agile, para describir lo que sucede cuando un equipo de ingeniería debe priorizar la velocidad de entrega del software sobre la calidad de una solución. Significa implementar por ahora una solución funcional pero imperfecta, con la intención de volver y refactorizar el código más adelante (es decir, devolver el capital del préstamo). Si el equipo posterga la refactorización, pueden surgir problemas que hagan más difícil y lento introducir cambios o agregar nuevas funciones en el futuro (es decir, el préstamo acumulará intereses).

¿Qué causa la deuda técnica?

Hay muchos motivos por los que un equipo puede necesitar asumir cierta deuda técnica. Como explica Ward Cunningham en un video explicativo, a veces el equipo debe implementar una solución que refleje su comprensión actual de un problema y modificarla después, cuando los datos de los usuarios mejoren esa comprensión. En otras circunstancias, por ejemplo, al desarrollar un producto nuevo en un mercado competitivo, el equipo podría optar por una solución «lo suficientemente buena» para lanzar el producto más rápido.

Otras causas de la deuda técnica pueden indicar problemas más profundos en un equipo. Por ejemplo, el equipo podría estar sobrecargado o no tener pautas claras sobre las prioridades del producto. En otras situaciones, podría tener un enfoque demasiado amplio y trabajar en demasiadas cosas al mismo tiempo. Martin Fowler desarrolló el cuadrante de la deuda técnica para mostrar cómo puede asumirse deuda de manera deliberada o inadvertida, prudente o imprudente, según la situación y las decisiones del equipo.

Las causas más comunes de la deuda técnica son los plazos comerciales estrictos que no están respaldados por datos empíricos ni evidencia sobre por qué deben cumplirse. Si un cliente impone un plan de lanzamiento estricto e intenta abarcar demasiadas funciones, los equipos de ingeniería tratarán de hacer todo lo que puedan lo más rápido posible, lo que suele tener un impacto negativo en la calidad del código.

¿Por qué debería importarte la deuda técnica?

La deuda técnica, cuando no se aborda y se deja acumular, resulta costosa a largo plazo porque dificulta los cambios en el software y aumenta el tiempo necesario para hacerlos. La deuda técnica afecta primero a la calidad, lo que con el tiempo repercute en todas las demás métricas. Por ejemplo, la deuda técnica sin resolver puede terminar afectando la experiencia del usuario en la aplicación, a veces hasta el punto de que no pueda obtener lo que necesita del producto y busque otra opción.

¿Cómo deberíamos abordar la deuda técnica?

Las prácticas ágiles ponen mucho énfasis en gestionar la deuda técnica, por lo que un buen equipo ágil se mantiene al día con la devolución del «capital» de la deuda y se asegura de que se acumulen los mínimos «intereses». Para garantizar la transparencia, los equipos ágiles deben agregar los elementos de deuda técnica al backlog del producto y no registrarlos en un documento separado que no sea visible para todos. Sobre todo, deben dedicar capacidad a reducir la deuda técnica en cada sprint e incluir algunas tareas de refactorización en su planificación habitual del sprint. Si la deuda técnica se reduce de forma constante con el tiempo, es mucho menos probable que afecte al producto de una manera que perjudique su funcionalidad principal o la experiencia del usuario. Los clientes pueden apoyar a los equipos de ingeniería permitiéndoles el tiempo necesario para encontrar la solución adecuada a un problema, asegurando la calidad y ayudando a evitar, o al menos minimizar, la necesidad de rehacer la solución más adelante.

La deuda técnica en sí misma, si se asume de forma deliberada y prudente, no es necesariamente algo malo a corto plazo si proporciona una solución funcional. Sin embargo, debe gestionarse con responsabilidad y los equipos deben tener un plan concreto para saldarla. Esperamos que esta publicación te haya ayudado a entender el concepto de deuda técnica y las consecuencias de dejarla acumular. Si quieres conocer más sobre cómo trabajan nuestros equipos ágiles, puedes consultar nuestro proceso de desarrollo.

“¿Qué es la deuda técnica y por qué debería importarte?” de Adriana Campoy y Rafael Morante está bajo la licencia CC BY SA. Los ejemplos de código fuente están bajo la licencia MIT.

Foto de Kaitlyn Baker.

Clasificado en Ágil.

Lecturas relacionadas