Il presente articolo è stato tradotto automaticamente.

Pulitura codice

Utilizzo di tecniche agili per ripagare un debito tecnico

David Laribee

In ogni elemento codebase, esistono degli angoli scuri e piste che fear. Il codice impossibly brittle; codice che bites indietro con regressione bug; che quando si tenta di seguire, verrà unità che MAD del codice.

Ward Cunningham creato una metafora bellissimi per le parti del disco rigido modifica, soggetta a errori di codice quando egli paragonato a debito finanziario. Debito tecnico impedisce lo spostamento Avanti, da profiting da rimanere “ in nero. ” Come nel mondo reale vi è debito economico, debito con un interesse inferiore è possibile apportare in uno strumento a basso rischio finanziario. Allora è qualcosa di speciale costoso, le commissioni di carta di credito d'interesse elevata pila sul debito ancora maggiore.

Debito tecnico è un trascinamento. Possibile di interruzione della produttività, rendendo manutenzione fastidioso, difficile o, in alcuni casi, impossibili. Oltre lo svantaggio economico ovvio, è un costo reale psicologico a debito tecnico. Lo sviluppatore non piace mouse è verso il basso per il suo computer a conoscere la mattina egli ha per impossibly brittle faccia complicata codice sorgente. La frustrazione e pertanto engendered helplessness è spesso una causa principale di ulteriori problemi sistemici, ad esempio turnover sviluppatore — uno solo dei costi reale impatto economici di debito tecnico.

Ogni codebase ho lavorato a o revisionato contiene alcune misure di debito tecnico. Una classe di debito è abbastanza innocua: byzantine dipendenze tra tipi denominati bizarrely in recesses stabile, raramente modificato del sistema in uso. Un altro è codice sloppy facilmente fisse sul campione, ma spesso ignorato in urgenti per risolvere problemi con priorità più alta. Esistono molti altri esempi.

In questo articolo viene illustrato un flusso di lavoro e tattiche diversi per la gestione di un debito d'interesse elevata. I processi e procedure consigliate che verrà in dettaglio non sono di nuovi. Essi derivano rette da playbook Lean/Agile.

Il caso per la correzione di debito

La domanda, “ opportuno abbiamo correggere tecnico debito ” non è un brainer nel mio libro. Ovviamente deve. Debito tecnico funziona con gli obiettivi poiché rallenta si nel tempo. Non c'è un effetto grafico conosciuto chiamato il costo di modifica curva (vedere di Figura 1), che è illustrata la differenza tra l'approccio 100-%-qualità-basato su test e l'approccio cowboy-coder-hacking-with-duct-tape.

Cost of Change Curve

Figura 1 costo della curva Cambia

Il costo della modifica curva illustra tale alta qualità, semplice e facile da seguire progettazioni potrebbe più inizialmente di costo, ma comportano debito meno tecnico, ovvero le successive le aggiunte e modifiche al codice sono meno costose nel tempo. In curva di qualità (blu) è possibile visualizzare il costo iniziale è maggiore, ma è prevedibile nel tempo. La curva hack it (rossa) Ottiene una riduzione del costo di voce, ma lo sviluppo futuro, manutenzione e il costo totale di proprietario di un prodotto e il relativo codice diventa sempre più costoso.

Primo legge di programmazione ” ( c2.com/cgi-bin/wiki?FirstLawOfProgramming ) stati di Ward Cunningham, “ abbassamento qualità Allunga tempi di sviluppo. ”

“ Qualità software richiede il minor tempo per sviluppare. Se si dispone di codice è semplice come possibili, i test sono stati completati e uno schema che si adatta al proprio diritto, aggiunte e modifiche accadere nel modo più rapido possibile perché l'impatto è minimo. Di conseguenza, se modificare qualcosa out, maggiore la più lenta modificare viene visualizzata poiché il costo dell'aggiunta o modifica aumenta con ogni riga di codice. ”

Debito semplicemente put, tecnico consentirà di ridurre la velocità effettiva del team nel tempo.

Uno dei miei joys ottimo nello sviluppo di software è relishing sensazione di produttività non elaborate. In competizione e conversare senso, per quanto mi riguarda, almeno è problematiche. È più complesso quando non si è il livello di produttività e dispone di problematiche robs mi potenziali in termini di produttività, i cosiddetti “ buona giorni in ufficio. ” Esistono numerose fonti di problematiche nello sviluppo di software, ma nessuno più evidenti rispetto a un attributo codebase caotici e rigido. Questo effetto psicologico assume un numero a pagamento morale team che a sua volta causa la produttività di ritardo.

Sistemi Thinking

Per correggere debito tecnico, è necessario acquistare aggiuntivo dai cointeressati e colleghi team uguali cultivate. A tale scopo, è necessario avviare pensando systemically. Sistemi pensando sono pensare long-range. È a pensare di investimento. È l'idea che sforzo è necessario inserire in data odierna verrà consentono di avanzamento a una velocità prevedibile e sostenuta in futuro.

Forse è più semplice illustrare i sistemi pensando con un'analogia. Live in Centro Atlanta, Georgia, in un vicinato poco quaint chiamato Park Inman. Mi prevalentemente molto felice non esiste. È possibile impegnare, tuttavia, di alcuni irritation correlati ignoranza apparentemente completa di pianificazione urbana. Strade ad Atlanta sono byzantine, simile a Labirinto, provoking madness. Quando non viene rilevata l'attivazione, è impossibile semplicemente ciclo nuovamente. In caso contrario, verrà inviato a un percorso di chi-conosce-dove spiraling. Sembra essere poco rhyme o motivo la pianificazione delle strade in questo in caso contrario è molto piacevole angolo del mondo.

Ciò si differenzia le strade ordinate e vie di Milano a New York (la maggior parte di esso, comunque). È come se un istruttore di drill verde mare Corps progettato la città. Vie di estendere la lunghezza dell'isola, rivolte rispettivamente verso nord a Sud e modulo strade organizzato, indicatori latitudinali verso il basso relativa lunghezza. Inoltre, nella sequenza numerica vengono denominate strade e vie: Prima via, via Second, 42nd Street, via 43rd e così via. È raramente necessario seguire più di un blocco nella direzione errata.

Che cosa sono le principali cause per la differenza tra Atlanta e New York City in questa dimensione di confronto?

Ad Atlanta le strade erano formate da cattle wearing percorsi verso il basso. Sentito parlare mi a destra, i percorsi di cattle . Alcuni necessità Aggiunse frequentemente spostare tra il centro urbana e suburbs, a quale punto alcuni cowboy pensato, “ golly, sarebbe più semplice trasformare questi qui cattle percorsi in strade? ”

Le finalità di legislature dello stato di New York applicato e accortezza alla progettazione della crescita mai più grandi e più città nello stato. Essi scelto il piano di gridiron con streets ordinata, prevedibile e vie. Essi sono state pensando del futuro.

Ottiene l'essenza di sistemi pensando questa storia. Mentre i processi di regolamentazioni sono lenti, investimento nel tempo e impegno a visione paga il dividendo maggiore per il ciclo di vita di un sistema di . True sarà necessario affrontare i file CAB pazzesco su strade Media di Milano, ma si sarà in grado di trovare le opzioni disponibili in pochi giorni. Ad Atlanta, è stato un anno di perso durante il recupero e ringraziare il thinkers di sistema responsabile per il sistema GPS (Global Positioning) ogni giorno.

Prodotti di progetti

L'idea di disporre di un team di sviluppo che viene completato un progetto, quindi genera rispetto al muro a un team di manutenzione fondamentalmente è difettosa. Non commettere errori, si lavora su un prodotto e se ha esito positivo, verranno live un lungo, long tempo.

Se si dispone ancora un paio di anni di esperienza come sviluppatore professionista, si è già verificato probabilmente l'effetto riguardante crescente. Si sviluppa un componente software che non è destinato a ultimo o essere complicata o modificare. E sei mesi dopo, quali sono le misure? Modificarla? Tale estensione? Correzione di bug?

Software utili presenta un talvolta pessima abitudine di rispettare per un tempo molto lungo. Spetta all'utente per il prelievo metafora che si desidera eseguire il rollback con. Una foresta di Redwoods California bellissimi, le entità di vivere tollerare i secoli e raggiungere l'altezza delle righe più alto tenderà o consentirà il vine Kudzu implacabili per l'insieme di strutture di luce di sufficienti?

Base Workflow

A questo punto, mi auguro che ho indotto che debito tecnico può richiedere un numero a pagamento terribili sulla salute mentale e riga nella parte inferiore del cliente. Mi auguro che, inoltre, accettare la necessità di richiedere una visualizzazione longer-range sui prodotti che si sta creando.

Ora let’s capire come analizzare personalmente esaurito questo foro.

Indipendentemente dall'officina di mia idea è che il flusso di lavoro di base per affrontare essere tecnico debito, ovvero in realtà qualsiasi tipo di miglioramento, ovvero è ripetibile. In sostanza, si desidera eseguire quattro operazioni:

  1. Identificare in cui si dispone di debito. Quanto ogni elemento debito interessa riga nella parte inferiore della società e la produttività del team?
  2. Creare un business case e contraffare un consenso alla priorità con quelli interessati dalla debito, team e azionisti.
  3. Correggere il debito scelti testa su con tattiche comprovate.
  4. Ripetere l'operazione. Tornare al passaggio 1 per identificare ulteriore debito e tenere la riga sui miglioramenti apportate.

Vale la pena sottolineare, per il processo di software nerds circolazione, che questo flusso di lavoro è stato adattato da un approccio alla gestione aziendale denominato la teoria dei vincoli (sommario) creato da Eliyahu Goldratt ( goldrattconsulting.com ). Sommario è un modello a pensare di sistemi che fornisce un framework per il miglioramento del throughput complessivo del sistema. Questa è una semplificazione lordo, ma il sommario viene effettuata sull'idea che un sistema (ad esempio una funzione manufacturing) è solo livello relativo più grave collo di bottiglia di produttività. Valore, ad esempio una richiesta di funzionalità o automobile o qualsiasi elemento di vendita è ideazione di, progettata, prodotta e distribuito. Una funzionalità può essere richiesta dal cliente, interno o esterno, e tale caratteristica viene trasmesso attraverso l'azienda trasformare da un'idea per un risultato tangibile (sistema). Cosa succede quando queste funzionalità pila davanti al team di garanzia di qualità? Che cosa succede se non vi è più richiesta per lo sviluppo rispetto a un team di sviluppo può svolgere? Ottenere un collo di bottiglia e rallenta l'intero sistema.

È molto probabile che si dispongano di molte aree del debito, ovvero molti dei colli di bottiglia, ovvero nell'elemento codebase. Ricerca il debito rallenta la maggior parte avrà l'effetto netto maggiore sull'aumento del throughput. La comprensione, quindi affrontare essere debito e conseguente miglioramenti come un team, ovvero come un sistema, ovvero è il modo più efficace per apportare la modifica positiva, in quanto più occhi e mani sul codice che corrisponde a rischio in misura inferiore e migliori progettazioni.

Identificare aree di debito

È importante essere in grado di scegliere in aree problematiche. Se si non sono stati di tenerne traccia in un sito wiki o un elenco condiviso o nei commenti del codice, la prima attività consiste nel trovare il debito.

Se si sta lavorando in un team, suggerisco di chiamata a una riunione per sviluppare un elenco concreto delle principali aree di debito nel codice. Un elenco esauriente non è importante. Concentrarsi sull'acquisizione elementi big-ticket. La riunione è l'opportunità prima, come leader del team per avviare la contraffazione del consenso. La maggior parte ancora più semplice dei membri dovrebbe accettare e comprendere rendere l'elenco affinché un articolo.

Dopo aver configurato l'elenco, rendere permanente. Creare un argomento di wiki, scrivere su una lavagna (con “ DO NOT ERASE ” chiaramente scritto in un angolo) o qualsiasi altro elemento funziona nella propria situazione. Un'azienda di medie dimensioni che si sceglie dovrebbe essere visibile, permanente e facile da utilizzare. Dovrebbe essere il viso a intervalli regolari. È necessario tornare all'elenco e groom di esso. Quanto potrebbe fare un utente è disponibile una quantità limitata di memoria a breve termine, in modo che suggerisco di mantenere un elenco di tra cinque e nove visualizzazione più elementi. Non preoccuparti gran parte sulle mantenendo un inventario, ovvero elementi importanti di superficie nuovamente se si tratta realmente, Beh, importante.

Utilizzo di metrica per la ricerca di aree di problemi

A volte risulta difficile trovare il debito, soprattutto se un team è stata introdotta una base di codice. Nei casi in cui è presente alcuna memoria collettiva o orale tradizione per disegnare su, è possibile utilizzare uno strumento di analisi statica come NDepend ( ndepend.com ) per sondare il codice per macchie più problematici.

Gli strumenti sono, nel migliore dei casi, per l'accesso facilitato o forse anche una seconda scelta. Gli strumenti non indicano quali operazioni eseguire. Verrà, tuttavia, offrono gli input per il processo decisionale. Non vi è Nessuna metrica singolo per codice debito, ma gli utenti per un giorno di prodotto di lavoro e il giorno out sicuramente può puntare a tali angoli scuri che causano la maggior parte delle problematiche. Gli strumenti di analisi statica comunicherà in cui si dispone di implementazione debito. Purtroppo, essi non comunicherà in cui si dispone di debito a causa di fattori quali la denominazione di scarsa, identificabilità, prestazioni e altri più progettazione qualitativo e considerazioni architetturali.

La conoscenza della copertura di test (se si dispone di test) può essere un altro utile strumento per l'individuazione di debito nascosto. Chiaramente, se è presente una grande parte del sistema che non dispone di code coverage basato su test a tinta unita, come è possibile essere certi che una modifica non disporrà di effetti di notevole impatto sulla qualità del rilascio del successivo? I bug di regressione sono probabile che vengano visualizzati, creazione di colli di bottiglia per QA e potenziali imbarazzo e perdita di ricavi a causa di difetti trovato cliente.

Utilizzare la funzionalità di log del sistema di controllo di versione per generare un rapporto delle modifiche su ultimo mese o due. Trovare le parti del sistema che ricevono la maggior parte delle attività, le modifiche o aggiunte e li analizzare per tecnico del debito. In questo modo è individuare i colli di bottiglia sono complessa è oggi possibile; non vi è molto poco valore nella correzione di debito in quelle parti del sistema che cambiano raramente.

Risorse umane dei colli di bottiglia

Se è presente solo uno sviluppatore in grado di gestione di un componente, sottosistema o intera applicazione, è possibile che sia un collo di bottiglia. Codice singoli proprietari e conoscenze contenitori (dove “ Dave funziona sul modulo account Incassi ” — ora una memoria più complesso), possono bloccare il recapito se tale utente lascia il team o ha un piles di altre operazioni da eseguire. Individuazione posizioni nel progetto in cui la proprietà singola sta accadendo consente di considerare i vantaggi e l'ambito di migliorare la progettazione in modo che altre persone possono condividere il carico. Eliminare il collo di bottiglia.

Vi sono enormi vantaggi che derivano dalla pratica di programmazione estrema di proprietà collettiva ( extremeprogramming.org/rules/collective.html ). Con la proprietà collettiva è consentito qualsiasi sviluppatore del team di modificare qualsiasi codice l'elemento codebase “ per aggiungere funzionalità, correzione dei bug, migliorare progettazioni o effettuare il refactoring. Nessun sola persona diventa un collo di bottiglia per le modifiche. ”

Ah! È presente tale parola “ bottleneck. ” Attivando la proprietà collettiva, è possibile eliminare le parti del sistema che solo un programmatore singolo scure, ovvero chi potrebbe scorrere disattivare il processo o ottenere raggiunto tramite un bus, ovvero è a conoscenza. Non vi è rischio in misura inferiore con un attributo codebase collettivamente è di proprietà.

In base alla mia esperienza, è anche molto meglio la struttura. Due, tre o quattro testine sono quasi certamente migliore rispetto a uno. In una base di codici secondari collettivamente ethos di progettazione un team multiple e sostituisce idiosincrasie singoli e non standard.

È possibile chiamare la proprietà codice collettiva una pratica, ma la proprietà collettiva è realmente una proprietà di un team corretta emergent. Interazione utente sull'oggetto stesso, ovvero Mostra quanti di voi alto e lavorare sulle “ codice ” rispetto a codice condiviso da un intero team? Quelli che vengono chiamati spesso i team nello sviluppo di software sono realmente gruppi di lavoro con un editor di assegnazione in cui le attività di programmazione sono doled out in base a che ha lavorato su una determinata funzionalità, sottosistema o 
module in passato.

Definire la priorità di un team

Prima ho ho detto è importante che l'intero team si comportano in sforzi per migliorare. Come un categoria Agile, è possibile tenere strettamente per il mantra che persone supportano un mondo che contribuiscono a creare . Se non si dispone di una massa critica di supporto, allo scopo di favorire una lingua di miglioramento continuo può essere molto difficile ottenere disattivare terreno, molto meno sustain.

Come ottenere il consenso è la chiave. Si desidera che la maggior parte dei membri del team per supportare l'iniziativa miglioramento corrente che è stata selezionata. Ho utilizzato “ Buy Feature ” approccio di alcuni Hohmann successo Luke dal suo libro Innovation giochi ( innovationgames.com ). Verrà tenta un over-simplification lordo del gioco e convincere di consultare il libro se sembra qualcosa che verranno utilizzati nell'ambiente in uso.

  1. Generare un breve elenco (9 5 elementi) di cose che si desidera migliorare. In teoria questi elementi sono nel percorso a breve termine.
  2. Qualificare gli elementi in termini di difficoltà. Preferisco utilizzare la nozione astratta di una dimensione maglietta: piccola, Media, grande o extra-large (vedere l'intestazione laterale Estimating le opportunità di miglioramento per ulteriori informazioni su questa esercitazione).
  3. Assegnare la funzionalità a un prezzo in base alle relative dimensioni. Ad esempio, elementi di piccole dimensioni possono costi € 50, elementi di supporto di € 100 e così via.
  4. Concedere a tutti una certa quantità di denaro. Essi chiave qui consiste nell'introdurre scarcity il gioco. Si desidera che gli utenti possano a loro denaro per l'acquisto di funzionalità che interessano del pool. Si desidera del prezzo, ad esempio, delle funzionalità di medie dimensioni a un costo in cui nessuno individuo acquistarli. È utile per trovare in cui più di un singolo utente vede la priorità poiché si sta tentando di ottenere il consenso.
  5. Eseguire un gioco breve, forse 20 o 30 minuti di lunghezza, in cui persone possibile discutere, collude e pitch maiuscole e minuscole. Ciò può essere piuttosto caotici e inoltre piuttosto divertente e si vedrà di cui si trovano i sedili di influenza in team.
  6. Esaminare gli elementi che sono stati acquistati e da quali i margini sono stati acquistati. È possibile scegliere di classificare l'elenco da funzionalità acquistate o, meglio ancora, utilizzare i risultati di campo acquistare un gioco Feature in combinazione con altre tecniche, ad esempio un consapevolezza del piano di rilascio successivo.

Stima le opportunità di miglioramento

Ho accennato stima debito elementi o le opportunità di miglioramento approssimativamente in termini di maglietta Ridimensiona. Si tratta di una tecnica comune utilizzata nella metodologie di sviluppo agile. L'idea è che si stanno raccogliendo le cose in termini di dimensioni relative. Il smalls passare tra loro i supporti, larges e così via.

Non è super-important portare un lotto di precisione per la tabella di seguito. Va ricordato che, si tratta di misure relative e non gli impegni. Si desidera ottenere un'idea approssimativa della difficoltà nel e la teoria è che dopo la stima del numero di elementi, le cose inizieranno a anche dall'area. Anche se un elemento di medie dimensioni effettivamente accetta una coppia di sviluppatori due settimane per completare mentre un altro accetta un mese, in Media un supporto richiederà circa tre settimane.

Nel tempo, tuttavia, si inizierà da raccogliere ottimi esempi di quali un elemento di grande o piccolo è effettivamente e questa verrà facilitare le stime in futuro poiché si avrà una base di confronto. Ho utilizzato diversi esempi di varie dimensioni in passato come supporto per la stima di un nuovo batch di lavoro all'effetto buona.

Può trattarsi di un difficile medicinali per reprimere per la gestione. Verrà inizialmente desiderano sapere esattamente quanto tempo una cosa potrebbe diventare e verità indicato, potrebbe essere necessario investire più tempo in una stima precisa, basate sul tempo.

Vendere il piano

Dopo avere un piano, è di comunicare il valore di eliminazione dei debiti a sponsor del progetto. In realtà, questo passaggio può accadere in parallelo con identificazione. Coinvolgere il cliente da sin dall'inizio. Dopo tutto, lo sviluppo del piano verrà richiede tempo, impegno e (in definitiva) denaro. Si desidera evitare a tutti i costi domande sui cui dime e ora è impiegato per lo sviluppo di un piano coerente.

Qualsiasi sforzo con esito positivo e sostenuto per rimuovere una grande quantità di debito assolutamente richiede il supporto di financiers e degli sponsor del progetto. Il personale che scrivono che le verifiche necessario comprendere l'investimento che si desidera apportare. Ciò può costituire una sfida, viene chiesto di persone pensare nell'intervallo lungo il futuro e per spostarsi di acquistare ora, pagare mentality successive. La spiegazione “ solo perché ” semplicemente non tagliarlo.

Il problema è che i dirigenti inevitabilmente chiederà, “ non professionisti si? ” Si potrebbe ritiene put contro ropes quando provata lungo queste righe. Dopo tutto, non sono stati essi prestando si pro, per recapitare un prodotto di qualità in tempo e nel budget?

Si tratta di un argomento difficile al contatore. Dico non preoccuparsi. Disporre di courage e honesty per presentare i fatti così come sono. Questo approccio apparentemente rischioso riduce i problemi molto risorse umani di responsabilità e trust.

Couch l'argomento simile al seguente: è stata fielded software esito positivo nella quantità di tempo richiesta per un importo di denaro provisioning. Per ottenere questo risultato sono state era necessario rendere compromessi lungo il percorso in risposta alla pressione di business. A questo punto, per andare avanti con una frequenza prevedibile e stabile, è necessario affrontare gli effetti di tali compromessi. Tutta l'organizzazione ha acquistato li ed è il momento di pagare nuovamente.

La sfida successivo è per dimostrare a utenti non tecnici in cui il debito causa la maggior parte dei danni. In base alla mia esperienza, dirigenti rispondono agli argomenti quantitativi, basato sui dati supportati da “ numeri ” e “ fatti. ” È possibile racchiudere i numeri e fatti tra virgolette perché sappiamo tutti realmente ci stiamo che vive in un mondo relativo e nessun numero singolo (complessità ciclomatica, accoppiamento efferent, righe di codice, test coverage, quali sono stati) vende una modifica. Questa difficoltà di capitalizzazione, sarà necessario comunicare le aree di drain maggiori in termini economici: perché è più lenta rispetto alla si sarebbe simile; perché questa funzionalità buona costo?

Prova COMPROMETTE dubbio

Durante la creazione del caso, non vi è uno strumento estremamente utile da Dale Carnegie sistema di gestione della formazione incorporato in una frase pithy, “ prove compromette dubito. ” Come è comune con tali sistemi di gestione (e i nostri disciplina in generale), la parte COMPROMETTE è un acronimo. Verrà in dettaglio alcuni dei modi in cui ciò è valido per lo sviluppo del software. Si noti che ho omesso il secondo E che sta per Mostra perché sembra per ripetere il primo E, che sta ad esempio.

D è di di dimostrazione. Non c'è niente di meglio di presentazione e indicare e questo è ciò che nella dimostrazione è tutto sulle. Se si desidera tenere traccia della velocità, dovrebbe essere facile. Mostra il dip nel tempo (vedere di Figura 2) mentre si disegna la connessione al codice sempre più flessibile e disco rigido modifica. Una volta si vendono, è necessario mantenere alla vendita.

Tracking Development Velocity

Nella figura 2 tracciabilità Development Velocity

Se si sta utilizzando un processo Agile, ad esempio Scrum o programmatori estreme, gli eventi di commenti e suggerimenti cliente sono una pratica essenziale. Alla fine di un'iterazione, illustrare le nuove funzionalità al cliente. Mentre la qualità e la quantità di funzionalità verrà sono quando si verifica il pits tar debito tecnici e durante la rampa alto gli sforzi di miglioramento, deve essere in grado di illustrare gli utili nel tempo. Meno debito significa maggiore output e output maggiore genera ulteriori stuff per dimostrare.

Come il linguaggio va prima criticare qualcuno, mostrerà un KM nella loro scarpe. Se si dispone di una gestione più tecnici, incoraggiare i suoi per collaborare con gli sviluppatori su alcune delle sezioni più difficile della base di codice per lo sviluppo di empathy per la difficoltà di modifica. Chiedere a esaminare alcune codice. Possibile Maria seguire esso? È leggibile? Non esiste un modo più rapido per vincere il campione.

E è di di esempio. Non vi è nulla come un esempio concreto. Trovare alcuni brani o requisiti sono stati entrambi regressione significativi impossibili da completa a causa del debito tecnico o creato. Selezionare una sezione di codice che è illeggibile, byzantine, pieno con effetti collaterali. Spiegare in che modo questi attributi del codice ha portato a un difetto trovato cliente o la necessità di enorme sforzo da Query Analyzer.

Un altro potente strumento che offrono i processi Agile è l'analisi retrospettiva. Scegliere un brano che ha cessato Sud in paio l'ultimo di iterazioni e formulata la domanda “ perché ”? Ottenere nella directory principale causa di uno dei motivi per cui questo particolare brano Impossibile da completare, ha due volte richiesto purché la storia Media o volumi con spanning più di un'unica iterazione. Spesso, software non flessibile sarà il colpevole o forse era necessario ripristinare modifiche poiché i bug di regressione erano insurmountable. Se si trova l'ultimo “ perché ” approssimando da un motivo tecnico correlati debito, acquisire l'analisi in un modulo breve e diretto. È un altro sfumatura nel delimitatore, un altro punto dell'argomento.

F è di di fact. Fatti sono molto facili provengono. Ha rilasciato un progetto nel tempo? Qual è il difetto successive al tasso? Che cos'è la velocità media del team nel tempo? Sono stati clienti soddisfatti con il software come recapitato? Questi sono il tipo di fact da portare alla tabella di business e credo che è questi fatti parlano più direttamente per minded aziendali.

La collaborazione è un elemento chiave qui. Come sviluppatore, è possibile fornire più facilmente i fatti tecnici. La ricerca di assistenza da persone che possiedono il budget. È probabile che verrà dispongono di un'immagine molto più chiaro e semplificare l'accesso per i fatti aziendali che illustrano il danno che causa debito tecnico.

A è di di analogia. È possibile trovare questo particolarmente importante. Gli utenti aziendali a volte trovano lo sviluppo di software confusione, persino Mistero. Se si passa ai finanziatori con parlare di accoppiamento, coesione e SRP (Single Responsibility Principle), si evidenzia molto buone possibilità di perdita di essi. Ma queste sono molto importanti concetti nello sviluppo di software professionisti e in definitiva, è modo in cui si sta creando un caso basate sui dati per affrontare essere debito. Mio suggerimento consiste nell'evitare gergo e illustrare tali elementi con un'analogia.

È possibile descrivere accoppiamento come biglietti da visita di un fornitore di servizi di accesso a terze parti, ad esempio. Comunicare i finanziatori che il motivo che è interrotta la velocità è perché che effettua modifiche al codice è come aggiungere un muro, soffitto o brano per una schede di servizi di accesso a terze parti già stabilita e molto elaborate: un'operazione chirurgico che richiedono un mano insolitamente stabile, significativa di tempo e pazienza, e in definitiva è un evento di incerto e provoking anxiety. In alcuni casi comprime le schede di servizi di accesso a terze parti.

Quando si impiegano metafora e simile, è buona norma di stato che vengono in questo modo. Consente di giustificare l'analogia con una breve descrizione del concetto più tecnici che si sta tentando di comunicare. Utilizzando l'esempio di schede di servizi di accesso a terze parti, potrebbe pronunciare, “ questo è l'effetto che disponga di accoppiamento sulla nostra capacità di risposta per modificare e aggiungere nuove funzionalità. ”

T è di di Testimonial. A volte udire lo stesso messaggio da una terza parte può avere un effetto più potente. Questa terza parte potrebbe essere un leader del settore o un consulente. Il motivo che potrebbe andare si allontana dalla propria loro parola è che sta percepiti come esperto oggettivo.

Se non si dispone di denaro per l'assunzione di un consulente esterno, è consigliabile raccogliere anecdotes e conoscenza disponibile gratuitamente da leader del settore. Mentre generici testimonianze sulle procedure consigliate cosiddette sono improbabile sigillare affare, verranno aggiunti gestalt dell'argomento complessiva.

S è di di Statistiche. Numeri rilevante. Non vi è una frase comune nella gestione, “ se non è possibile misurare, è impossibile gestirlo. ” Non si è sicuri che questo approccio convenzionale interamente valida, ma è certamente possibile presentare un caso. Accoppiamento e complessità sono due metriche che possono essere utilizzati per mostrare la relazione tra un throughput scalare (la quantità di lavoro viene distribuito) e un attributo codebase sempre più calcified con debito causa principale.

È possibile trovare le statistiche composite sono in genere qui la migliore, è molto più semplice da comprendere l'importanza del code coverage se è possibile sovrapporre una metrica di copertura codice diminuisce nel tempo con una diminuzione della velocità, implicando in tal modo, se non è visualizzata, una relazione.

Scegliere un carattere di riempimento

Gli sforzi di forniti una luce verde per la correzione di debito tecnico passerà molto più tempo con un carattere di riempimento efficace, un campione che sono in grado di comunicare in termini aziendali e chi ha influenza con i decisori dell'organizzazione. Spesso si tratta proprio manager, proprio direttore CTO, il VICEPRESIDENTE di Engineering, oppure un utente è una posizione simile di autorità percepita.

In questo modo viene visualizzata un'interessante problema chicken egg. Come si vendono questa persona? Il processo di “ gestione backup ” è responsabilità dello sviluppatore troppo. Il primo problema è quello di vendere il venditore. Esattamente come si esegue questa operazione? Prova compromette dubito!

Operazioni successive

Finora ho trattato debito identificazione come un team e la creazione di un caso per la correzione di tale debito. Verrà riepilogando: consenso tra i team e acquistare aggiuntivo con i clienti sono fattori chiave in questi passaggi.

Apportare piccoli i passaggi e non investire molto tempo. La prima volta, che si identifica il debito, necessariamente richiederà più tempo quando scorrere nuove opportunità di miglioramento, ma quando si genera il caso per la gestione, includere solo gli elementi che si prevede di lavorare su. Mantenere un occhio sulla produttività può rivelarsi uno screen saver energia enorme.

In un problema futuro prenderò in esame il resto del flusso di lavoro, tra cui tattiche per eliminando il debito e tratterò il modo in cui è possibile rendere questo processo iterativo e acquisendo le lezioni apprese precedenti sforzi di rimozione di debito.

David Laribee coaches lo sviluppo del prodotto del team in VersionOne. È spesso come relatore a eventi per sviluppatori locali e nazionali e possiede è stato conferito un'architettura Microsoft MVP per 2007 e 2008. Scrive sulla rete di blog CodeBetter in thebeelog.com .

Grazie ai seguenti esperti tecnici per la revisione di questo articolo: Donald Belcham