Tabla de contenido:
Definición - ¿Qué significa deuda técnica?
La deuda técnica es un concepto en la 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 solo es 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 resolverlo.
La deuda técnica también puede conocerse como deuda de diseño.
Techopedia 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 a la deuda financiera. Imagine que tiene 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, liberar código como un enfoque rápido y fácil es como incurrir en deuda: viene con la obligación de interés, que, para la deuda técnica, viene en forma de trabajo adicional en el futuro. Tomarse el tiempo para refactorizar es equivalente a pagar el principal. 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:
"El envío del código por primera vez es como endeudarse. Una pequeña deuda acelera el desarrollo siempre que se pague puntualmente 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 que no es del todo correcto cuenta como interés en esa deuda. Organizaciones de ingeniería enteras pueden ser detenidas bajo la carga de la deuda de una implementación no consolidada, orientada a objetos o de otra manera ".
El concepto no significa que nunca se deba incurrir en deuda. 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 pobre. El 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.