Educativo

Tipi di Debito Tecnico: Intenzionale, Non Intenzionale e il Modello dei Quadranti

I principali tipi di debito tecnico: intenzionale, non intenzionale e il modello dei quadranti di Fowler con implicazioni pratiche per la remediation.

I quattro quadranti del debito tecnico: avventato-prudente vs intenzionale-involontario

In questo articolo:

Perché classificare i tipi di debito tecnico è importante

Non tutto il debito tecnico è uguale. Trattare un compromesso deliberato nello stesso modo in cui si tratta l’ignoranza accumulata porta a decisioni scadenti su dove investire l’effort di remediation. Capire i tipi di debito tecnico dà ai responsabili tecnici il vocabolario per avere conversazioni precise su cosa hanno, perché esiste e cosa fare al riguardo.

La classificazione cambia anche la conversazione con gli stakeholder non tecnici. Un board o un CFO che sente “abbiamo debito tecnico” non ha informazioni utili. Un board che sente “abbiamo scorciatoie deliberate e documentate del valore stimato di otto settimane di engineering, e abbiamo problemi architetturali involontari nel modulo pagamenti che causano direttamente tre dei nostri cinque incidenti mensili” può prendere una decisione di finanziamento.

Il quadrante del debito tecnico: il framework di Fowler

Il Technical Debt Quadrant di Martin Fowler organizza il debito su due assi. Il primo asse distingue il debito deliberato da quello involontario. Il secondo distingue le decisioni prudenti da quelle avventate. L’intersezione di questi due assi produce quattro quadranti.

Avventato e Deliberato. “Non abbiamo tempo per progettare questo correttamente.” Il team sa che esiste un approccio migliore e lo ignora sotto pressione. Questo quadrante genera il debito più costoso perché è invisibile per design. Nessuno lo ha documentato, nessuno ne è proprietario e nessuno pianifica di correggerlo.

Prudente e Deliberato. “Rilasciamo ora e faremo refactoring dopo il lancio.” Il team capisce il compromesso, lo registra esplicitamente e pianifica la remediation. Questo è l’unico quadrante in cui l’analogia del debito tecnico funziona in modo pulito: è un prestito consapevole con un piano di rimborso previsto.

Avventato e Involontario. “Cos’è un livello di astrazione?” Il team non sapeva di creare un problema. Questo quadrante è comune nei codebase scritti da team senza esperienza architetturale o senza supervisione senior. Il debito è invisibile non perché qualcuno lo abbia nascosto, ma perché nessuno sapeva che veniva creato.

Prudente e Involontario. “Ora che capiamo meglio il dominio, avremmo dovuto strutturarlo diversamente.” Il team ha preso una decisione ragionevole con le informazioni disponibili. L’esperienza successiva ha rivelato un approccio migliore. Questo è il quadrante più indulgente e il riflesso più onesto di come funziona realmente lo sviluppo software.

Debito tecnico intenzionale: quando è valido

Il debito tecnico intenzionale è uno strumento di business valido quando sono soddisfatte tre condizioni. Primo, il team capisce esplicitamente cosa sta cedendo. Secondo, la scorciatoia è documentata in modo che un futuro ingegnere possa trovarla e capirla. Terzo, c’è un piano, con una data o una milestone effettiva, per affrontarla.

Quando tutte e tre le condizioni sono presenti, il debito tecnico intenzionale funziona come un prestito a breve termine. Accelera la delivery a un costo noto, con un piano di rimborso definito.

Il modo più comune in cui questo fallisce: i team soddisfano la prima condizione ma non la seconda e la terza. Capiscono il compromesso al momento della decisione ma non lo documentano né ne pianificano la risoluzione. La conoscenza vive nella testa di chi ha scritto il codice. Quando quella persona se ne va, il debito diventa invisibile.

Un test pratico: un nuovo ingegnere che si unisce al team oggi, senza parlare con nessuno, riuscirebbe a trovare e capire ogni scorciatoia deliberata nel codebase? In caso contrario, il tuo debito tecnico intenzionale è diventato non intenzionale.

Consulta la nostra tech debt solution per come affrontiamo la fase di scoperta e documentazione nei codebase dei clienti.

Debito tecnico non intenzionale: dove si nasconde la maggior parte

Il debito tecnico non intenzionale è debito che nessuno ha pianificato. Non è il risultato di un compromesso. È il risultato di conoscenza limitata, processo insufficiente o scala che ha superato le fondamenta architetturali.

Le forme più comuni: un sistema costruito come monolite perché il team non aveva ancora imparato i bounded context; un modello dati progettato per un carico di lavoro dieci volte più piccolo di quello attuale; logica di autenticazione copiata tra servizi perché non esisteva un componente di infrastruttura condiviso.

Nessuno di questi è un fallimento di intenti. Sono fallimenti di informazione o capacità. Trattarli come fallimenti morali porta i team di engineering a essere difensivi sul codebase piuttosto che onesti. Trattarli come artefatti naturali di un sistema in crescita e affrontarli sistematicamente è ciò che separa le organizzazioni che gestiscono il debito da quelle che vengono gestite da esso.

Il processo di scoperta per il debito non intenzionale richiede analisi statica, mappatura delle dipendenze e metriche di salute del codice. Non può essere fatto accuratamente chiedendo agli ingegneri di fare un self-report. Le nostre valutazioni di software due diligence usano analisi automatizzata per portarlo alla luce oggettivamente.

Applicare l’analogia del debito tecnico nella pratica

L’analogia del debito tecnico è uno strumento di comunicazione oltre che tecnico. Usata correttamente, traduce i problemi di engineering in linguaggio di business.

Il capitale (la scorciatoia originale) è la quantità di effort risparmiato quando è stata presa la decisione. Gli interessi (il costo continuativo) sono la frizione aggiunta a ogni successiva modifica che tocca quell’area del codebase. Il debito totale (capitale più interessi) è il costo della remediation. Il costo opportunità è ciò che l’organizzazione potrebbe costruire se quella capacità fosse liberata.

Se sappiamo che un problema architetturale specifico aggiunge quattro ore di frizione a ogni deploy, e facciamo deploy due volte a settimana, stiamo pagando otto ore di ingegneria alla settimana in interessi. In un anno, sono 416 ore: circa un quarto di un ingegnere a tempo pieno. La domanda diventa: la remediation di questo problema costa meno di 416 ore di engineering? Di solito sì, significativamente.

Conclusione

I tipi di debito tecnico, che siano intenzionali o non intenzionali, prudenti o avventati, richiedono risposte diverse e livelli di urgenza diversi. Il modello dei quadranti è lo strumento più pratico per organizzare quelle risposte.

Ciò che conta di più per i responsabili tecnici non sono le categorie teoriche ma la domanda operativa: quale debito, in quale parte del sistema, sta bloccando più direttamente i risultati di cui l’organizzazione ha bisogno?

Eden Technologies ha aiutato oltre 200 organizzazioni a passare da una vaga consapevolezza del debito a piani di remediation strutturati con risultati misurabili.

Hai un codebase con questi problemi? Parliamo del tuo sistema