La temida deuda técnica
En el desarrollo de software, la deuda técnica es una metáfora que equipara el enfoque incremental y de puesta en marcha de Extreme Programming con la adquisición de dinero a través de un préstamo. Un préstamo monetario, por supuesto, debe reembolsarse con intereses.
¿Qué requiere la deuda técnica dentro de desarrollo de software?
En términos de desarrollo de software, la recuperación requiere que los desarrolladores refactoricen el programa a medida que aprenden más sobre cómo interactúa con otras aplicaciones y qué funciones están usando, o no usan, o desearían tener los usuarios finales. Así como la deuda monetaria puede salirse de control fácilmente si no se gestiona adecuadamente, también puede hacerlo la deuda técnica.
En los negocios, la metáfora se usa a menudo para ilustrar el concepto de que una organización terminará gastando más en el futuro al no abordar un problema técnico cuando se presenta por primera vez. El supuesto es que si una organización opta por ignorar un curso de acción que sabe que debe tomarse, la organización correrá el riesgo de pagarlo en términos de tiempo, dinero o daños a la reputación de la organización en el futuro.
A medida que pasa el tiempo, los esfuerzos por volver atrás y abordar el problema original pueden complicarse debido a nuevos desarrollos. Eventualmente, el problema puede llegar a un punto de inflexión y la organización debe decidir si honra o no su deuda original y continúa invirtiendo tiempo y esfuerzo para solucionar el problema. Esta decisión puede ser más difícil por algo llamado efecto de costo hundido, que es la tendencia emocional de los humanos a querer seguir invirtiendo en algo que claramente no está funcionando.
¿La deuda tecnológica es un término negativo?
La deuda técnica no es ni buena ni mala, es deuda. Y al igual que la deuda financiera, existen varias escuelas de pensamiento sobre si la deuda técnica es algo bueno o malo. Entonces, en lugar de buscar una respuesta objetiva, abordaremos algunas de las diferentes perspectivas aquí.
La mayoría de las empresas de software de hoy están bajo la presión del mercado y las fuerzas competitivas para desarrollar y distribuir rápidamente. Las empresas emergentes sienten especialmente esta presión de “barco o hundimiento”. Esta necesidad de velocidad lleva a muchos equipos de desarrollo de productos y software a hacer el equilibrio entre asumir una deuda técnica o lanzarlo más tarde.
Esta es la razón por la cual el consenso general de la mayoría de los equipos ágiles es que la deuda técnica no es inherentemente mala. De hecho, la mayoría, si no todos, los productos de software tienen algún grado de deuda técnica. Cuando se considera la cantidad de código que envían los equipos todos los días (especialmente en entornos ágiles donde el software en funcionamiento es la principal medida de progreso), esta no es una afirmación sorprendente.
La deuda técnica solo se convierte en una preocupación cuando usted:
- No sé acerca de la deuda.
- Ignorar la deuda acusada.
Al igual que una deuda financiera sólida, una deuda técnica inteligente puede tener enormes beneficios en determinadas situaciones. La adquisición estratégica de deuda puede ayudar a:
- Entregue soluciones MVP temprano.
- Confirmar prueba de concepto.
- Determinar el ajuste del producto/mercado.
- Obtenga comentarios rápidos.
- Satisfacer las necesidades de los clientes rápidamente.
El impacto que tiene la deuda técnica en un proyecto depende de cómo el equipo maneja lo que debe. La deuda técnica puede ser una herramienta valiosa si una empresa:
- Toma una decisión consciente de endeudarse.
- Tiene los recursos y el conocimiento para pagar la deuda más adelante.
La deuda tecnológica también es inevitable. La naturaleza en constante evolución del desarrollo de software significa que cada producto requerirá mantenimiento y reconstrucción con el tiempo.
Ejemplos de deuda técnica
Estos ejemplos de la vida real de deuda técnica tanto deliberada como accidental.
Ejemplo 1: Deuda técnica prudente y deliberada
- Deuda técnica: Marco rígido.
- Motivo de la deuda: la gerencia establece un plazo corto para llegar al mercado rápidamente y obtener la ventaja de ser los “primeros en moverse”.
- Descripción de la deuda: los desarrolladores eligen un marco que es rápido de construir pero que tiene problemas de flexibilidad conocidos.
- Pago de la deuda: refactorización de la aplicación a un marco más flexible.
En este ejemplo, el equipo usa un marco con problemas conocidos para lograr un lanzamiento anticipado. Una vez que la empresa alcanza el objetivo, los desarrolladores vuelven a refactorizar los componentes y eliminan los problemas de código.
Ejemplo 2: Deuda técnica imprudente e inadvertida
- Deuda técnica: Código de baja calidad.
- Motivo de la deuda: falta de experiencia en codificación.
- Descripción de la deuda: los desarrolladores tienen pocas habilidades de codificación, por lo que el equipo escribe código de baja calidad mientras intentan cumplir con un plazo ajustado.
- Pago de la deuda: limpieza y reescritura de código problemático.
En este escenario, endeudarse técnicamente no es una decisión planificada sino una consecuencia de una mala habilidad. El equipo envía un producto con errores que elevan los costos de la nube y aumentan la rotación. La única forma de pagar la deuda es contratar a un desarrollador con más experiencia para volver a trabajar en el código.
Ejemplo 3: Deuda técnica imprudente y deliberada
- Deuda técnica: plataforma web incorrecta.
- Motivo de la deuda: Los desarrolladores prefieren trabajar con WordPress.
- Descripción de la deuda: los desarrolladores eligen configurar un sitio web de comercio electrónico de alto tráfico en WordPress porque prefieren trabajar con ese CMS.
- Pago de la deuda: Migración del sitio web a una nueva plataforma.
En este ejemplo, el equipo utiliza WordPress para crear un sitio web de comercio electrónico . El CMS no puede manejar un alto tráfico, lo que hace que los clientes abandonen los carritos y se vuelvan hacia la competencia. La única solución es migrar el sitio web a una plataforma más adecuada.
Artículos relacionados
En SOAINT, comprendemos tus contextos organizacionales, con el fin de construir realidades tecnológicas encaminadas a tu desarrollo y crecimiento.
¡Confía en nosotros para desarrollar todo el potencial de tu empresa!