Definición - ¿Qué significa deuda técnica?
La deuda técnica es un concepto en programación que refleja el trabajo de desarrollo adicional que surge cuando se usa un código que es fácil de implementar a corto plazo en lugar de aplicar la mejor solución general.
La deuda técnica se asocia comúnmente con la programación extrema, especialmente en el contexto de la refactorización. Es decir, implica que se requiere reestructurar el código existente (refactorización) como parte del proceso de desarrollo. Bajo esta línea de pensamiento, la refactorización no es solo el resultado de un código mal escrito, sino que también se realiza en base a una comprensión evolutiva de un problema y la mejor manera de resolver ese problema.
La deuda técnica también se conoce como deuda de diseño.
Techinfo explica la deuda técnica
El término fue acuñado por Ward Cunningham, un programador que también es conocido por desarrollar el primer wiki. La deuda técnica es una metáfora que equipara el desarrollo de software con la deuda financiera. Imagina que tienes un proyecto que tiene dos opciones potenciales. Uno es rápido y fácil, pero requerirá modificaciones en el futuro. El otro tiene un mejor diseño, pero llevará más tiempo implementarlo. En desarrollo, la publicación de código como un enfoque rápido y fácil es como incurrir en una deuda: viene con la obligación de intereses, que, para la deuda técnica, se presenta en forma de trabajo adicional en el futuro. Tomarse el tiempo para refactorizar es equivalente a pagar el capital. Si bien esto lleva tiempo a corto plazo, también disminuye los pagos de intereses futuros.
Ward Cunningham describe este concepto en 1992 de la siguiente manera:
"Enviar el código por primera vez es como endeudarse. Un poco de deuda acelera el desarrollo siempre que se pague rápidamente con una reescritura. Los objetos hacen que el costo de esta transacción sea tolerable. El peligro ocurre cuando la deuda no se paga. Cada minuto gastado en un código incorrecto cuenta como interés en esa deuda. Organizaciones de ingeniería enteras pueden quedar paralizadas bajo la carga de la deuda de una implementación no consolidada, orientada a objetos o de otro tipo ".
El concepto no significa que nunca se deba incurrir en deudas. Así como el apalancamiento puede ayudar a una empresa cuando se usa correctamente, una solución rápida puede significar un tiempo de comercialización más rápido en el desarrollo de software. Además, la deuda técnica no es solo un código deficiente. Un código incorrecto es un código incorrecto, y la deuda técnica puede resultar del trabajo de buenos programadores bajo restricciones de proyecto poco realistas.