Il problema aziendale del debito tecnico
Il problema che vedo qui è più un problema di business con il debito tecnico piuttosto che un problema tecnico. Risponderò alla tua domanda con un'altra pertinente.
- Perché un cliente dovrebbe pagarti per riscrivere il codice che farà lo stesso lavoro di prima, mentre non ottiene alcun vantaggio diretto o vantaggio finanziario?
Difficoltà nel riconoscere il debito tecnico verso i clienti
Cercare di convincere un cliente a riconoscere il debito tecnico è difficile nella migliore delle ipotesi e il più delle volte finisce per diventare un caso di "perché l'hai scritto in quel modo per cominciare se mi costerà più ora?".
Essere consapevoli del debito tecnico e fissare il debito tecnico man mano che si toccano parti del sistema in modo incrementale, come si è fatto, è più o meno il modo in cui consiglierei di fare una riduzione del debito su larga scala.
Per ogni nuovo lavoro, ti consiglio anche di prendere in considerazione le stime di riempimento tenendo in considerazione la correzione incrementale della build. È naturale presumere che quanto più complesso il software diventa il costo più elevato della manutenzione è coinvolto. Il refactoring e la riduzione del debito tecnico sono parte attiva della manutenzione che dovrebbe essere pagata al più presto possibile, tuttavia suddividere i costi di manutenzione in pezzi più piccoli e più appetibili per il cliente.
Che cosa dice Robert "Uncle Bob" Martin riguardo l'etica e l'artigianato del software
Penso che Robert C Martin dia questa stessa raccomandazione sull'affrontare questo argomento nel suo discorso nella Parte IV. Scusa è un orologio lungo ma ne vale la pena.
Modifica
Le metriche per il calcolo del debito tecnico sono pressoché le stesse che per la stima del tempo di esecuzione del lavoro retribuito. Il trucco sta nell'individuare i pezzi che danno più dolore, e a colpirli gradualmente. Refactoring sempre in modo che funzionino sempre, anche se il rallentamento diventa più piacevole con cui lavorare e più facile da mantenere.
Un esempio del mondo reale
Ho un arretrato di debito tecnico presso l'ufficio di un software che ha un DAL che è circa l'80% di NHibernate2 ma le parti legacy utilizzano stored procedure e proxy manuali con logica di dominio scritta nell'SP ... (incubo ).
Tuttavia, per ogni progetto di manutenzione potremmo dire 10 biglietti di manutenzione per uno sprint di 2 settimane, 1 o 2 di questi biglietti saranno un articolo di debito tecnico. E il cliente è contento di questo dato che si tratta di articoli di manutenzione e gli facciamo firmare come parte degli sprint di manutenzione.
Rompere così efficacemente ciascun elemento del debito tecnico in un ticket che potrebbe essere lavorato da uno sviluppatore per uno sprint di 2 settimane. Questo ti darà una metrica su quanto costerà al cliente, e ti darà anche un'indicazione di velocità mentre passi attraverso un paio di sprint che vedrai avanzare.