Debito tecnico

Il debito tecnico è una metafora inventata da Ward Cunningham per descrivere le possibili complicazioni che subentrano in un progetto, tipicamente di sviluppo software, qualora non venissero adottate adeguate azioni volte a mantenerne bassa la complessità. Analogamente a quanto avviene nel mondo finanziario, in cui per sanare un debito occorre pagarne anche gli interessi, lo sforzo per recuperare un progetto sviluppato senza una corretta metodologia può aumentare anche considerevolmente nel tempo, se non si interviene tempestivamente.

1. Cause
Le cause più comuni o loro combinazione che possono portare ad un debito tecnico sono:
Introduzione di dipendenze senza criterio, quando lo sviluppatore introduce nuove tecnologie con costi impliciti di mantenimento per risolvere "facilmente" i problemi.
Mancanza di conoscenza del processo, in cui chi prende le decisioni è ignaro delle implicazioni sottostanti o decide di ignorarle.
Mancanza di conoscenza, quando il programmatore semplicemente non ha le competenze per scrivere del codice di qualità.
Esigenze di mercato, ossia lurgenza di avere un prodotto da vendere prima possibile, quindi rilasciato prima che le dovute modifiche siano complete.
Mancanza di collaborazione, causa di degrado dellefficienza del processo di sviluppo. Unaltra motivazione potrebbe ascriversi ad un affiancamento dei principianti insufficiente o assente da parte delle figure professionali con maggior esperienza.
Mancanza di disaccoppiamento, quando lo sviluppo delle componenti del programma avviene ignorando il paradigma di programmazione modulare o comunque senza lintento di mantenere basso il legame di dipendenza tra i sottosistemi.
Assenza di procedure di test, che incoraggia correzioni di bug "al volo" che non contemplano possibili effetti secondari.
Assenza di documentazione, dove il codice viene sviluppato "a braccio", senza documentazione/specificazione dei requisiti. Il lavoro per produrre la suddetta documentazione a posteriori, e la necessaria verifica di corrispondenza con quanto già codificato, rappresenta un debito che occorre prima o poi saldare.

2. Tipologie
Occorre tener conto della distinzione tra tipi di debito tecnico. In un blog di discussione sul tema dello sviluppo, l’autore individua il cosiddetto "Quadrante del debito tecnico", distinguendo tra quattro tipi di debito in base a due categorie dicotomiche. La prima categoria individua la contrapposizione tra debito Avventato e Prudente, mentre la seconda dicotomia è tra debito tecnico Volontario ed Involontario.