Press "Enter" to skip to content

GOTO 2016 • Embrace the Past: How SW Evolution Lets You Understand Large Codebases • Adam Tornhill


abbracciamo il passato e in questo
sessione vedrai come il nostro passato
la storia ci aiuta a misurare aspetti di
sviluppo del software che non abbiamo
stato in grado di misurare prima e lo faremo
vedi anche come queste informazioni ci aiutano
dare la priorità ai miglioramenti di cui abbiamo bisogno
Non per il nostro codice si vedrà come aiuta
noi otteniamo approfondimenti sui nostri progetti basati
sul suo modo di lavorare effettivamente con il
codice e vedrai anche che siamo
ora in grado di ragionare sugli aspetti sociali
di cose di sviluppo software come
problemi organizzativi o squadra
talento redditizio che si presenta nel nostro
codice mi è stato dato una volta il consiglio
quando fai sempre una presentazione
iniziare con un esempio motivante perché
se lo faccio saprai perché
ascolta, saprai perché dovresti preoccuparti
saprai cosa è importante così
Sono andato a casa e scopato che se a
l’esempio motivante è una buona cosa in più
gli esempi devono essere ancora meglio così oggi
non otterrai solo uno ma tre
diversi esempi e il primo esempio
è una storia personale riguarda il
fallimento personale ma interessante
cosa è che ho fallito migliorando davvero
qualcosa così che è successo qui
un certo numero di anni fa ho lavorato su a
sistema abbastanza grande e il mio compito in questo
il tempo era quello di dare la priorità ai miglioramenti
potremmo fare su questo sistema per
diventare più produttivo così come il mio
si avvicinò in quel momento era il tipo
usato un mucchio di diversi strumenti che
erano in grado di misurare un codice
complessità quindi ho preso i miei strumenti di libertà
alla mia base di codice e fuori è venuto a
elenco prioritario dei più problematici
moduli e la cosa interessante era
che quegli strumenti ne indicavano uno
componente nel nostro sistema l’accesso ai dati
strato così sono andato alle persone che ho
sapeva che aveva lavorato su quella parte e ho chiesto
loro come è quel codice in realtà e loro
praticamente confermato i risultati miei
lo strumento ha fatto così hanno detto che sì è un
pasticcio per lavorare con il suo codice abbastanza cattivo
e non è affatto divertente così grandi noi
avere il nostro candidato, quindi quello che abbiamo fatto è stato noi
preso un po ‘di
le persone migliori e hanno trascorso due mesi
Rep cavalcando quella cosa intera e dopo
due mesi abbiamo avuto un nuovo brillante dati
livello di accesso sembrava bello e tutto
i test hanno superato ora quello che pensi sia successo
alla nostra produttività cosa succede se nel capitano
alla nostra qualità misurando il numero di
insetti assolutamente nulla non c’era
differenza e questo era piuttosto deprimente
perché significa che non solo sprechiamo il
due mamme migliorano qualcosa che non ha funzionato
importa anche che abbiamo perso un
opportunità di migliorare qualcosa
avrebbe potuto fare la differenza un altro
storia correlata questa è un’altra volta
sono stati lavorati con un cliente diverso e
questo cliente avevano un codice abbastanza vecchio
base aveva una storia che è durata 15 anni
indietro nel tempo e di nuovo hanno usato il
strumento in grado di misurare il codice
complessità la cosa interessante con
questo strumento è che era anche in grado di farlo
quantificare la profondità tecnica così in realtà
ottenere un numero in modo che utilizzino lo strumento in questione
Codice base di 15 anni e lo strumento
ha riferito che su questa base di codice avete
4.000 anni di profondità tecnica Wow 4000
anni solo per metterlo in prospettiva
4000 anni fa fu quando Mosè
diviso il Mar Rosso e intendo 4.000
anni di profondità tecnica potrebbe essere
preciso ma non è così utile
perché da dove comincio la mia finale
esempio qui prima che proviamo a guardare
come possiamo risolvere questa sfida sì è
tratto dal classico libro di Fred Brooks
mese uomo mitico quindi quanti di voi
ho letto il mito del mito un mese così
un terzo dei tuoi vicini è uno di
i miei libri preferiti e la terra mitica
il mese è forse meglio conosciuto per quello che noi
Devo quello che ora chiamiamo Brooks Law e
La legge di Brooks dice che aggiungendo di più
la manodopera fino a tardi lo rende uniforme
più tardi e questo è abbastanza interessante
perché questo è qualcosa che ho
mi sono sperimentato diverse volte nel
più drammatico
ambientando ciò che è successo lì, ero io
è entrato a far parte di un progetto e di quel progetto
originariamente era programmato per prenderne uno
anno per completare avevano dati storici
questo ha mostrato loro che questo ti porterà
circa un anno ora, naturalmente
hanno deciso di farlo bene
solo tre mesi quindi la domanda è come
prendi qualcosa che sai prenderne uno
anno e comprimerlo a soli tre
mesi è abbastanza facile se sei un
manager quindi quello che hanno fatto è stato assunto
quattro volte più consulenti e gettati
loro alla nostra base di codice e sì una volta
ancora quel progetto si è rivelato un uomo mitico
mese per essere vero perché quel progetto
non ci sono voluti tre mesi per completarlo
non ci sono voluti un anno o ci sono voluti di più
di due anni e uno dei motivi
era perché lo sviluppatore ha detto quel codice
è stato davvero molto difficile da capire e
L’avevo ispezionato uccidendo me stesso e me
scopato che in realtà non è così male
il motivo per cui era difficile da capire
questo è ciò che mi ha sorpreso
era perché quello che realmente è successo è stato
anche se hai scritto il pezzo di codice
te stesso oggi tre giorni dopo
sembrava completamente diverso perché cinque
altri sviluppatori ci stavano lavorando
nel frattempo quindi non hanno avuto un
problema tecnico hanno avuto un
problema sociale organizzativo di eccesso
coordinamento delle comunicazioni generali e
quando metto insieme questi esempi io
mi sono davvero chiesto perché noi come un
l’industria continua a ripetere lo stesso
errori perché è così difficile stabilire delle priorità
i miglioramenti che vuoi fare perché
continuiamo a violare la legge di Brooks tutto il
tempo e penso uno dei motivi principali
è perché quando guardi l’ umano
il processo decisionale che tendiamo a fare
le decisioni intorno alle cose che sono
facilmente accessibile a noi le cose che
può vedere e nel caso di un codice base noi
tendono a basare le nostre decisioni su questo
sul codice ma lo reclamerò
questa è un’informazione incompleta e il
le informazioni più importanti sono
assenti e quei due pezzi di
informazioni o tempo e social
informazione
e il tempo è importante perché senza a
prospettiva del tempo non possiamo vedere nessuno
le tendenze in questo non sappiamo come
il codice si è evoluto e penso che lo sia
importante perché come fai a sapere se a
il design è buono, penso che un design sia buono
se supporta il tipo di modifiche che noi
voglio fare al codice senza un tempo
prospettiva non possiamo davvero valutare
che possiamo solo speculare e socialmente
l’informazione è importante anche perché se
non abbiamo informazioni sociali noi
non so se quel pezzo di codice è un
palla di produttività della squadra dove
più persone e gruppi diversi hanno bisogno
per coordinare i loro sforzi tutto il tempo
quindi le cose che abbiamo bisogno di risolvere questo e possiamo
risolvilo abbracciando il passato, quindi come lo fai
otteniamo informazioni su tempo e social
informazioni la buona notizia siete tutti
abbiamo già tutti i dati che ti servono
non sono abituato a pensarci in quel modo
Sto parlando del nostro controllo della versione
storia Sono venuto a vedere la nostra versione
cronologia del controllo come registro comportamentale di a
noi come sviluppatori abbiamo interagito
il nostro codice base e vedi un esempio
qui da ottenere e vedi che se noi
guarda quel registro vediamo che effettivamente siamo noi
avere una cronologia lì perché il
i commit sono ordinati nel tempo che sono
abbastanza interessante anche noi diventiamo socievoli
informazione perché sappiamo esattamente
quale sviluppatore a cui cambierà
che punto nel tempo, quindi abbracciamo il
passato e vedere come aiuta noi e il mio
prima osservazione qui oggi e questo è
qualcosa che ho appreso di molti molti
anni è che quando parliamo di codice
tutto il codice è uguale ma un po ‘di codice è più
uguale ad altri e per spiegare cosa io
significa circa che abbiamo bisogno di fare una
prospettiva diversa sul codice che dobbiamo
prendi un’evoluzione che recensisco ecco cosa
sembra che per favore dai un’occhiata
i seguenti grafici mostrano tutti il
stessa cosa sull’asse x ne hai ciascuno
file nel tuo sistema e sono ordinati
secondo le frequenze di modifica che
è il numero di commit che hai fatto
toccato quel particolare file e quello è
quello che vedi sull’asse y è questo
numero di commit
ora la cosa interessante qui è quella
vedi che i dati provengono dal libero radicalmente
diversi sistemi si sviluppano in modo diverso
organizzazioni che usano completamente diversi
tecnologie hanno diverse dimensioni
e naturalmente hanno una vita diversa
Anche il tempo si estende ma vedi ancora
tutti esibiscono esattamente lo stesso
modello mostrano una legge di potere
distribuzione e questo è qualcosa che ho
visto in ogni singolo codice base che ho
analizzato e non ho analizzato pochi
centinaia di basi di codice, ma ora così così
significa per te è quello tipico
codice base per la maggior parte del tuo sviluppo
l’attività tende ad essere abbastanza piccola
parte del codice è in gran parte del tuo codice
la lunga coda e questo significa che è raramente
se mai toccato e questo è importante
perché ci dà uno strumento per stabilire le priorità
quindi diamo un’occhiata a questo, quindi questo è
uno degli strumenti che ho usato per dare la priorità
questo è qualcosa chiamato hotspot
analisi e questa analisi fondamentalmente
prende i dati dalle tue diapositive precedenti
e mostra dove si trova nel tuo
codice in modo che identifica le aree di alta
cambia frequenza e ho intenzione di camminare
tu attraverso questa visualizzazione il primo
cosa voglio che ti concentri su di te vedi
quei grandi cerchi blu sono i
quelli che lampeggiano in questo momento ciascuno
uno di questi rappresenta una cartella nel tuo
codice base quindi questo significa che questo è un
sensazione gerarchica che segue il
è anche la struttura delle cartelle del tuo codice
interattivo in modo da poter ingrandire l’immagine
livello di dettaglio a cui sei interessato e
se si fa questo si vedrà che ogni
il file nel tuo codice base è rappresentato come
un cerchio e vedrai che hanno
diverse dimensioni è perché la dimensione
la dimensione qui rappresenta la complessità
del codice sottostante, quindi questo è
qualcosa che misuri dal codice e
puoi fondamentalmente usare qualsiasi complessità
metriche che vuoi perché loro
tutti hanno in comune è quello che sono
altrettanto male quindi tendo ad usare il
la cosa più semplice possibile, ancora una volta
tendono ad usare solo un numero di linee di
codice ma qualunque cosa tu usi, lasciami dire
tu su questo che è complesso lì
la complessità della clip compatta da solo non è mai
mai un problema, la complessità è solo un
problema quando hai bisogno di affrontarlo così
questo significa che dobbiamo scoprire se noi
devo davvero lavorare su quel codice o no
e di nuovo questo è qualcosa che possiamo estrarre
da un sistema di controllo della versione, quindi noi
calcolare la quantità di modifica per ciascuno
modulo basato su un controllo di versione
storia e la cosa interessante qui
è la sovrapposizione tra questi due
dimensioni perché ora siamo in grado di
identifica il codice complicato che anche noi
ha dovuto lavorare con spesso e questo è quello che io
chiama gli hotspot nel codice, quindi torniamo a
la visualizzazione che ti ho mostrato prima
questo è un dato aziendale da un vero
sistema questo è l’open source
applicazione tomcat scritta in java così
puoi identificare un numero diverso
hot spot qui a destra e lo sappiamo
quei punti caldi sono codice complicato
che è andato a lavorare con spesso così come si fa
usi queste informazioni in genere
i punti caldi creano grandi obiettivi per
i refactoring puoi anche scegliere solo
fare un’ulteriore ispezione del codice del caldo
spot per vedere se c’è un problema reale o
forse vuoi solo aggiungere extra
testare gli sforzi nelle aree hot spot
e stiamo andando a guardare il numero di
altri modi in cui i punti caldi ci aiutano ma
prima di andare lì voglio fare un altro
osservazione voglio affermare che il
il codice è in realtà l’ ordine di arte distruttiva
quindi quanti di voi hanno sentito parlare di
concetto di tutta l’arte distruttiva oh no
uno in realtà arriva a testimoniare che a
Tate Modern a Londra poche settimane fa
questo concetto è qualcosa di pioniere da
l’artista Gustav Metzger e quello che tu
guarda lì che dice il cristallo liquido
luce per le reazioni e sono tranquilli
affascinante perché quando guardi
loro continuano a cambiare continuamente
l’arte sembra diversa da quella di domani
ha fatto oggi e la cosa interessante in
è in che modo cambia perché cosa
succede qui è che è necessario
distruzione di una forma esistente a
creare un nuovo modulo e
Affermo che è esattamente come
il codice si evolve e penso a punti caldi uno
dei motivi per cui li amo è il
perché rendono chiaro che il codice è
il codice di successo non è mai evoluto e
questa è una buona cosa il motivo per cui sito
ordine distruttivo è il corso cambia
e le nuove funzionalità tendono a diventare
sempre più difficile da attuare
col passare del tempo ma non deve essere quello
così, diamo un’occhiata più a caldo
spot e vedere come effettivamente aiutarci così
quello che vedi qui sono esempi su caldo
analisi puntuale di tre codici diversi
basi scritte in diverse tecnologie
e di diverse dimensioni e per esempio
si può vedere il mo nuova base di codice qui a
al centro è davvero difficile vedere il
dettagli e questo non è il mio intento
voglio solo mostrarti che anche qui su
il più alto livello di visualizzazione che puoi individuare
il numero di hotspot ora ricordare che
quelli sono abbastanza grandi quelle basi di codice
giusto somo lo so è quasi sette milioni
linee di codice quindi so che vedi un dottore
sulla loro destra è anche
mezzo milione di righe di codice e vedi
un gruppo di punti caldi là giusto come
possiamo usare quegli hot spot cosa fanno i
bene ammine reale diamo un’occhiata ad alcuni
numeri e di nuovo questo è qualcosa che io
trova praticamente in ogni base di codice
analizziamo che c’è una proporzione nell’abbigliamento
i punti caldi tendono a sostenere davvero
piccola parte del codice sì la maggior parte delle tue
gli sforzi di sviluppo sono in ciò in cui a
codice e questo significa che puoi fare un
enorme impatto semplicemente migliorando un piccolo
parte del tuo codice tutto il codice non è uguale
no non è necessario considerare tutti quelli
La maggior parte di 4.000 anni di profondità tecnica
quegli anni non importa affatto lì
nella lunga coda quindi cosa facciamo con caldo
i punti sono fondamentalmente non sfidiamo al
parti del codice che devi lavorare
con la maggior parte del tempo e poi guardiamo
per una sovrapposizione con la complessità e questo
ci aiuta a prendere quei milioni di righe di
codice e restringerli alle parti
questo è davvero importante per la tua produttività
e la qualità e la ragione per cui vedo la qualità
è perché punti caldi
tendono ad avere una correlazione molto forte
ai difetti tutto bene quindi ricordati che io
ti ho detto che il codice è tutto
arte distruttiva sappiamo che il codice
cambierà e quando lo saprai
nuovi requisiti che invalideranno
le decisioni progettuali che abbiamo fatto
prima sappiamo anche che abbiamo bisogno di
reagire quando ciò accade purtroppo
questo è dove molte organizzazioni falliscono
e voglio spiegare perché e cosa noi
può fare a questo proposito, ma si parla di
qualcosa di completamente diverso
chiamato la normalizzazione della devianza così
la normalizzazione della devianza è a
teoria coniata da Diane Morgan e loro
invoca il conteggio di quella teoria quando lei
indagato su una navetta spaziale Challenger
incidente quindi credo che molti di voi ricordino
lo space shuttle Challenger era
in pratica è successo che lo spazio
navetta è stato lanciato questo era tornato
1986 e 71 secondi del lancio il
tutto dissing integrato in a
grande palla di fuoco e cosa c’è di così interessante
con l’ indagine di Diane von Gunther
ecco che lei non è un ingegnere, lei
lei non è una scienziata di missilistica
sociologo perché lei intende che il
il fallimento tecnico di Challenger era attivo
il sintomo il vero problema era
organizzativo e culturale, quindi facciamolo
guarda quello e vedi come questo si riferisce a
software prima di tutto il tecnico
la ragione per questo Challenger è esplosa
qualcosa che puoi vedere qui vedi questo
area qui di fumo grigio che non è un
buona cosa questo è il solido razzo
ripetitore della navetta spaziale e questo è
un enorme richiamo quindi è fatto da
diversi segmenti e si è trasformato
fuori quando ha iniziato a testare quella cosa
nei primi anni ’70 notano che il
giunti tra quei diversi segmenti
non si è comportato come previsto, quindi cosa loro
fatto in quel momento è stato discusso
loro problema e hanno scoperto che nessuna
questo non è desiderabile ma è un
rischio accettabile quindi sono andati avanti
alcuni anni dopo iniziano a volare il
navette spaziali e quindi notare che il
soffitto in quel comune che usavano su oring
quindi praticamente un pezzo di elastico con
in quel sigillo congiunto lo notano
l’anello è stato colpito da gas caldi e così è stato
davvero sfortunato perché era o ring
mai deciso mai progettato per essere colpito
da gas caldi quindi di nuovo che è solo il
problema e lo ha passato come un
rischio accettabile dopo i voli mostrati
che quello che ho fatto è in realtà eroso quando
è stato investito dai gas e quindi messo in atto
loro a rischio di una perdita, hanno detto
il suo desiderio non è desiderabile ma andiamo
passare come un rischio accettabile e
questa è la normalizzazione della devianza
ogni volta che accetti un rischio ottieni un
nuovo punto di riferimento la deviazione
diventa la tua nuova normalità e la ragione
Sono così affascinato da questo non ha nulla da fare
fare con spazial de la saw a tutto ciò che è
perché la normalizzazione della devianza è
di persone e abbiamo il
normalizzazione della devianza nel software
sviluppo anche così lascia che ti dia un
esempio diciamo che inizi a lavorare
sul tuo codice base e erediti un file
che ha cinquemila righe di codice
quanti di voi sarebbero contenti di ciò
non così tanti sembra che io sia l’unico
qui ancora cinquemila righe di codice
è probabile che sia un disastro ma se lavori
con quello abbastanza a lungo che diventerà
il tuo nuovo normale e oltre a cosa
differenza fa alcune linee extra di
codice lo fai dopo un po ‘che hai sei
mille righe di codice e poi hai
settemila righe di codice, quindi cosa io
suggerirebbe che abbiamo bisogno è in qualche modo
di prendere la normalizzazione di
devianza nella nostra base di codice qui così
punto di partenza questo è qualcosa che chiamo
Tendenze della complessità e tendenze della complessità
lavora in questo modo per identificare il caldo
punti nella tua base di codice quindi prendi
ognuno di quei punti caldi e tu vai per un
storia di controllo di reversione e tiri
fuori ogni versione storica di quel codice
e si misura la complessità di quel
uno e ti muovi sul controllo gratuito della libreria
storia
che ti permette di tracciare la tendenza in
tempo come questo ora sono dati reali
da un vero progetto questo è dal
progetto open source per sapere dove siamo
esaminare un singolo punto caldo qui e noi
vedi che quella linea temporale mostra il
crescita della complessità in 14 anni e il
la cosa interessante qui è finita
diversi anni che la complessità ha mantenuto
aumentando leggermente allora lo vediamo
nel 2015 qualcuno ha fatto un refactoring
così vedi questo tuffo nella complessità
curva a destra e dopo che è salito
le parole abbastanza rapidamente così quando parli
sulla normalizzazione della devianza
questo è uno dei motivi
i whistleblowers nelle organizzazioni sono così
importante e trovo questa complessità
le tendenze sono grandi whistleblowers quando lo fanno
arriva alla normalizzazione della devianza in
il nostro codice base va bene ancora una cosa
legati alla prospettiva temporale e
quelli di voi che hanno teso i nervi
colloqui di ieri riconoscerà questo il
attraversare questo è un ID che effettivamente ottengo da
signora partecipando a uno di questi
sessioni del Nord parla del
Il software Half-Life e Dance ID è quello
proprio come siamo decaduti per il fisico
quantità abbiamo la stessa cosa in
codice e solo così ho capito bene lasciami
citare quindi su questo questo è ciò che
poi in realtà ha scritto poi lo dice
ridurre questa vita autonoma significa che nessuno
è probabile che sia il codice che guardi
modo in cui rotoliamo o molto recente e lui se ne va
a dire che lo scopriamo
il ragionamento sul codice diventa più difficile quando
c’è un sacco di codice nella zona grigia
tra i due estremi così uno dei
ragioni per cui mi piace questo concetto è perché
si lega così bene con il nostro umano
la memoria lavora a memoria a lungo termine
perché il vecchio codice è stato stabile per
molto tempo ci permette di rimanere stabili
modelli mentali nella nostra testa di come quello
il codice funziona è molto più facile ragionare
su di esso possiamo ragionare su di esso come a
intero che è fondamentalmente un gambo
qualcosa che la nostra memoria di lavoro solo
ama e codice che è molto recente è
così recente che ricordiamo come funziona
quindi mi piace
e ho capito quando ho sentito parlare di questo
che sì, questo è qualcosa di nuovo
possiamo effettivamente misurare nel nostro codice
perché quando abbracciamo il nostro passato possiamo
in realtà calcolare cose come il codice H così
diamo un’occhiata ad alcuni esempi di questo
è ciò che la mappa del codice h del nostro grande codice
la base sembra quindi ciò che vedi qui è
circa 600.000 linee di scala e
il codice java ha purtroppo bisogno di mantenere il
nome del codice base anonimo ma tu
ci vediamo, signore, è piuttosto interessante
qui perché è esattamente lo stesso
visualizzazione che ti ha mostrato il caldo
spot ha scelto la cartella gerarchica
struttura del codice e si vede che
ogni file è di nuovo un cerchio ma questo
tempo indicato dal colore di quel cerchio
la sua età è tanto più blu scuro quanto più
recente il codice e lo vedi anche tu
c’è una specie di un certo genere di rompere
simmetria qui perché la mano destra
lato del codice sembra abbastanza giovane e
il lato sinistro del codice è abbastanza
vecchio quindi qual è il motivo più comune
che siamo riusciti a stabilizzare il codice
la ragione più comune è perché il codice
è morto morto come discoteca, quindi se fossi reale
a te che il lato destro qui è
chiamato codice dell’applicazione e la sinistra
il codice a mano sul lato sinistro è chiamato test
codice vedrai che quelle grandi luci
cerchi blu qui che rappresentano vecchi
codice che è in realtà dati di test obsoleti
dati di test che non sono più utilizzati
la ragione per cui non sono stato cambiato
in diversi anni ma possiamo fare ancora di più
cose interessanti con codice base con
codice età possiamo usarlo per ottenere approfondimenti
nei nostri disegni quindi lascia che ti mostri un
esempio da un altro codice di base
guarda allo sviluppo del
Chiusura linguaggio di programmazione quindi questo è
che chiusura sembra quella è la mappa H
di chiusura quindi quello che ho fatto ora era il
il diavolo era interessato a tutto il codice che è
stato stabile per più di due anni chi
non ho fatto un solo cambiamento, vediamo
come sembra qui andiamo Oh
quindi vediamo che in realtà c’è un intero
pacchetto che è stato stabile per più di
due anni in cui non abbiamo fatto un singolo
cambia ora una chiusura come forse saprai
un linguaggio dinamico sulla JVM che
significa che compila in bytecode e questo
pacchetto ASM è responsabile per l’aiuto
fuori con quello così se guardiamo a quel codice
vediamo che abbiamo una roba come si
lettore vicino uno scrittore di metodi e così via
quindi per me questo sembra modellare un diverso
dominio in realtà così per quello forse quello
il pacchetto sarebbe meglio estratto
in una biblioteca, quindi prima di fare un
raccomandazione come quella che guardo sempre
al codice quindi facciamolo insieme
questo è ciò che il titolo di ciascuno di
quei file sembrano come sono
già una libreria è appena stata copiata
incollato in chiusura fondamentalmente la ragione
è probabilmente perché non era un bene
distribuzione disponibile della biblioteca
ma penso che questo tipo di rinforzi
il mio punto che codifica i cambiamenti in
tassi diversi tendono a modellare diversi
aspetti del dominio va bene ancora uno
esempio per voi questo è dal
sviluppo del linguaggio Python e
python è interessante perché è suo
la storia va indietro di 25 anni nel tempo che
significa che all’interno troviamo molto codice vecchio
Python e quello che faccio in questi casi è
che cerco pacchetti in cui il
diversi file cambiano in modo diverso
tariffe e vedete uno di questi esempi qui
questo è un pacchetto chiamato codice cjk e
vedi che alcuni file sono molto più scuri
blu così sono stati cambiati di recente
e gli altri sono piuttosto vecchi
guarda che cosa quei file in realtà
si scopre che quelli stabili sono stati
stabile per più di 10 anni non a
singoli cambiamenti quelli sono mappature porte
sono fondamentalmente pagine di codifica per
lingue come giapponese e cinese così
questa è la ragione per cui siamo riusciti a farlo
stabilizzali se guardi di più
codice recente vediamo cose come a
codec multibyte che ha un livello molto più alto
cambia frequenza e che abbiamo
toccato nel mese scorso
ora direi che un codec multibyte
è una cosa molto più generale è molto
più generale del linguaggio specifico
codifiche quindi che altro suggerirebbe in
questo caso è che in realtà ti dividi
tale pacchetto secondo H perché un
il codec multibyte è più generale
concetto che è potenzialmente utile in
anche in altri posti, per riassumere
e ancora questa è un’area che è ancora
esplorandoci apprendono molto qui ma
la mia scoperta finora è che l’età del codice è un
autista molto sottoutilizzato del design e io ho
trovato che ce ne sono alcuni
raccomandazioni che cerco di esplorare
IAM più profondo e finora l’ho trovato
cosa succede se organizziamo il nostro codice per età cosa?
se trasformiamo pacchetti stabili in
librerie e cosa succede se noi refactoring codice
che non siamo riusciti a stabilizzare, sono carina
certo che li seguiamo
raccomandazioni si concludono con un insieme di
vantaggi in primo luogo aiuterà a
memoria a lungo termine perché saremo in grado
per costruire quei modelli mentali stabili noi
sono stati in grado di trasformare una biblioteca in un blocco
per un ricordo che si adatta davvero alla sua testa
e dal momento che finiamo con meno codice in
il codice base stesso da quando siamo in grado di farlo
stabilizzare molto anche diventa più facile
onboarding perché ne abbiamo di meno
carico cognitivo come nuovi sviluppatori e io
pensa anche che ci sia il vantaggio di Cody
qualcosa che può aiutarci a decidere
dove dobbiamo scrivere test aggiuntivi e
questo è interessante perché la maggior parte
organizzazioni in cui ho lavorato che
concentra un sacco di automazione del test cosa
tende a succedere è che dopo un po ‘
la build dura come sempre, quindi cosa
allora succede che alla fine alcuni
i test vengono chiusi e usando il codice H
anche questa non è una situazione desiderabile
ma usando l’ età del codice che puoi effettivamente usare
dati reali per decidere quali parti del
suite di test che sono sicuri da chiudere
e quali non vanno bene andiamo avanti
alla sezione finale di questo
presentazione e ora questo è qualcosa
davvero importante che voglio dirti
e questo è tutto a che fare con il
aspetto sociale dello sviluppo del software
perché l’ho scoperto
i problemi organizzativi sono spesso
scambiato come problemi tecnici e di nuovo io
pensa che la ragione principale di questo sia
perché l’informazione sociale è invisibile
nel codice non possiamo vederlo e ancora
è di vitale importanza quindi dobbiamo risolvere il problema
questo quindi prendiamo una visione sociale di a
la base di codice qui è un approccio così questo è
qualcosa che chiamo figure frattali e tu
vedere un esempio qui dalla chiusura
codice di base ora come il personaggio lavora
è che in pratica consideri ogni file
come una scatola e ogni programmatore ottiene
assegnato un colore e poi più quello
programmatore ha contribuito al codice
più grande è l’area della scatola con
le cifre dei fattori otteniamo un eccellente
strumento di comunicazione aggiungiamo un colore
leggenda e vedi come funziona , diciamo
vogliamo contribuire alla chiusura e noi
voglio dare un contributo al
modulo qui chiamato quel modulo
valutazione e vediamo che tutto ciò
il codice è scritto dalla luce blu
programmatore oh questo è dovuto alla distanza quindi se
abbiamo una domanda a cui puoi probabilmente
guidaci attraverso questo e anche tu vedi
quello che ti sembra in generale sembra essere
guidato dallo sviluppatore blu scuro e
quello è un ragazzo di nome ricco traballante quindi se noi
avere una domanda sulla chiusura in generale
la chiave well ricci probabilmente conosce una cosa o
due su di esso ma possiamo fare ancora meglio
di questo invece che concentrarsi
individui lo usiamo per
investigare il lavoro di squadra e questo è
importante ma prima lascia che ti chieda di entrare
il tuo lavoro di giorno quanti di voi si sviluppano
software in team come la maggior parte di voi
quasi tutti sono bravi anche a farlo e
è interessante perché sociale
gli psicologi hanno studiato
lavoro di squadra per molti decenni e una cosa
che hanno scoperto ed è
è ripetutamente ripetuto negli esperimenti
che i team costantemente sottoperformano
quindi dal momento che tutti noi lavoriamo in team, facciamolo
investi il ​​ragazzo per capire perché così noi
può fare qualcosa per questo
le ragioni per cui le squadre hanno prestazioni inferiori sono qualcosa
chiamata perdita di processo una perdita di processo
questo è un concetto di psicologia sociale
ed è preso in prestito dalla meccanica, quindi se
tu pensi al meccanico
costruire una macchina meccanica
come se non potesse funzionare a cento
l’efficienza percentuale sempre dovuta a
cose come l’attrito e la perdita di calore
Nemmeno le squadre possono e vedi la modella
di lotti di processi qui lo vedi
alla tua sinistra hai un numero di
gli individui e ognuno di loro ha un
potenziale produttività se si somma questo
ottieni il potenziale dell’intero team
per attività che comunque non è mai stata
quello che ne ricaverai ti farà molto meno
la vera produttività un po ‘di quel potenziale
è appena perso e questo è un tipo di perdita
dipende dai compiti che svolgi quando noi
parlare di sviluppo del software
ragioni tipiche per la perdita di processo è
spese generali di comunicazione e coordinamento
ma anche cose come le perdite motivazionali
quindi forse sei assegnato a quello che prendo
cura di che il servizio legacy scritto
in vb6 e non ne sei troppo entusiasta
hai una perdita motivazionale con
influenza tutta la squadra, quindi penso
che il trucco con la perdita di processo è quello
non puoi mai eliminarlo
inevitabile sarà sempre lì il
il trucco è di minimizzarlo e il primo
un passo avanti verso il miglioramento è quello di
misura capisco quanto sei grave
la perdita di processo è oggi così che cosa
suggerisce che lo prendiamo
mining di conoscenza che abbiamo fatto per generare
i frattali e raggruppano gli individui
in squadre quindi nel seguente
visualizzazioni vedrai che ognuna
il colore ora rappresenta una squadra e una volta noi
facciamo che possiamo iniziare a misurare molto
cose interessanti alle quali possiamo iniziare
misurare quanto ben allineato il nostro
l’organizzazione è con la legge di Conway così
La legge di Conway quanti di voi hanno sentito
a questo proposito quasi tutti hanno ragione
ricevuto così tanto
negli anni passati che sono sempre
quasi non volevo menzionarlo affatto
ma è un’osservazione importante e
è un importante principio guida e il
cosa interessante con venire con la legge
coleslaw fondamentalmente dice che il modo
siamo organizzati che saranno riflessi
in una sorta di struttura del software che noi
design e di solito è usato per vendere il
idea di micro servizi perché con
microservizi ogni squadra può possedere il proprio
proprio servizio e minimizzi il
coordinamento generale tra le squadre ora
lascia che ti dica che non è necessario
vai al microservizio completo per trarne beneficio
dalla legge di Conway ecco un esempio di
un’architettura che ha costruito su a
principio o modello chiamato pacchetto da
caratteristica in modo da vedere che ognuno di
quelle cartelle qui rappresentano il
codice per una funzionalità completa e vedi
che questa organizzazione è davvero davvero
ben allineato con la legge di Conway perché
ogni colore rappresenta una squadra proprio così
vedi che c’è una piccola sovrapposizione
tra persone di diverse squadre ora
La legge di Conway è una grande osservazione ma
è anche semplificazione eccessiva perché
è sempre un compromesso se si isola
squadre troppo corri il rischio di
incorrere in perdita di processo in termini di
aumento dei conflitti tra diversi
squadre così hai sempre bisogno di bilanciare questo
ma non importa quali siano i problemi del modello
consigliamo vivamente di misurare e
vedi che la realtà nel tuo codice
in realtà supporta il modo in cui lavori
altrimenti potresti finire qualcosa
così questo è un codice diverso
basare un vero caso studio di parole che ancora una volta
devi mantenere l’anonimato ed è
qualcosa che chiamo i pericoli della funzionalità
le squadre di squadre sono piuttosto popolari
questi giorni e ancora possono funzionare
davvero molto bene se la tua architettura
supporta quel modo di lavorare se non tu
corri il rischio di finire qui e allora
vedi qui sono fondamentalmente 12 diversi
squadre e se guardate quella mappa è
davvero molto difficile trovare modelli
certo fa uno o forse due moduli dove
sembra che una squadra abbia fatto la maggior parte di
il lavoro ma la maggior parte dei casi quello che vedi
Qui
è fondamentalmente il nostro caos collettivo è
rottura della comunicazione perché tu
costantemente bisogno di coordinare il lavoro
e azioni tra 12 squadre diverse
nelle stesse parti del codice e lasciami
ti dico che non finirà bene e
le organizzazioni realizzano questo e uno
in modo che l’indirizzo tipico sia
qualcosa che è noto come il
modello gatekeeper quindi l’ ID con il
il modello di gatekeeper è praticamente tutto
il codice che hai ragione deve essere
rivisto e approvato dal designato
persona e abbastanza spesso quella persona è
qualcuno ha chiamato un architetto e penso
che questo tipo di risolve i sintomi
ma non il vero problema in aggiunta a te
ottenere il numero di potenziali svantaggi
e prima di tutto questo schema ricorda
di qualcosa che mi ricorda
qualcosa chiamato e bambole legge così e negli Stati Uniti
la legge non ha nulla a che fare con il lavoro di squadra che è
circa la velocità teorica in
calcolo parallelo così che cosa e la legge degli Stati Uniti
dice che è la velocità di un in a
la parola di calcolo parallelo è limitata da
la parte seriale del tuo programma e io
pensa di essere un architetto custode
è esattamente come se fosse come un
blocco globale sulla tua organizzazione e
inoltre non è veramente un
squadra interfunzionale se ne hai bisogno
dipende da qualcun altro per approvare il tuo
codice in modo ho intenzione di parlare un po ‘
su questo alla fine, ma prima di tutto
guarda l’alternativa che ho visto
funziona molto meglio nel mondo reale
alternativa è usare l’intera squadra come
un guardiano e il motivo per cui mi piace
è perché prima di tutto non si basa
sull’individuo che ognuno può fare
cambia ovunque ma la squadra decide
quale codice viene approvato e non e
secondo mentre assegna un chiaro
la proprietà di una squadra aiuta anche
affrontare un altro problema con il
modello relazionale del gatekeeper e questo
è un problema sociale questo è qualcosa
la psicologia è chiamata diffusione di
responsabilità e il futuro di
la responsabilità riguarda incidenti e
emergenze in una parola reale quindi se qualcuno
ottenere i permessi ha un’emergenza che gira
fuori che il grande
o qualsiasi gruppo di spettatori o testimoni
quindi meno probabile che un individuo lo farà
offri il loro aiuto perché si sentono meno
responsabilità personale di farlo e
supponi solo che lo farà qualcun altro
probabilmente aiuto e abbiamo lo stesso in
software e ciò significa che nel software
dobbiamo sentire che il nostro individuo
i contributi fanno la differenza e io
pensa che sia necessario per un buon codice
avere un senso di responsabilità personale
da tutti gli interessati quindi c’è davvero
in nessun modo intorno a questo ora che abbiamo
guardato negli aspetti sociali, facciamo
nascondili insieme ai nostri punti caldi così
questo è un tipico che sto bene quando io
analizzare basi di codice realmente vecchie di codice base
è stato intorno per 15 20 anni che tendo
per scoprire che la maggior parte del codice è abbastanza
stabile in termini di attività di sviluppo
e poi ne hai un numero davvero
hotspot centrali forti in più
parti importanti del tuo codice quando trovo
qualcosa del genere per guardare sempre indietro
nel tempo e vedo che quei punti caldi
sono stati in giro per anni che significa
abbiamo probabilmente trascorso molto tempo e
sforzo sul codice che è inferiore a
ottimale in qualità quindi perché non ha nessuno
migliorato quel codice conosci il
il motivo per cui corrisponde al codice esistente non lo è
migliorata la ragione è perché il
le figure frattali sembrano così così
significa no, non puoi semplicemente ridisegnare il
codice, perché in un dato momento si dispone
ulteriori sviluppatori diversi da
squadre diverse che dipendono dal
codice guardandolo come fa bene
ora su diversi rami e cose e
questo è abbastanza per sfortunato
ci lascia in un contesto che chiamo
design immutabile ora sono funzionale
programmatore ma fidati di me su questo
in questo contesto non c’è nulla di buono
con l’immutabilità e la trovo
abbastanza ironico che la ragione per cui non possiamo
migliorare il codice è perché siamo così
molte persone sono state uccise in abbigliamento e
il motivo per cui dobbiamo essere così tanti
le persone sono state uccise in parallelo è
perché non possiamo migliorare il codice e
il primo passo verso il miglioramento reale
è misurare e capire che questo
è un problema sociale organizzativo no
uno tecnico
quindi per favore allinea la tua architettura e
la tua organizzazione sta andando al tuo codice
grazie per questo ho quasi finito adesso
prima che prenda tempo per le domande, io solo
voglio riassumere per te così abbiamo
visto che una volta abbracciamo il nostro passato
può ottenere molte informazioni preziose
che ci ha aiutato a ottenere una nuova prospettiva
il tuo codice base hai visto come hot spot
ci aiuta a dare la priorità al codice che è
un ulteriore bisogno di refactoring o altro
altri miglioramenti abbiamo visto come noi
può usare i gemelli di complessità come
whistleblowers per evitare il
normalizzazione della devianza e tu hai
visto come possiamo ragionare e misurare
emivita del software tramite mappe codec
finalmente abbiamo visto come possiamo anche ottenere
intuizioni su quanto bene la nostra architettura
adatta il modo in cui lavoriamo effettivamente con
studiando la distribuzione delle squadre
all’interno del nostro codice e questo è un argomento enorme
e questa presentazione ha davvero solo
scalfito la superficie, quindi se si vuole
leggi di più ne blog su questo regolarmente a
Adam Thornhill com hai un numero di
link qui e ovviamente vorrebbe
per approfondire questo hai il
tutto il libro su di esso il tuo codice è crimine
scena finalmente tutto ciò che sto lavorando
in questo momento e questo è ancora lavoro in
il progresso è che voglio fornire questi
strumenti che ho usato per fare quelli
visualizzazioni come servizio, quindi se lo sei
interessati a che è possibile iscriversi al
scena codice I oh è gratis e se lo sei
interessato agli strumenti che uso oggi
puoi dare un’occhiata all’amper calma
e vedrai cosa è disponibile e
Sono felice di dirti di più a riguardo
più tardi e quindi prima che prendere alcune domande che mi
voglio solo cogliere questa opportunità e
grazie mille per avermi ascoltato e
Che il codice sia con te, grazie
va bene, penso che la maggior parte del
domande anche le domande che ho avuto era
lavoro e scarico questi fantastici strumenti
si ok ora lo sappiamo , sì, così è
calma alterata e la ragione per cui dovevo
scrivi i miei strumenti e i miei pirati mi
avvio così quando ho iniziato a farlo
roba cinque anni fa non c’erano strumenti
disponibile a fare il tipo di analisi I
volevo fare così ho portato i miei strumenti
non necessariamente perché volevo ma fuori
di necessità quindi per favore dai un’occhiata
loro e ho anche sulla scena del codice i
spero che sarà disponibile a volte questo
estate e come ho detto dove c’è
sarà un’opzione gratuita su quello
oltre a lavorare a scaricare questi strumenti
consiglieresti di segnare effettivamente io
penso che stia facendo incrementale
modifiche al codice per questo bug risolti da trovare
punti caldi buck oh sì non sono sicuro di me
capire come una domanda completamente
ma si tratta di rendere piccolo iterativo
cambiamenti sì, probabilmente lo so quando leggo
consiglieresti di fare questo sì
cambia sì, quindi penso che ci siano
in realtà due domande ci facciamo il mio
interpretazione di esso e la domanda
sono liberi di approcciarmi dalle parole I
starà in giro per riposare tutto
giorno ma fondamentalmente è stato fatto molto
casi di studio su questo e siamo sempre
trovare è quello il punto caldo che hanno sempre
componi questo piccolo codice del portale come due
al sei percento forse, ma tendono ad esserlo
responsabile di molti bug nel
codice quindi se guardi i tuoi bug loro
anche tendono a raggruppare schienali come ciascuno
altro bene così vedrai che il caldo
spot lì con solo un punto caldo
tipicamente possibile identificare di più
aree paludose nel tuo codice come 22 in alto
come sarà il settanta per cento dei tuoi difetti
essere nei punti caldi altre domande
non va bene allora
grazie molte

Please follow and like us: