Press "Enter" to skip to content

GOTO 2016 • Software that Fits in Your Head • Dan North


ci facciamo il giro di applausi per
quell’uomo oh questo è improvvisamente molto più forte
di quanto mi aspettassi
Parlerò molto sottovoce, quindi l’obiettivo
dello sviluppo del software, allora
ridurre al minimo i tempi di attesa per l’impatto sul business
si scopre che il piombo minimizzante
l’ impatto del time to business non è così difficile
okay, puoi ridurre al minimo i tempi di consegna
impatto soprattutto urlando alle persone
che funziona puoi batterli, intendo io
non suggerirei di batterli ma tu
sai che puoi mettere la gente in folle
quantità di pressione e ciò permetterà
di ridurre al minimo il tempo di piombo per le imprese
impatto una volta ok improbabile che accada di più
di una volta certamente improbabile che accada
più di due volte va bene perché entrambi
quelle persone sono solo esauste ora o
hanno smesso o sei stato arrestato o
qualcosa è successo, quindi non è così
la cosa più difficile è la cosa più difficile
ridurre in modo sostenibile i tempi di consegna a
impatto aziendale e questo è l’obiettivo di
il sistema di lavoro che chiamiamo software
sviluppo che vogliamo essere in grado di creare
impatto aziendale a volontà in brevissimo tempo
quantità di tempo in modo sostenibile okay e una volta
inizi a pensare in questi termini a
il numero di cose diventa evidente quindi il
la prima cosa che diventa evidente è
questo l’obiettivo non è produrre software
ci chiamiamo ingegneri del software e
è come un idraulico che si chiama
un ingegnere di tubi proprio allo scopo di
l’impianto idraulico non è tubi lo scopo di
impianto idraulico è riscaldamento e acqua bene la
scopo di ciò che facciamo è informazione noi
usato per chiamarlo tecnologia dell’informazione
applicare la tecnologia alle informazioni ma
non è stato abbastanza bello così ora siamo
ingegneri del software e alcuni di noi lo sono
artigiano del software che penso sia gentile
di carino ma non sono un fan di
quel tipo di termini perché il software
non è il punto
l’impatto aziendale va bene così
produce una parola interessante è a
parola latina da prod ra che significa
crea le cose e noi le vediamo a
l’incubo sostituisce quello che vediamo
vedere la parola quali versioni di parole di questo
parola in posti diversi quindi produzione
è la stessa radice di produrre e
produttivo quindi tutti questi sono dal
il tasso di Prada di root va bene e che cosa
quello suggerisce che sta costruendo le cose
quindi se creo i widget in una fabbrica
Sto producendo le cose giuste
produttivo e se produco più widget
in un dato periodo di tempo o produrre
più macchine su una linea di produzione ci sono
quella parola di nuovo giusto allora allora è così
meglio così va bene l’idea è che voglio
per fare più widget ma non vogliamo
per rendere più software che vogliamo fare
impatto aziendale e vogliamo fare
impatto sul business rapidamente e rapidamente
suggerire meno software e così abbiamo
questo tipo di questo questo imbarazzante a
conflitto che è produttivo non lo è
la stessa cosa dell’efficacia che è a
vergogna perché per decenni siamo stati
parlando della produttività del software
metrica e misurazione della produttività e
parlando di misurare la produttività e
è la cosa sbagliata , okay, non dovremmo
stare guardando misurare la produttività e
il problema è che questo codice non è il
bene pensiamo al codice come a un bene
usare anche le lingue come la nostra eredità
codice legacy il nostro sistema legacy legacy
l’eredità è una cosa di valore che lasci
la prossima generazione è la tua eredità
okay, quindi pensiamo al software come prezioso
parliamo di debito tecnico perché
un buon software è un software pessimo
è debito giusto, quindi pensiamo al codice come a
codice di attività non è un bene va bene questo è
il codice di verità scomodo non è un
il codice degli asset è il costo, il codice è il costo
di ottenere l’impatto del business il
l’impatto aziendale è la cosa che ci interessa
circa ok e c’è molto, molto
tipi di codice di costo è costato in molti
modi diversi c’è la scrittura di base
costa il costo di avere esseri umani I
esseri umani altamente pagati, okay
sei un essere umano altamente pagato, giusto
esseri umani altamente pagati che sto scrivendo
codice per ogni volta che cosa 10 persone nel mio
squadra ogni singolo giorno che sono 10 persone
giorni di costi ok quindi un conservatore
stimare circa $ 1.000 al giorno
costo completamente caricato per un essere umano così
sono circa $ 10.000 al giorno che sono 50.000
dollari a settimana ci sei tu è solo il mio
costo per iniziare a scrivere cose così è
questo è ovvio che è ovvio
costo visibile quindi c’è un sacco di
altri costi in attesa di costi di codice
c’è uguale costo di ritardo okay e così via
costo del ritardo è questo è dire che ho un
bisogno e il bisogno è che ne ho bisogno
informazioni e dato quell’informazione I
può prendere buone decisioni
non c’è c’è una decisione d’acquisto I
devo fare ogni giorno che devo comprare
certe cose ogni giorno e se ho
quell’informazione che farò io lo saprò
esattamente quanto della cosa da comprare se
Non ho quell’informazione che devo
indovina e ogni giorno credo sia
leggermente alto o leggermente basso perché
Sto indovinando e questo mi è costato cinque
mille euro al giorno va bene così ogni
Un giorno non ho una soluzione per
quel problema 5.000 10.000 15.000 e così via
è e questo è un costo nascosto che non lo facciamo
vedere il costo di non avere la cosa
va bene e questo costo del ritardo è enorme
Nani il costo della costruzione di cose e
quando ho parecchie cose diverse esigenze
che non sono state soddisfatte tutte queste cose
al momento il costo del ritardo per
tutte queste cose iniziano a mongolfiera
okay, così aspettando che i costi del codice cambino
costi di codice in entrata e mantenimento del codice
i costi e probabilmente c’è il singolo
il più grande costo all’interno di cambiare codice è
capire che diavolo fa bene
comprensione comprensione dei costi del codice
codice che non hai scritto a volte per
ho capito il codice che ho scritto ma
sei mesi fa io e sei mesi fa
significa un idiota, sono davvero super intelligente ora
sei mesi fa ero un idiota, naturalmente
tra sei mesi lo dirò
sei mesi fa ero un idiota
perché sei mesi fa mi risulta
è sempre un idiota che è leggermente
Intendo dire che significa sia frustrante
Sto imparando o non sto imparando uno di
quelli è vero essenzialmente così è il codice
costano quindi pensiamo alla comprensione
codice allora cosa vuol dire
capisci il codice ce ne sono tre
tipi di voi potete immaginare una specie di tre
tipi di codice se ti piace che ci sia
c’è il codice che conosco perché l’ho scritto
va bene
quindi sono abbastanza fiducioso che ho
l’ho scritto abbastanza di recente che è così
è ancora lì e poi c’è il codice
quello è stato intorno stabile a tutti
sa che è tutto ben documentato
roba così quei due sono felice minuto sono
felice di lavorare con codice come quello che sono
felici abbiamo continuato a lavorare bene
codice ben documentato e documentato
felice di lavorare con il codice che è nuovo
abbastanza che l’ ho scritto allora c’è quello
codice scomodo che è una specie di codice nessuno
sa che è stato intorno abbastanza a lungo
che è diventato vecchio ma nessuno se ne è accorto
invecchiando non abbiamo fatto nulla
deliberatamente su di esso invecchiando
è appena diventato più vecchio e forse le persone che
lo scrisse forse ruotato dalla squadra o
forse hanno dimenticato cosa ha fatto o forse
non potevano ricordare le ragioni esatte
perché lo ha fatto o forse le ragioni sono
cambiando comunque potrebbe essere usato
per qualcosa che non doveva essere
utile ma nessuno lo sa davvero e se
si guarda una sorta di grafico del volume se
ti piace un istogramma di quel codice tu
tendono a trovare un enorme pezzo di codice
si inserisce in quel vuoto medio okay
è un codice abbastanza vecchio che nessuno
lo ricorda esattamente ma non proprio
attento non proprio nutrito e così mio
premessa quindi è questo codice dovrebbe essere
stabilizzato o ucciso è okay
codice da stabilizzare o eliminare rapidamente
va bene e se possiamo prendere l’abitudine di
o codice di stabilizzazione o codice di uccisione
quindi significa che si finisce solo con il codice
che abbiamo scritto di recente o codice che è
davvero stabile e ben noto suona
davvero ovvio è davvero difficile da fare
deliberatamente perché entropia giusta
perché lo stato predefinito è roba
appena invecchiato, ne ho un po ‘
notizie deludenti alla fine di questo
parlare a tutti in questa stanza saranno 50
minuti più vecchi mi dispiace non posso fare nulla
a tale proposito proprio qui è la cosa tutti
il codice che hai lasciato al lavoro
sono 50 minuti o due sì
domani indovinare quanta più vecchio sarà
sì , il codice sta invecchiando sempre
una delle cose che stavo facendo dopo
il pensiero lasciato funziona e se ne andò
questa azienda commerciale sta raccogliendo modelli
di comportamento e modelli di software
quello che sentivo stavo permettendo a questi
team altamente performanti da fare davvero reali
in cose incredibili e ho avuto modo di arrivare a me
Trascorsi otto anni che pensavano che i lavori avessero
un tempo fantastico lì e ho pensato io
capito tutto questo software di consegna
roba e agile e tutto il resto e così allora
Sono entrato in questo ora vengo a
conferenze e parlarne e poi io
entrato in questo unire questa squadra molto piccola
e ho parlato un po ‘di più su di loro questo
pomeriggio ma mi sono unito a questo molto piccolo
squadra e loro stavano facendo davvero
cose davvero insolite e loro erano le
il gruppo più agile di persone che abbia mai avuto
lavorato con e stavano rompendo tutto
le regole agili bene ironico non soddisfatte, ma
forse no ma così ecco un paio di
schemi di tanto in tanto come ho detto che sono
ne parlerò ancora un po ‘più tardi
oggi ma ecco un paio di schemi
che ho una sorta di derivato, se ti piace
che ho osservato da questa squadra e da quella
Ho visto altrove e ho applicato
altrove che mi ha aiutato a ragionare
stabilizzare o uccidere il codice okay così
un paio di schemi complementari uno
si chiama breve tempo di dimezzamento del software e
l’altro è adatto alla mia testa, quindi mi piace
nominare le cose
okay, la durata della mezza vita del software è così breve
la mia testa quindi diamo un’occhiata al
prima una breve vita utile del software
um così l’ emivita del software è a
idea teorica è un modello mentale
pensa a come sia l’emivita della fisica
essenzialmente questo se ne ho un milione
atomi di un isotopo radioattivo
a seconda di quale tipo di elemento
posso sapere esattamente quanto tempo
prenderà per metà di quegli atomi a
decadere in uno stato più stabile che è
ha chiamato la sua emivita ok così per ciascuno
diverso tipo di elemento c’è a
emivita diversa e io posso misurarla
e posso saperlo precisamente è un
cosa miserabile ciò che non so è
quali atomi così posso guardarli
cose un milione di atomi e mezzo di
stanno per decadere in un certo
la quantità di tempo va bene così se ho solo un
atomo singolo , allora quello che succede è dopo
quella mezza vita è decaduta o no
non è decaduto e in effetti è in questo
stato strano dove è sia di quelli
cose fino a che non lo guardo e se lo metti
che in una scatola con un gatto ottieni un
gatto davvero incazzato e questa è la maggior parte di
la fisica va bene così ora tutti voi avete un
laurea in fisica va bene
è possibile stampare online è fantastico
quindi ho applicato questa idea a
non aver messo il codice in una scatola con a
gatto perché è sciocco ma l’idea di
un software di mezza vita 2 e sto pensando
su questo quanto tempo e qui è un pensiero
esperimento per provare ora a pensare al codice
al momento stai lavorando o quello
sei attualmente responsabile per e
pensa quanto tempo avresti bisogno di andare via
perché così quando sei tornato indietro metà
il codice è cambiato della metà del codice
o sono stati modificati oltre il riconoscimento
non lo riconosceresti di nuovo
stato cancellato è stato riscritto è
è stato cambiato metà di ciò che non è cambiato
ma la metà è completamente diversa
per quanto tempo avresti bisogno di andare via per
e ho fatto questa domanda in potrebbe aggiungere un
classe chiamata software più veloce e anche io
domanda nella mia classe e quando la prima
volte ho corso questa classe era in
Scandinavia e qualcuno stava lavorando per
una banca svedese lui quella mattina sul suo
modo di classe con cui aveva lavorato
qualche software che è stato scritto nel 1967
proprio lui dice che calcola la metà
la vita di quel software è millenaria
abbastanza sicuro che i suoi nipoti lo faranno
stare lavorando su quel sistema ok così scrivo
e se pensiamo al tempo di dimezzamento di
il software è in genere lo so anni
anni giusti forse decenni e così ho fatto a
indietro di un calcolo di busta con il
Codice stavamo lavorando con questo
sistemi di trading e questi sono no
sistemi non banali e ciò che era
accadendo era il codice stava cambiando
sotto i miei piedi all’incirca ogni sei settimane
Calcola che l’emivita del codice sia stata
disponibile circa la metà era diversa
ed era un pazzo pazzo tasso di pazzo
cambiare, ma quello che stava succedendo sono questi
i ragazzi erano senza paura Lidl che mangiava codice okay
e riscrivere il codice perché la loro premessa
Ormai non c’era più e da cui posso arrivare
vuoto statico pubblico principale a qualcosa
che voglio più veloce di quanto possa capire
questo codice lo manipola cambiandolo
fa quello che voglio e anche la prossima volta
Scrivo che non avrà nessuno di questi
cose speculative che ho inserito in I
non finì per usare okay, quindi pensiamo
ci sono alcune considerazioni di progettazione che
stanno per permetterci di fare questo in modo che
non puoi farlo solo con il codice che non puoi
prendere un grande enorme monolito di come un
codice strettamente accoppiato e
iniziare con sicurezza la metà di esso
okay, questo non ti farà volare
entrerà in tutti i tipi di problemi
così avrò bisogno di un po ‘di discrezione
componenti che ho bisogno di costruire
piccoli pezzi separati va bene perché se io
avere un componente discreto che posso ragionare
a una scala di componenti e voglio
definire un limite del componente quando I
definire cosa succede ai bordi perché
allora se riesco a pensare a cosa succede
ai bordi ora possiedo il centro e io
vuoi definire un componente scopo cosa
vuol dire che significa ciò che è il
punto di questo software e e molto
le persone sono tipo di voi non lo sanno gli appassionati di
dovrebbe essere il codice di codice di documentazione
documenti autodocumentati di codice
cosa fa bene scritto bene
il codice scritto ti dice cosa fa
non ti dice perché è lì okay
non ti dice il suo scopo che dice
tu quello che cosa fa e l’altro
cosa che non ti dice è cosa
non è lì non ti dice tutto
le considerazioni sul design di tutto il
altri modi per farlo, ma ho pensato
attraverso un altro non ho bisogno di quelli ora
Lascerò quelli che farò quest’altro
in che modo non ti mostra i tre o
quattro iterazioni necessarie per arrivarci I
significa che posso versare il controllo della versione
storia se voglio ma quando sono
guardando il codice che mi sta dicendo il codice
ed è abbastanza ovvio quando lo dici
ad alta voce il codice mi sta dicendo cosa
è vero non mi sta dicendo ciò che non è e
certamente non mi sta dicendo perché è così
va bene così se non ho da qualche parte
vividamente catturato lo scopo di quello
componente
Non posso ragionare o almeno io
può provare a dedurlo guardando il
codice Mi chiedo perché questo è qui oh guarda
sembra fare questo che deve essere un
cosa importante lì per così ho solo
derivato lo scopo di ciò che non può
essere lo scopo di ciò potrebbe essere
qualcos’altro ma quando ti tiri indietro
e strabico sembra che faccia a
cosa diversa va bene e finalmente voglio
per definire le sue responsabilità
responsabilità leggermente diverse per
scopo quindi lo scopo è che c’è è è è
Ecco perché è la loro responsabilità
ciò che possiede e poi torna a
il confine quindi ciò che non fa
proprio così ancora se ho intenzione di sostituirlo
se ho intenzione di cambiarlo per essere
Qualcos’altro ho bisogno di sapere di cosa si tratta
quello che è il motivo per cui è lì quello che è
responsabile di okay, una volta capito
quelle cose su cui posso iniziare a ragionare
c’è anche un elemento del ciclo di vita
a questa
quindi i componenti hanno un ciclo di vita in termini
di come li ho sognati
Mi sono sentito II decise io li avevo bisogno
iniziato a scriverli li ho presentati
e così ora ho bisogno di pensare genere di circa
Come prendersi cura di loro in modo da in termini di
amministrazione quindi ho bisogno di scrivere test
e documentazione su queste cose
va bene quando facciamo le specifiche di
esempio o programmazione con esempio o TDD
o come vuoi chiamarli
cose che quelle cose non sono prove che tu sia
non scrivere test va bene scusate programmatori
quelle cose non sono test che sono
specifica eseguibile che è possibile utilizzare
loro per verificare alcuni dei comportamenti di
la tua applicazione è fantastica, a
effetto collaterale okay non hai prove
per il tuo codice ancora non scherzare
e ancora documentazione per dirmi perché
c’è qualcosa che mi dice le decisioni
che abbiamo reso il mio amico Nygaard un amabile
post sul blog e si possono trovare sul
googles sulla decisione di architettura
registra le ore di annuncio e ciò che fa
in sostanza è davvero semplice
markdown fondamentalmente un post sul blog e in
il post del blog dice che ecco il
la decisione che abbiamo preso qui è la gente che
fatto qui ecco le cose che abbiamo considerato
ecco le cose che abbiamo scartato
scelte che abbiamo deciso di non fare e quindi questo
è quello che abbiamo finito con e per extra
credito qui è alcuni dei rischi che il nostro
introduce questo è il problema che risolve
ma anche qui c’è un po ‘del bagaglio esso
portarlo porta e che rimane dentro
controllo della versione in modo da poter guardare il
le decisioni che abbiamo preso nel tempo e così via
qualcuno che entra nel progetto da allora
III , stai sbagliando tutto questo e tu
dovrebbe usare JSON e MongoDB e
qualunque altra cosa e andiamo bene grazie per
il tuo prezioso input, ecco quando noi
fatto questa decisione ecco come abbiamo fatto
quella decisione se qualcosa ha
La sostanza è cambiata da quando abbiamo fatto
tale decisione allora poi diamo uno
conversazione e vanno e leggono
continuano nel mondo aspettate un attimo
tutto ciò a cui hai pensato
e hai pensato che e si
pensavo a cose a cui non pensavo
e tu sei finito bene, sto bene
che è sorprendentemente efficace sì
ma è anche lì per essere sfidato
cosa sai che cosa è cambiato?
da allora proviamo un esperimento
okay, proviamo un esperimento fantastico
facciamolo così se siamo test dei componenti
commento se teniamo un diario finito
tempo delle decisioni che prendiamo che è
è diverso da un wiki, un wiki è attuale
dichiari in molti posti che una wiki è giusta
una versione hipster di SharePoint Rights
dove l’informazione va a morire ma noi
utilizzato per inserire informazioni in Word
documenti per andare e morire ora lo mettiamo dentro
Pagine HTML per andare e morire quindi questo è un
blog ed è il blog è ricercabile
è facile trovare le cose e io voglio
ottimizzare per sostituire la capacità in modo che
significa che sto andando in genere non
introdurre librerie che si accoppiano
componenti insieme perché se io
presentare le librerie alla coppia
componenti insieme quindi sai male
le cose possono accadere proprio ciò che significa sia
okay sto riducendo la duplicazione che è
bene ma ora sto introducendo l’accoppiamento
Va bene, che non è grande, quindi se posso ottimizzare
per sostituire l’abilità che potrei fare
decisioni differenti e dovrei aspettarmi
trascorrere del tempo investendo nella stabilizzazione
giusto dovrei aspettarmi di trascorrere del tempo se
questo componente sarà longevo
e sarà qualcosa che
o qualcuno vuole venire e
sostituire e che qualcuno potrebbe essere me
avendo poi della documentazione
alcuni test intorno ad esso si preoccupano di investire
in esso diventa utile eccone un altro
cosa se è tutta la mia catena e per il mio codice
cambiando frequentemente il
informazioni la conoscenza di cosa
quel codice fa parte del team giusto così
ciò significa che voglio investire nella costruzione
una squadra stabile che non significa investire
nella costruzione di una squadra statica statica e
stabile non sono la stessa cosa quindi una statica
la squadra non cambia mai
ok, questo è che la squadra statica ottiene
vecchio e vecchio e loro perdono il loro
perdono il loro senso del respiro se tu
come diventano molto gentili di eco
camera II una squadra stabile significa che sono
molto deliberato riguardo l’onboarding e
molto deliberato sull’uscita okay così
quando qualcuno nuovo si unisce al team c’è
un intero processo in cui portiamo questo nuovo
persona fino alla velocità quando qualcuno se ne va
la squadra è triste, è triste
cosa e ma noi facciamo una cosa giusta
ci assicuriamo in particolare che se loro
avere una conoscenza che nessun altro ha
ehm che proviamo a catturarlo
conoscenza idealmente prima di partire
destra
quindi non è una specie di oh te ne vai
in due settimane scrivi tutto te
sappiamo che nel tempo abbiamo
investito nel creare ciò che è condiviso
capire che squadre così stabili possono muoversi
rapidamente ok squadre stabili ce ne sono a
bel proverbio africano se vuoi andare
viaggio veloce da solo se vuoi andare lontano
viaggio insieme ho aggiunto un po ‘
addendum se vuoi andare lontano molto rapidamente
pack light okay non è una scelta binaria
è una scala è una scala dall’essere
completamente solo per avere un enorme esercito
di persone e carichi un sacco di roba te
può essere da qualche parte su quella scala che puoi
avere un sacco di gente che è il mio
pantaloncini per mezza vita poi mm-hmm così
il mio altro modello è quindi nella mia testa
così si inserisce nella mia testa questo è basato su a
Chap ha chiamato James Lewis così James Lewis
um un certo numero di cose bene ha coniato il
termine micro-servizi sempre uno dei
persone che hanno coniato il termine
micro-servizi ero praticamente tutto
James è caduto ma ora lavoro con James
che le opere e lui ha il mio preferito
la metrica della complessità va bene così e lui lo dice
non gli piace guardare il codice che è
più grande della sua testa, quindi la sua testa è in giro
quello grosso è un monitor da 24 pollici
ok , questa è circa la dimensione di James
testa in modo James Lewis sua testa Sono
proporre dovrebbe diventare un’unità SI che
significa che dobbiamo tagliare la testa e
mettere in frigo a Parigi, ma va bene
finché non possiamo farlo e sembra
resistente a questo non lo capisco
ma finché non possiamo farlo, allora io lo faccio
dovete immaginare la testa di James è
circa un 20 su uno schermo di codice giusto
quindi questo è se questo codice e, naturalmente
sai che puoi andare in giro con i font
anche la taglia , rendiamola leggibile
quindi se tu se è più che se lui deve
pagina su e giù per guardare qualcosa
probabilmente è troppo complicato okay quindi a
funzione o un metodo o qualsiasi altra cosa
potrebbe essere ci sono troppe cose lì
e così dice che va bene che significa che ha bisogno
per non ho bisogno di renderlo più piccolo più semplice
quindi andrà bene nella sua testa
quindi mi va bene in testa quindi ovviamente è un
metafora che non hai davvero bisogno
La testa di James Lewis, né ti serve il
Monitor da 24 pollici che parla di te
può ragionare su qualcosa e c’è
qui puoi fare una logica abbastanza ovvia
unica ragione per qualcosa che si adatta
hai ragione
ha senso ma poi il contrario
dice questo se non riesci a montare qualcosa dentro
la tua testa non puoi ragionare e
quindi quello che facciamo è che abbiamo una soluzione
meccanismi così uno dei nostri coping
meccanismi è dividere e conquistare così
è un modo in cui facciamo analisi proprio così
analisi per il modo in cui faccio un grande
il design complesso che mi entra in testa è il mio aspetto
in piccola parte, quindi se qualcuno dice
vai a risolvere l’ assistenza sanitaria che è enorme
problema mentre vado a risolvere il record del paziente
gestione che è un grosso problema andare e
pensa a un paziente che visita a
ospedale visitando un medico in un ospedale
e pensa a cosa sembrerebbe
come va bene, sì, penso di poter adattare gli uomini ai miei
testa così ora posso iniziare a ragionare
così che cosa facciamo con grande brutto
i sistemi software è piuttosto che
semplificandoli perché è il momento e
sforzo e duro siamo solo noi arriviamo
con tecniche per ignorare attivamente
parti di esso così TDD è un modo fantastico di
attivamente ignorando roba che sta succedendo
intorno a te sì o in effetti lasciami fare
lasciami qualificare quel beffardo beffardo e
lo stub è un modo fantastico di attivamente
ignorando le cose che accadono intorno a te così
dove hai dove stai scrivendo il tuo
test e hanno un sacco e molti stub
e prende in giro ciò che dovrebbe essere detto
è per ragionare su questo
pezzo Devo ignorare carichi e carichi
di altre cose che suggerisce che sia
accoppiato a carichi e carichi di altro
roba che non va bene per cui puoi pensare
mamme di fondamentalmente analgesici giusti
sono le tue droghe quindi più cose io
posso prendere in giro è facile mi sto prendendo in giro
quadri che rendono facile andare qui
ha accesso gratuito a drogarsi così tu
non devo pensare al painkiller così
non di pensare al dolore della
complessità di questo sistema bene dovremmo
pensa alla complessità del sistema
Voglio prendere tutti i mazzi di distanza
tutte le persone e loro vanno oh no guarda io
non posso testare questa cosa, quindi ora facciamo
rompere il sistema in modo da poter ma
si inserisce nella mia testa più volte
dimensioni che si verificano lungo la dimensione
di tecnologia quindi voglio tecnologie
quello che mi entra in testa è che alcune lingue si adattano
nella tua testa meglio di altre lingue
– I miei esempi preferiti Clojure e Scala
va bene così Clojure è una liscica che è
fondamentalmente due parentesi che SMO STUV
Scala che proprio lì ci vai tu
piccolo linguaggio dei segni internazionale
Scala va bene così per una chiusura quindi chiusura
è molto molto
il linguaggio è che non c’è molto da fare
è liste ed è così si chiama homo
iconico che significa che quella chiusura
il programma è scritto come un dato di chiusura
struttura giusta – Lisp si è quindi
avere liste e il programma stesso è un
elenca in modo da poter manipolare il codice come codice
è il codice in quanto i dati sono fantastici e e
c’è in genere un modo per farlo
qualcosa in chiusura ed è tipicamente
abbastanza ovvio come lo fai e e
se non è che guardi alcuni di quelli
delle librerie e della documentazione di base
tutorial ed è molto ovvio
linguaggio erudito meno istruito
Non ho mai conosciuto Scarlet, non gliene importa niente
codice così riusante quindi se sono solo riutilizzo
codice leggo il codice che dico così una volta che ho
ereditarietà basata sulla classe, sì, puoi farlo
hai quello che mi dici dei mix-ins sì?
possiamo chiudere i sensi
funzioni sì certo che non ti va bene
Grazie
che dire di qualcosa di così semplice
looping a destra passando attraverso una sequenza
beh sì, abbiamo un ciclo for ancora noi
hai iteratore hai una ricorsione
hai funzioni come Map Reduce
insegnato sì sì certo di quanto sopra
oh perché ciò significa questo è questo
appena ho cinque programmatori che ho
otto dialetti di studioso sì e così
ciò significa ora che è fantastico è a
ottimo linguaggio per i generi di triangoli
di roba pazzesca non solo nella mia
codebase giusto e quindi ciò che significa è
tu come squadra devi essere molto di più
supponente su quelle cose così noi
devo dire che questo è il nostro stile locale
succede a più scale quindi voglio
essere in grado di guardare qualsiasi codice e quello
il codice si adatta alla mia testa, quindi se abbiamo un
stile coerente di codice che posso guardare
codice di nessuno e non ho bisogno di pensare
oh questo è questo è il dialetto di Bob
di codice quindi ho solo bisogno di passare
La modalità Bob va bene anche se ce ne sono alcuni
psicologia del sito interessante che
suggerisce che una volta che fai se hai un
veramente alto alto squadra performante in
tutti sanno come funzionano gli altri
quando vedi il dialetto di qualcun altro di
codice hanno uno stile diverso di bug
persone diverse portano un piede dentro
introdurre diversi tipi di bug loro
mi manca leggere le cose in modo diverso e così io
sapere se sto guardando lo stile di Bob di
codice probabilmente andrà a sì lì
è routers che risolvono il problema, ma facciamolo
non farlo
quindi cosa noi
la coerenza è ok, quindi il corso è multiplo
scala quindi voglio essere in grado di guardare
qualsiasi classe e sembra che l’abbia scritta
o sembra qualcuno nella squadra
lo scrissi e lo guardo indietro e guardo a
componente che componente si adatta alla mia testa
e posso guardare il modo in cui un mucchio
di diversi componenti parlano a ciascuno
altro e tutti rispondono al mio telefono
ha iniziato a squillare um Un grappolo di diversi
componenti che parlano tra loro e
tutti parlano tra loro in a
modo coerente in modo che si adatta alla mia testa I
può ragionare su un sistema e se lo è
fatto se costruiamo qualcosa in modo coerente
Posso qualcosa che imparo qui posso
applicare qui e questo riduce il mio
carico cognitivo mi rende più facile
ragionare sulle cose e quando iniziamo
diventando leggermente più grandi iniziano
scaling um cosa succede è che hai un
gruppo di squadre diverse e tutto il
roba agile ti dice che la squadra è
l’ unità di consegna e le squadre sono
autonomo e le squadre dovrebbero fare il loro
proprie decisioni e nella teoria dei sistemi
termini che chiamiamo ottimizzazione locale
e l’ottimizzazione locale è fatale per qualsiasi
tipo di consegna globale va bene qualsiasi tipo di
l’ottimizzazione globale di un sistema
sarà sabotato dall’ottimizzazione locale
e uno dei miei esempi preferiti di locale
l’ottimizzazione è quando vedi la diapositiva
quello sale questo è questi sono alcuni di
le tecnologie che usiamo ne abbiamo viste una
andando su Cassandra e HBase e poi
ci sono 15 cose diverse lassù e
ci guarderanno, siamo piccoli
siamo così belli e io sono come non lo sei
il team operativo sei tu no
a valle di tutti quelli pazzi
le decisioni sei tu non sei la persona
installazione di aggiornamenti per il monitoraggio di sicurezza
amministrando sei no no, naturalmente
non perché altrimenti probabilmente lo sarai
rendendo questo set molto più piccolo
di scelte sensate okay e così um
ci sono un paio di modi in cui possiamo farlo
uno è ah, posso dire di nuovo così James di nuovo
James deve essere in tutti gli incontri
questo è un buon modo per ottenere coerenza
funzionerà molto bene, sì, tranne che a
fa schifo essere James e B che significa
che James ora è un enorme collo di bottiglia
okay, quindi è un problema così così, invece
quello che potremmo fare è che potremmo tutti
indossa un piccolo distintivo dice quello che vorrebbe
James fa e siamo in un incontro che diciamo
okay, ho bisogno di prendere questa decisione
persistenza o sul controllo di qualsiasi cosa
è
cosa farebbe James e questo significa questo
siamo come se non fossero James in realtà
lo sai ma quello che hai fatto è che lo hai fatto
creato alcuni valori condivisi alcuni condivisi
linee guida in modo che tu possa fare tutto
decisioni coerenti e la cosa da fare
poi è quello di verificare in uno con l’altro noi
deciso questa cosa stiamo pensando
facendo questa cosa cosa ne pensate voi ragazzi
beh, questo ha senso perché lo siamo
facendo questa cosa e questo è un po ‘
allineati o bene stiamo facendo un altro
cosa qui facciamo un
conversazione su questo e capire
qual è la cosa più sensata da fare?
e quindi puoi iniziare a ridimensionare
coerenza contestuale quindi e così io
voglio essere d’accordo con questi principi guida
concordano idiomi d’accordo come stiamo andando a fare
cose qui intorno e a quel punto
la differenza è data quindi significa che se io
vedere qualcosa che non è come l’altro
cose che probabilmente lo segnalano
qualcosa di interessante sta succedendo qui
va bene e in particolare l’idea
la familiarità non è la stessa di
semplicità quindi cosa vuol dire questo
significa cose che sono abituato a vedere
questo non li rende necessariamente buoni
idee mi fa solo alcune idee che ho
visto un sacco di volte ok, così otteniamo il
sindrome della rana bollente quindi metti un blob
di rana in acqua fredda e gradualmente
riscalda l’ acqua e la morte dei ranocchi
sai che non è vero se ti riscaldi
una ciotola una ciotola d’acqua con una rana in esso
la Rana si bagna, sta diventando un po ‘
caldo qui e salta comunque ok
pensiamo tutti che sia vero perché abbiamo tutto
ho sentito la storia e questa è una rana bollente
sindrome così un po ‘metafora okay
pensiamo tutti che una cosa che abbiamo sentito sia
vero quindi ho bisogno di andare avanti perché lo sono
a corto di tempo e io non sto bene
in realtà come lei sa che sta andando abbastanza
beh pensavo di avere più tonnellate di roba da fare
entrare e sono appena atterrato sul bit
di cui voglio parlarti
microservizi di nuovo lì così oh sì, lo sono
non sto chiamando i micro servizi
chiamandolo un componente sostituibile
architettura e questo è ciò che intendo
uno stile architettonico va bene a tutti
stile architettonico che ha componenti
che sono sostituibili va bene questo crea
opzioni per me significa che posso ragionare
sul codice in modo diverso va bene ci sono
molti molti componenti sostituibili
architetture quindi cosa sostituisce
comando architettura significa che io
iniziare con ora è che questo è come io
questo è il modo in cui ottenere il mio risultato sostenibile
come inizio a costruire il mio in modo sostenibile
riducendo i tempi di consegna va bene se io se tengo
cose sostituibili e tengo le cose
Componente significa che posso ragionare
su di loro quindi c’è il mio componente lì
tu vai
ho impiegato anni per disegnare che va bene ecco
un altro va bene quindi questo è questo è il mio
diagramma componente credo di averne tutti
giusto quindi questi sono componenti okay ognuno
il componente fa una cosa ma ricorda ognuno
componente ha una shell dura va bene è
avvolto in esso è avvolto in un duro
shell e questi componenti con cui parlano
a vicenda mandano messaggi a ciascuno
altri vanno bene così sono piccoli
computer che passano messaggi okay um sono
non è la prima persona ad usare la frase
piccoli computer passando messaggi fa
qualcuno sa chi è stata la persona che ha detto
piccoli computer che passano messaggi
nessun caso di Allen è una persona bene
fatto così questo è l’uomo che ha coniato il
termine orientato agli oggetti di programmazione um e
ha detto che la programmazione orientata agli oggetti ha detto
gli oggetti sono piccoli computer che passano
messaggi e lui di recente alcuni anni fa
in una lista di lettere le ha dette le mie più grandi
il rimpianto con oo è che non l’ho chiamato
programmazione orientata ai messaggi perché il
gli oggetti erano una vera e propria falsa pista
Detto veramente è tutto per il passaggio
messaggi come industria in maniera massiccia
incasinato oh oh va bene e continuo a sentire
tu conosci abbastanza persone che considero come a
fantastiche persone che parlano di software
ciao e parlano ancora di te lo sai
questi oggetti sono oggetti di modellazione
nel nostro mondo e quelli sono gli oggetti
loro non sono no loro non sono no loro sono
non un sistema orientato agli oggetti no
oggetti modello nel tuo mondo che non lo sono
quali oggetti sono oggetti sono piccoli
computer sono cose che fanno cose
così vengono chiamati gli oggetti nel tuo mondo
entità che sono sempre state chiamate
entità in cui sono chiamate entità in
modello relazionale si chiamano entità
e database sono chiamati entità
e sono orientati agli oggetti
entità nella modellazione di dominio proprio nel
design principale guidato sono entità
sono cose che hanno stato e loro
avere identità va bene così un oggetto in oo
fa cose con entità e carina
molto qualcosa di interessante richiede l’utilizzo
più entità quindi, ad esempio, se io sono
spostare denaro tra conti
questo è che avrei un oggetto che lo faccia
e avere una transazione di un trasferimento di denaro
oggetto così davvero le cose che pensiamo
come servizi verbi verbo frasi quelli
le cose sono oggetti sono piccoli
i computer e quello che fanno è poco
i computer passano messaggi a vicenda
Va bene così stava parlando in senso figurato questo
è tornato negli anni ’80 sì, noi ora letteralmente
i piccoli computer passano l’immagine che hai visto
alcuni c’era un piccolo mucchio di piccoli
computer qui a destra, se siete nel
Sessione di mangiatori di Kuban ok
letteralmente un piccolo computer, quindi non poteva
l’ho immaginato in quel modo magari colpirlo
giusto ma abbiamo letteralmente poco
computer che combattono i messaggi in questo modo
freddo
va bene il caso del talento è questo e um sì e
quindi ora posso ragionare su un componente
puramente pensandoci in termini di
i messaggi che produce e consuma
giusto e quindi questo significa che posso testare un
componente puramente in termini di
messaggi che produce e consuma quali
è una specie di figo perché ciò significa
ora test funzionali di unit test
test di integrazione di tutti questi tipi
di test tutto crolla nello stesso
spazio che sta testando bene e
sostituendo uno di quei componenti I
sostituire il bit verde che sostituisco il
Interi lascio il hardshell così l’API
definisce esattamente il mio contratto con il
mondo e di nuovo questo è un po ‘utile
quindi i microservizi possono essere sostituibili
l’architettura dei componenti non lo sono
necessariamente e molti dei posti
vederli non stanno bene con il mio manzo
il termine micro-servizi è questo
i micro-servizi suggeriscono che è più piccolo
i micro migliori sono i microsomi che ho
questo servizio di una linea è giusto per te
alla proliferazione di piccoli piccoli
librerie JavaScript e non vi era che
cosa meravigliosa di recente dove qualcuno
rimosso una libreria JavaScript che supporta
spazi sul lato sinistro di una stringa
a quanto pare in questi giorni abbiamo bisogno di una biblioteca
per aggiungere spazi sul lato sinistro di a
stringa oh mia parola perché ciò che è lontano
più complicato scrivere un codice in
aggiungi per capire quanti spazi ho bisogno
aggiungere che aggiungere una dipendenza a a
strumento di gestione delle dipendenze scaricare il
dipendenza tira su internet il
dipendenza tira dipende e poi
rendersi conto che quel pacchetto di dipendenza
richiede un altro pacchetto di dipendenza a
funziona come un programma di installazione delle dipendenze
Volevo aggiungere gli stupidi spazi
ma così possiamo possiamo possiamo andare troppo lontano
con il micro così i micro servizi possono essere
un’architettura componente sostituibile se
Ho scelto di ottimizzare per sostituire la capacità
e coerenza se quelle sono le cose
che mi interessa se quelli sono i
le cose che apprezzo posso ottenere a
componente sostituibile architettura essa
significa che posso ragionare su ciascuno di
questi micro servizi che cosa fa
qual è la sua responsabilità, qual è la sua?
confine e qual è il suo scopo una volta
capire lo scopo di quella cosa io
potrebbe sostituirlo con una cosa diversa
e so che posso farlo
con fiducia e una volta che possiamo iniziare a farlo
quello che crea opzioni per il cambiamento
abilità che crea opzioni per l’agilità
va bene
più piccolo non è necessariamente migliore
non vogliamo servizi più piccoli che vogliamo
servizi sostituibili quindi siamo di più
sostituibile sfortunatamente sostituisce una sfocatura
non è una parola mi piacerebbe che fosse una parola
più sostituibile è meglio va bene così mio
messaggio a voi quindi il mio appello a voi il mio
richiesta per te è questo codice di uccisione
senza paura okay, ricordati che abbiamo
il codice so che abbiamo il codice
tutti sanno che non ho il codice nessuno
lo sa sì , se possiamo uccidere tranquillamente
quel codice significa che siamo in una posizione
dove possiamo muoverci velocemente proprio dove siamo noi
può scorrere rapidamente dove possiamo rispondere
alle esigenze aziendali rapidamente che è
agilità aziendale okay, ricordati che siamo
cercando di ridurre al minimo i tempi di consegna al business
impatto quindi è tutto ciò che ho avuto grazie
tu

Please follow and like us: