Supponiamo che tu sia un meccanico specializzato nella personalizzazione di automobili, anche costruendole da zero se il cliente lo richiede. C'è questo cliente che torna di tanto in tanto nel tuo negozio per mettere sempre qualcosa di nuovo lucido nella sua limousine di grandi dimensioni.
Una volta arrivato, ha installato un bel sistema audio. Si esegue diligentemente l'attività passando i fili e collegando tutto correttamente. Esce il giorno dopo, è felice e paga profumatamente, come al solito.
Il mese successivo ritorna, ma questa volta vuole installare un home theater in piena regola. Ancora una volta, prendi la limousine. Essendo un professionista rivisiti il sistema audio e ne semplifichi la manutenzione installando un sistema di tubi per far passare i cavi intorno all'auto. In questo modo i fili sono protetti e più facili da estrarre e, se è necessario aggiungerne altri, sarà anche facile da eseguire. Quindi strappate i vecchi fili, installate i tubi e passate il sistema audio e i fili extra per il cinema, chiudete tutto e il gioco è fatto.
Rendendoti conto che il cliente non ti ha chiesto di sostituire il vecchio sistema audio, gratta via un po 'del costo delle sostituzioni e dei tubi. Comunque guadagni ancora dall'affare, non tanto quanto avresti avuto se avessi appena lanciato il sistema come hai fatto la prima volta.
Un mese dopo torna, questa volta vuole un sistema di illuminazione e vuole che i nuovi altoparlanti abbiano danneggiato quelli vecchi all'inizio della settimana.
Poiché hai mantenuto tutto in ordine e pulito, puoi far passare rapidamente i nuovi cavi di illuminazione attraverso il tubo, installare il sistema e sostituire l'altoparlante. Questa volta, tuttavia, hai terminato molto più velocemente, il re-factoring ti ha ripagato mantenendoti in cima al tuo gioco.
Il tuo concorrente che stava ridendo di te per aver strappato cavi perfettamente buoni e installato tutti questi tubi extra sta ancora lottando per soddisfare i suoi clienti. Certo, è stato fatto più velocemente di te la maggior parte delle volte, ma col passare del tempo i suoi clienti si lamentano del fatto che ci sono sempre più ritardi e la qualità generale del lavoro è degradante.
Guardando questo, ti rendi conto che il tuo obiettivo non solo di rimanere nel business, ma di essere il migliore è bilanciare ciò che fai per soddisfare le esigenze del cliente e ciò che fai per semplificarti la vita lungo la strada. Molto raramente un cliente paga per entrambi, quindi devi gestirlo da vicino. Scommetti che facendo le cose proattivamente nel modo giusto anche a costo di fare le cose due volte manterrai i costi di manutenzione ad una percentuale controllata e stabile della tua produttività.
Il software è lo stesso, tranne per il fatto che i programmatori possono giocare con il nastro isolante digitale per MOLTO tempo prima che gli effetti e le sensazioni di clienti e manager siano realmente percepiti. Sfortunatamente a quel punto il costo di rifare le cose giuste cresce esponenzialmente rispetto alla quantità di nastro isolante presente e all'età media di detto nastro isolante.
Questo è il motivo per cui è importante continuare a ricodificare il sistema. Molto spesso l'esperienza ci mostrerà un nuovo modo più efficiente di fare la stessa cosa o potremo combinare funzionalità simili e sfruttare ridondanze invece di copiarle. Questo è il modo in cui manteniamo il sistema snello e cattivo. Il tempo mostrerà che il costante re-factoring del sistema per soddisfare le richieste manterrà costante la produttività controllando la quantità messa in manutenzione.
Il posizionamento del nastro adesivo aumenterà momentaneamente la produttività a costo di trasportare un sistema non ottimale. Il debito tecnico si manifesta ogni volta che viene favorita la produttività immediata a scapito degli altri aspetti di un sistema. L'analogia del debito è buona perché proprio come gli interessi sul capitale preso in prestito mangiano via i profitti il tempo preso in prestito rendendo le cose rapidamente comporta una maggiore manutenzione e aumenta la fragilità del sistema costringendo una squadra a spendere risorse aggiuntive per mantenere piuttosto che creare. Proprio come il suo parente finanziario, se l'indebitamento continua senza sosta, la maggior parte delle risorse viene impiegata per il rimborso degli interessi lasciando pochissimi miglioramenti. Il debito tecnico divorerà le risorse tecniche fino al punto in cui la maggior parte delle risorse viene spesa semplicemente mantenendo il sistema in esecuzione per fermare tutti gli altri possibili miglioramenti.
Quindi alla fine la domanda non è che dovremmo o non dovremmo farlo, ma è etico lasciare che manager e clienti credano di poter fare affidamento su cifre di produttività artificialmente gonfiate con l'uso del nastro adesivo digitale. Alcuni penserebbero che sia una decisione commerciale, ma francamente questo è così solo perché i manager non lo capiscono. Alla fine, qualcuno dovrà pagare il debito attraverso un pesante factoring o migrando verso un nuovo sistema. In definitiva, per noi programmatori, mantenere i sistemi mantenibili, non dovresti chiedere di ricodificare in quanto parte integrante del lavoro, non riuscire a capire questo non riesce a capire in cosa consiste l'ingegneria del software. Detto questo, mi rendo conto che ci sono sistemi là fuori che hanno già contratto un debito importante e il pagamento di questo debito richiederà decisioni da parte dei pagatori. Il tuo lavoro è tale situazione è almeno fare la tua parte per smettere di prendere in prestito. Questo debito è stato sostenutoDAGLI STATI UNITI forse perché non lo sapevamo meglio, perché eravamo spinti a farlo, tuttavia, abbiamo assunto questo debito e molto spesso le persone a cui abbiamo ceduto il debito non lo capiscono, quindi non possono gestirlo correttamente.
Ecco il tuo software, tutto fatto, spero che ti piaccia .... A proposito, ho raggiunto il limite della tua carta di credito facendolo, spero non ti dispiaccia ... cya