SlideShare a Scribd company logo
L’illusione
dell’ortogonalita’
@ziobrando
About me
• Coding since 1982


• … but that’s not what I get paid for


• #DDDesign #Agile #Lean #Complexity


• I invented


• I smell


• I run
Test-Driven Development
Cose che funzionano, ma a volte no
Come funziona?
TDD
Codice affidabile
Aperti ad
opportunita’
Stime piu’ precise
Disponibile alle
evoluzioni
Design Migliore
#Pratiche
#Architettura
#Business
#Processo
#Persone
Se fatto bene…
Piano piano…
Che ci vuole?
TDD non e’ una pratica
strettamente
ingegneristica
#Pratiche
#Architettura
#Business
#Processo
#Persone
Impatti a livello di ansia, pianificazione, e reattivita’ business
Ansia Pianificazione Reattivita’
Sam
Pero’ non sempre
funziona…
Ci sono situazioni in cui queste promesse non vengono mantenute
“I miei colleghi non fanno TDD”
TDD
Commit distruttivi
#Pratiche
#Architettura
#Business
#Processo
#Persone
No TDD
WTF!
Copertura a macchia
di leopardo
Rendiamo Evidente il
contesto
Contesto
Quello che troppo
spesso dimentichiamo, o
e’ sottinteso, ma che
fa la differenza.
🙂
Dove funziona?
TDD
Codice affidabile
Aperti ad
opportunita’
Stime piu’ precise
Disponibile alle
evoluzioni
Design Migliore
#Pratiche
#Architettura
#Business
#Processo
#Persone
Se fatto bene…
Piano piano…
Confini ben precisi Mancava un ingrediente!
Pet Project - POC
Un solo sviluppatore,
su un progetto ben
definito
🙂
Team Agreement
Un team con un
approccio simile su una
porzione ben definita
del sistema.
🙂
Non puo’ funzionare se…
Applico TDD
Commit distruttivi
#Pratiche
#Architettura
#Business
#Processo
#Persone
Non applico TDD
WTF!
Copertura a macchia
di leopardo
Big Ball of Mud
Piu’ sviluppatori, senza
confini precisi.
😳
Big Ball of Mud
Continuo turnover su
una codebase senza
padroni
😳
Confini non definiti
Qualche nota
Il contesto mi serve a capire dove una cosa puo’
funzionare


Guardiamo a quello che in Blog Posts, Articoli, Libri
e’ sottinteso


Per capire il sottinteso devo provare in contesti
diversi (o confrontarmi con colleghi)
I confini contano
Confini
Ricordatevi di Romolo!
Bounded Context
• Unita’ di consistenza del
linguaggio


• Un modello costruito
attorno ad uno scopo ben
preciso
Bounded Context
(Questo l’ho imparato da Domain-Driven Design)
Un singolo scopo
Piu’ Facile ottimizzare per un solo obiettivo
Qui no!
In un BC ben definito il codice DEVE essere semplice
Ma non si tratta solo di
modelli e linguaggi…
Motivation
• Autonomy


• Mastery


• Purpose
https://vimeo.com/15488784
Bounded Context
• Unita’ di consistenza del
linguaggio


• Un modello costruito attorno
ad uno scopo ben preciso


• UN confine che permette
l’implementazione di pratiche
ed accordi “speciali” tra
colleghi


• Un “luogo” dove possiamo fare
la cosa giusta senza
compromessi
Bounded Context
primo progetto enterprise (2001)
In una banca


Stack Tecnologico ‘aggressivo’


Persistenza privata


Domain Model sofisticato


Modello dei dati non convenzionale


Continuous integration


Test Engine
Circolo Virtuoso
Se non funziona, puo’ essere solo colpa nostra


QUINDI


deve funzionare


QUINDI


Lo testiamo
Confini ben definiti
Limitano il rischio


Liberta’ di sperimentare


Focus sull’obiettivo


Empowerment


Condizioni per aumentare la qualita’ del risultato
L’ ecosistema conta!
Ecosistema
Stime!
Guardiamoci meglio
Le ho viste funzionare…
Sprint Planning
Stime precise
Team consolidato
#Pratiche
#Architettura
#Business
#Processo
#Persone
A casa presto
Pianificazione
rispettata
Buona codebase
Team Nuovo
Troppe incognite
😳
Legacy Codebase
Come stimare la ruota
della fortuna!
😳
Escludiamo qualche
contesto…
Una settimana dopo…
Sprint Planning
Stime Sballate del
100%
Team consolidato
#Pratiche
#Architettura
#Business
#Processo
#Persone
Oh Shit!
Buona codebase
Lo stesso team
Dove sta la differenza?
Dipendenze!
Sprint Planning
Stime precise
Team consolidato
#Pratiche
#Architettura
#Business
#Processo
#Persone
A casa presto
Pianificazione
rispettata
Buona codebase
Settimana 1
Attivita’ senza
dipendenze esterne
🙂
Settimana 2
Necessita’ di aiuto
dall’esterno
😳
No dipendenze
I confini contano
Ma sono difficili da difendere
Field notes
E’ difficile - ma non impossibile - stimare il nostro
lavoro


Stimare zone ad alta incertezza (Legacy pericoloso o
attivita’ altrui) ha margini di errore decisamente piu’
alti.


…Ne vale ancora la pena…?
Le dipendenze contano
dipendenze
Processo
Anche quando vorremmo che fosse solo un problema di
Abbiamo
problemi a
scalare agile…
“Forse”
avete un problema
di architettura
Coordinamento tra team?
Idealmente…
Team A
Team B
Team C
Team D
Progetto 1
Progetto 2 Progetto 4
Progetto 3
Progetto 5 Progetto 6
Progetto 7 Progetto 8
In pratica, bastano un po’ di
dipendenze…
Team A
Team B
Team C
Team D
Progetto 1
Progetto 2 Progetto 4
Progetto 3
Progetto 5 Progetto 6
Progetto 7 Progetto 8
1
2
5 6
4
3
Non sono escrescenze, sono straordinari
Questo non e’ accettabile
Team A
Team B
Team C
Team D
Progetto 1
Progetto 2
Progetto 4
Progetto 3
Progetto 5 Progetto 6
Progetto 7 1
2
5 6 4
3
Probabilmente il progetto più importante
Non li pago per
stare fermi
Ma questo e’ ancora meno
accettabile
Team A
Team B
Team C
Team D
Progetto 2
Progetto 5
Progetto 7 2
5 Probabilmente il progetto più importante
Quindi: teniamo fisse le date e
andiamo di overtime!
Team A
Team B
Team C
Team D
Progetto 1
Progetto 2 Progetto 4
Progetto 3
Progetto 5 Progetto 6
Progetto 7 Progetto 8
1
2
5 6
4
3
Dipendenze
Il miglior antidoto alla scalabilita’
Dipendenze
Chi le ha lasciate in giro?
Il mammut nel guardaroba
Abbiamo un problema
Purtroppo
Data-driven Design
Dipendenze
Frenone
Effort di
Coordinamento
Stress
Centralizzazione
Focus sui nomi
Ma stiamo
passando a
Microservizi!
Lo stile di modellazione incentrato sul dato porta a costruire sistemi che
inevitabilmente generano dipendenze dannose
Guardando il dato (O i nomi)
Articolo
Prezzo
Disponibilita’
Cliente
Carrello Articolo
Prezzo
Pagamento
Ordine
Articolo
Prezzo
Cliente Cliente
Ordine
Ordine
Pagamento
Consegna
Cliente
Reclamo
Cliente
Ordine
Fattura
Articolo
Alcuni Termini sono usati quasi dappertutto: -> centralizziamo
Articolo
Business flow
Catalogo Acquisto Gestione ordine Delivery Claim
Spinta verso la centralizzazione
Mi
serve il
cliente!
Mi
serve il
cliente!
Mi
serve il
cliente!
Guardando il comportamento
Articolo
Prezzo
Disponibilita’
Cliente
Carrello
Articolo
Prezzo
Pagamento
Ordine
Articolo
Prezzo
Cliente
Cliente
Ordine
Ordine
Pagamento
Consegna Cliente
Reclamo
Cliente
Ordine
Fattura
Articolo
Il dato e’ lo stesso, ma il comportamento e’ diverso -> Possibili modelli diversi, copie o
altre opzioni architettura.
Articolo
Business flow
Registra
Completa
Autorizza
Aggiungi


Rimuovi


Checkout
Aggiungi a catalogo
Ritira
Modifica descrizione
Aggiorna
Cliente
Disponibilita’ Totale
Carrello
attiva


gestisci


chiudi
attiva


gestisci


chiudi
Cambia stato
Sola lettura
Catalogo Acquisto
Gestione ordine
Delivery Claim
Payment
Magazzino
Billing
Un’altra storia!
Event-driven Design
Dipendenze “leggere”
Piu’ spazio per
evoluzione
Coordinamento
ridotto
Meno riunioni
Partizionamento
Focus su eventi chiave
Piano piano…
Meno Stakeholders
I Microservizi (da soli) non
basteranno
Portare un modello data-
centrico a microservizi


Significa annegare nelle
dipendenze
Field Notes
Il focus sul dato ci porta a centralizzare (molti
stakeholder per componente)


Focus sul flusso (comportamenti ed eventi) ci porta a
vedere altri confini (e pochi stakeholder per
componente) Enterprise software
Collaborazione fra
team e dipartimenti
diversi
🙂
High Coesion


Low Coupling
Meno riunioni con troppa
gente
Pairing!
O meglio: facciamo esperimenti riducendo il WiP Limit
Quando funziona…
WiP a 1
Rilascio piu’ rapido
Collaborazione
#Pratiche
#Architettura
#Business
#Processo
#Persone
Aperitivo!
Design sulla
frontiera
Cliente contento
Riproviamo!
Ha funzionato una volta…
Quando NON funziona…
WiP a 1
Piu’ lenti…?
Uno sulla tastiera
#Pratiche
#Architettura
#Business
#Processo
#Persone
Cosa sta
succedendo?
Devo dargli ragione?
Guardiamoci meglio!
Quando funziona…
WiP a 1
Rilascio piu’ rapido
Collaborazione
#Pratiche
#Architettura
#Business
#Processo
#Persone
Aperitivo!
Design sulla
frontiera
Cliente contento
OOP ed architettura
Domain-Centric
Posso splittare classi
ed interfacce
🙂
Logica nel dominio
(OOP)
Quando NON funziona…
WiP a 1
Piu’ lenti…?
Uno sulla tastiera
#Pratiche
#Architettura
#Business
#Processo
#Persone
Tre umarells a
guardare
Logica nelle stored
procedure
Strati web come
passacarte
😳
Logica nelle Stored
Non si e’ accorto di
nulla!
E il business…?
Data-centric
Architecture
Certe architetture
invalidano le pratiche
Architetture
Pratiche
… ma se leggi
bene bene tra le
righe…
Ho appena cominciato
E’ molto peggio di cosi’
Logica Nelle stored
E’ tempo di guardarci meglio
Riapriamo il processo?
Forse, sono emerse nuove prove…
https://vimeo.com/253336751
Usiamo le
stored procedures
per migliorare le
performances Ci vogliono 18
minuti per
completare una
query!
Pensa quanto
ci vorrebbe se la
logica non fosse
vicino al dato!
Tempo e ripetizioni
Cosa c’e’ dietro alla freccia?
Un giorno qualsiasi
#Pratiche
#Architettura
#Business
#Processo
#Persone
Logica nelle stored
procedure
???
Nuovo requisito
business
Chi se ne occupa?
Chi se ne occupa?
Al giorno zero…
Il cuore del nostro
sistema, l’infrastruttura
che non puo’ cedere
Requisito Business
Un ipotetico team di
persone ugualmente
competenti
Competenza
A chi affidereste
l’attivita’?
Stored Procedures
Posso fare io!
Posso
fare anche io, e’
uguale…
#Pratiche
#Architettura
#Business
#Processo
#Persone
Solo
programming
Il risultato?
Competenza
Un po’ piu’ competente, perche’ ci ha messo le mani…
Un po’ meno competenti, perche’ non conoscono le ultime modifiche…
Stored Procedures
Il giorno successivo:
Requisito Business
Competenza
Stored Procedures
A chi affidereste
l’attivita’?
Abbiamo una asimmetria!
Il risultato:
Nuovo requisito
Competenza
Stored Procedures
L’asimmetria tende
naturalmente ad
aumentare…
E’ meglio se
lo fai tu…
Non sono
allineato con le
ultime
Prima o poi…
Requisiti critici
Stored Procedures Collo di bottiglia
Burnout
Competenze
asimmetriche
Ansia Turnover
Requisiti critici
Requisiti critici
Business in ritardo
#Pratiche
#Architettura
#Business
#Processo
#Persone
Solo
programming
Il destino
dell’universo
Posso
aiutarti?
No, mi
rallenti
Ciao ragazzi,
e’ stato bello…
Ineluttabilita’
E’ tutto tranne che sfortuna
Illusione del libero arbitrio
• Le stored procedure non facilitano la collaborazione


• Lavoreremo principalmente da soli


• Asimmetria sulle competenze


• Specializzazione


• colli di bottiglia


• Tensione e stress


• Maggior probabilita’ di turnover


• Scadenze business difficilmente raggiungibili
Quindi
Quindi
Quindi
Quindi
Quindi
Quindi
Quindi
Posso accettare un ‘molto probabilmente’ … ma temo che il risultato non cambi
C’e’ un filo rosso che
collega un’architettura data-
centric


al planning non rispettato,


All’apparizione di un ambiente
malsano ed al rallentamento
dell’evoluzione business
Non e’ sfortuna
E’ sulla linea di confine tra correlazione e causalita’ diretta
Possiamo fare
pairing per
condividere la
conoscenza!
Possiamo
fare le stored
procedure in TDD
per essere piu’
sicuri
Lo Yeti!
Non posso escludere che
esista, ma nessuno l’ha
mai visto…
Forse
l’architettura
esagonale ci e’
sfuggita un po’ di
mano…
Non abbiamo alcuna notizia di
aziende che cerchino aiuto per
uscire dall’architettura esagonale
Forse, Alcune architetture sono piu’ reversibili di altre
L’illusione
dell’ortogonalita’
Potrei seppellirvi di esempi, ma devo arrivare a qualche conclusione
Che problema ho con il
database e le stored
procedures?
Non tutte le dipendenze sono uguali
• Non servono cliniche per
curarmi
Il mio problema e’ che ci
sono aziende che hanno
questo problema da 20 anni
E forse e’ troppo tardi per salvare tutti
Pero’ possiamo evitare che
si ripeta
Magari osservando quei piccoli “segnali deboli” che sono sotto i
nostri occhi.
Sociotecnico
Interrelazione tra aspetti sociali e tecnici di un’organizzazione


- L’interazione tra fattori sociali e tecnici crea le condizioni
per la performance di un’organizzazione, in maniera lineare e
non-lineare.


- L’ottimizzazione di uno di questi aspetti indipendentemente
dall’altro tende a far aumentare l’instabilita’ del sistema
con relazioni non previste, ed a farne peggiorare il
rendimento
Liberamente tradotto da…


https://en.wikipedia.org/wiki/Sociotechnical_system
#Pratiche
#Architettura
#Business
#Processo
#Persone
La dimensione del problema
Bolle nate come soluzione tecnologica (come
partizionare un grafo per aumentare la velocita’)


L’algoritmo ha innescato comportamenti nuovi a
livello individuale e collettivo


Il nuovo paradigma ha reso possibili - e convenienti -
strategie mirate per influenzare elezioni, etc.
Restando a noi…
1. Non possiamo risolvere
problemi da specialisti
#Pratiche
#Architettura
#Business
#Processo
#Persone
Non possiamo risolvere i
problemi da soli
#Pratiche
#Architettura
#Business
#Processo
#Persone
Se accettiamo il principio…
Q
u
e
s
t
a
d
i
v
i
s
i
o
n
e
n
o
n
e
’
p
i
u
’
c
o
s
i
’
n
e
t
t
a
“Non preoccupo dei tools”
E’ un’affermazione che potrebbe fare Sam
2. I dettagli fanno la differenza
• Architetture, processi e tools Impattano e vincolano
individui ed interazioni


• Individui ed interazioni sono piu’ importanti, ma non
riusciremo a proteggerli se abbassiamo la guardia su
architetture processi e strumenti.


• Osserviamo ed analizziamo le interazioni, poi adattiamo
gli strumenti per permettere interazioni positive
Non e’ uguale
Board fisica
• Vincoli fisici,


• Policy esplicite


• Discussione in un luogo ben preciso


• Peso sul richiedente
Ho una nuova
feature per la settimana
prossima, dove la posso
mettere che non c’e’
posto?
Board digitale
• Sensazione che ci sia
posto…


• Un lieve sentore di
rosso


• Policy quasi mai visibili
Metto in selected, poi ci
penseranno loro
Non e’ uguale
Stiamo dando forma a due interazioni diametralmente opposte
Architetture, Processi e Tools
Gli strumenti inducono alcuni gesti invece che altri


Piccoli gesti ripetuti ed accumulati ci portano lontano
dell’obiettivo.


Il caso non e’ nostro alleato: dobbiamo pensarci noi,
ma per questo dobbiamo proteggere i confini.
3. Proteggiamo i confini!
• Non lasciamo che siano altri, o il
fato a decidere come portare a casa
il risultato #SkinInTheGame


• Costruiamo un luogo dove poter
sperimentare e trovare la NOSTRA
strada giusta
Qui possiamo
fare grandi cose
BTW: lasciare i team
liberi di scegliere il loro
stack, sembra essere una
strategia vincente
Minimizziamo le dipendenze
Analizzare I flussi di business con il focus sul comportamento
aiuta a trovare i confini naturali per minimizzare le dipendenze.




Dipendenze Sbagliate -> Death by Coordination Meetings


(“Massimizzare il lavoro non fatto”)
#Pratiche
#Architettura
#Business
#Processo
#Persone
E Sam?
4. Provate!
Si impara dagli esperimenti ed anche dagli errori!


Non fidatevi degli esperti da bar…


Contesto
Quello che troppo
spesso dimentichiamo,
ma che fa la differenza.
🙂

More Related Content

What's hot

Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)
Alberto Brandolini
 
Idea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionIdea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw edition
Alberto Brandolini
 
Chasing elephants
Chasing elephantsChasing elephants
Chasing elephants
Alberto Brandolini
 
What lies beneath
What lies beneathWhat lies beneath
What lies beneath
Alberto Brandolini
 
Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStorming
Alberto Brandolini
 
It's not simple at all
It's not simple at allIt's not simple at all
It's not simple at all
Alberto Brandolini
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimation
Alberto Brandolini
 
Rethinking enterprise software - Codemotion 2014
Rethinking enterprise software - Codemotion 2014Rethinking enterprise software - Codemotion 2014
Rethinking enterprise software - Codemotion 2014
Alberto Brandolini
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Alberto Brandolini
 
Extreme DDD modelling
Extreme DDD modellingExtreme DDD modelling
Extreme DDD modelling
Alberto Brandolini
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio managementAlberto Brandolini
 
The precision blade
The precision bladeThe precision blade
The precision blade
Alberto Brandolini
 
Pissing against the wind
Pissing against the windPissing against the wind
Pissing against the wind
Alberto Brandolini
 
Top 10 Things To Do If You Want To Get Fired Over A WordPress Project
Top 10 Things To Do If You Want To Get Fired Over A WordPress ProjectTop 10 Things To Do If You Want To Get Fired Over A WordPress Project
Top 10 Things To Do If You Want To Get Fired Over A WordPress Project
William Bergmann
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
Gabriel Paunescu 🤖
 
Keeping Your Product Owner Productive
Keeping Your Product Owner ProductiveKeeping Your Product Owner Productive
Keeping Your Product Owner Productive
Clinton Wolfe
 
Hiring a developer: step by step debugging
Hiring a developer: step by step debuggingHiring a developer: step by step debugging
Hiring a developer: step by step debugging
Laurent Cerveau
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
David Benjamin
 
Why projects fail
Why projects failWhy projects fail
Why projects fail
Ponto GP
 
Spartez Open Day March 13th 2015
Spartez Open Day March 13th 2015Spartez Open Day March 13th 2015
Spartez Open Day March 13th 2015
Wojciech Seliga
 

What's hot (20)

Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)
 
Idea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionIdea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw edition
 
Chasing elephants
Chasing elephantsChasing elephants
Chasing elephants
 
What lies beneath
What lies beneathWhat lies beneath
What lies beneath
 
Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStorming
 
It's not simple at all
It's not simple at allIt's not simple at all
It's not simple at all
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimation
 
Rethinking enterprise software - Codemotion 2014
Rethinking enterprise software - Codemotion 2014Rethinking enterprise software - Codemotion 2014
Rethinking enterprise software - Codemotion 2014
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
 
Extreme DDD modelling
Extreme DDD modellingExtreme DDD modelling
Extreme DDD modelling
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio management
 
The precision blade
The precision bladeThe precision blade
The precision blade
 
Pissing against the wind
Pissing against the windPissing against the wind
Pissing against the wind
 
Top 10 Things To Do If You Want To Get Fired Over A WordPress Project
Top 10 Things To Do If You Want To Get Fired Over A WordPress ProjectTop 10 Things To Do If You Want To Get Fired Over A WordPress Project
Top 10 Things To Do If You Want To Get Fired Over A WordPress Project
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
 
Keeping Your Product Owner Productive
Keeping Your Product Owner ProductiveKeeping Your Product Owner Productive
Keeping Your Product Owner Productive
 
Hiring a developer: step by step debugging
Hiring a developer: step by step debuggingHiring a developer: step by step debugging
Hiring a developer: step by step debugging
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
 
Why projects fail
Why projects failWhy projects fail
Why projects fail
 
Spartez Open Day March 13th 2015
Spartez Open Day March 13th 2015Spartez Open Day March 13th 2015
Spartez Open Day March 13th 2015
 

Similar to L'illusione dell'ortogonalità

Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile designIgor Moochnick
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
Marcello Duarte
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Clean Code Software Engineering
Clean Code Software Engineering Clean Code Software Engineering
Clean Code Software Engineering
Inocentshuja Ahmad
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential SkillsJohn Choi
 
Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015
Holger Bartel
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersZeroTurnaround
 
Code Quality Makes Your Job Easier
Code Quality Makes Your Job EasierCode Quality Makes Your Job Easier
Code Quality Makes Your Job Easier
Tonya Mork
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
Christian Heilmann
 
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Rien van den Bosch
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
lokori
 
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...
Wojciech Seliga
 
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
IngridBuenaventura
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software Development
Sven Peters
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy
Wojciech Seliga
 
Twenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going CrazyTwenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going Crazy
Ciklum Ukraine
 
NoOps for noobs; why i think Devs do not need Ops
NoOps for noobs; why i think Devs do not need OpsNoOps for noobs; why i think Devs do not need Ops
NoOps for noobs; why i think Devs do not need Ops
Geert van der Cruijsen
 
Architecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to SuccessArchitecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to Success
Randy Williams
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
Utkarsh Khare
 

Similar to L'illusione dell'ortogonalità (20)

Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
Pair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical thingsPair Programming, TDD and other impractical things
Pair Programming, TDD and other impractical things
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Clean Code Software Engineering
Clean Code Software Engineering Clean Code Software Engineering
Clean Code Software Engineering
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential Skills
 
Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015Form Function Class 6, Manila, Philippines 14/11/2015
Form Function Class 6, Manila, Philippines 14/11/2015
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
 
Code Quality Makes Your Job Easier
Code Quality Makes Your Job EasierCode Quality Makes Your Job Easier
Code Quality Makes Your Job Easier
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
Brand Commerce - We all know the shiny stuff at the front. But what magic is ...
 
Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013Agilelessons scanagile-final 2013
Agilelessons scanagile-final 2013
 
Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...Ten lessons I painfully learnt while moving from software developer to entrep...
Ten lessons I painfully learnt while moving from software developer to entrep...
 
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
By Thoughtworks | Reviving the art of software design with Andy Marks and Pam...
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software Development
 
10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy10 bezcennych lekcji dla software developera stającego się szefem firmy
10 bezcennych lekcji dla software developera stającego się szefem firmy
 
Twenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going CrazyTwenty Startups A Year Without Going Crazy
Twenty Startups A Year Without Going Crazy
 
NoOps for noobs; why i think Devs do not need Ops
NoOps for noobs; why i think Devs do not need OpsNoOps for noobs; why i think Devs do not need Ops
NoOps for noobs; why i think Devs do not need Ops
 
Architecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to SuccessArchitecting Solutions and Systems – Randy’s Secrets to Success
Architecting Solutions and Systems – Randy’s Secrets to Success
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 

More from Alberto Brandolini

La fatina dei denti
La fatina dei dentiLa fatina dei denti
La fatina dei denti
Alberto Brandolini
 
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
Alberto Brandolini
 
Optimized for what
Optimized for whatOptimized for what
Optimized for what
Alberto Brandolini
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise software
Alberto Brandolini
 
Managing debt remastered
Managing debt remasteredManaging debt remastered
Managing debt remastered
Alberto Brandolini
 
Liberate il kraken
Liberate il krakenLiberate il kraken
Liberate il kraken
Alberto Brandolini
 
Bullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkBullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talk
Alberto Brandolini
 
Idea - post-it - test verdi.
Idea - post-it - test verdi.Idea - post-it - test verdi.
Idea - post-it - test verdi.
Alberto Brandolini
 
Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...
Alberto Brandolini
 
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Alberto Brandolini
 
Model storming
Model stormingModel storming
Model storming
Alberto Brandolini
 

More from Alberto Brandolini (11)

La fatina dei denti
La fatina dei dentiLa fatina dei denti
La fatina dei denti
 
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
 
Optimized for what
Optimized for whatOptimized for what
Optimized for what
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise software
 
Managing debt remastered
Managing debt remasteredManaging debt remastered
Managing debt remastered
 
Liberate il kraken
Liberate il krakenLiberate il kraken
Liberate il kraken
 
Bullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkBullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talk
 
Idea - post-it - test verdi.
Idea - post-it - test verdi.Idea - post-it - test verdi.
Idea - post-it - test verdi.
 
Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...
 
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...
 
Model storming
Model stormingModel storming
Model storming
 

Recently uploaded

Senior Project and Engineering Leader Jim Smith.pdf
Senior Project and Engineering Leader Jim Smith.pdfSenior Project and Engineering Leader Jim Smith.pdf
Senior Project and Engineering Leader Jim Smith.pdf
Jim Smith
 
TCS AI for Business Study – Key Findings
TCS AI for Business Study – Key FindingsTCS AI for Business Study – Key Findings
TCS AI for Business Study – Key Findings
Tata Consultancy Services
 
Leadership Ethics and Change, Purpose to Impact Plan
Leadership Ethics and Change, Purpose to Impact PlanLeadership Ethics and Change, Purpose to Impact Plan
Leadership Ethics and Change, Purpose to Impact Plan
Muhammad Adil Jamil
 
Founder-Game Director Workshop (Session 1)
Founder-Game Director  Workshop (Session 1)Founder-Game Director  Workshop (Session 1)
Founder-Game Director Workshop (Session 1)
Amir H. Fassihi
 
SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....
SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....
SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....
juniourjohnstone
 
一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证
一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证
一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证
gcljeuzdu
 
Training- integrated management system (iso)
Training- integrated management system (iso)Training- integrated management system (iso)
Training- integrated management system (iso)
akaash13
 
W.H.Bender Quote 65 - The Team Member and Guest Experience
W.H.Bender Quote 65 - The Team Member and Guest ExperienceW.H.Bender Quote 65 - The Team Member and Guest Experience
W.H.Bender Quote 65 - The Team Member and Guest Experience
William (Bill) H. Bender, FCSI
 
Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...
Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...
Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...
CIOWomenMagazine
 
Case Analysis - The Sky is the Limit | Principles of Management
Case Analysis - The Sky is the Limit | Principles of ManagementCase Analysis - The Sky is the Limit | Principles of Management
Case Analysis - The Sky is the Limit | Principles of Management
A. F. M. Rubayat-Ul Jannat
 

Recently uploaded (10)

Senior Project and Engineering Leader Jim Smith.pdf
Senior Project and Engineering Leader Jim Smith.pdfSenior Project and Engineering Leader Jim Smith.pdf
Senior Project and Engineering Leader Jim Smith.pdf
 
TCS AI for Business Study – Key Findings
TCS AI for Business Study – Key FindingsTCS AI for Business Study – Key Findings
TCS AI for Business Study – Key Findings
 
Leadership Ethics and Change, Purpose to Impact Plan
Leadership Ethics and Change, Purpose to Impact PlanLeadership Ethics and Change, Purpose to Impact Plan
Leadership Ethics and Change, Purpose to Impact Plan
 
Founder-Game Director Workshop (Session 1)
Founder-Game Director  Workshop (Session 1)Founder-Game Director  Workshop (Session 1)
Founder-Game Director Workshop (Session 1)
 
SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....
SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....
SOCIO-ANTHROPOLOGY FACULTY OF NURSING.....
 
一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证
一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证
一比一原版杜克大学毕业证(Duke毕业证)成绩单留信认证
 
Training- integrated management system (iso)
Training- integrated management system (iso)Training- integrated management system (iso)
Training- integrated management system (iso)
 
W.H.Bender Quote 65 - The Team Member and Guest Experience
W.H.Bender Quote 65 - The Team Member and Guest ExperienceW.H.Bender Quote 65 - The Team Member and Guest Experience
W.H.Bender Quote 65 - The Team Member and Guest Experience
 
Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...
Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...
Oprah Winfrey: A Leader in Media, Philanthropy, and Empowerment | CIO Women M...
 
Case Analysis - The Sky is the Limit | Principles of Management
Case Analysis - The Sky is the Limit | Principles of ManagementCase Analysis - The Sky is the Limit | Principles of Management
Case Analysis - The Sky is the Limit | Principles of Management
 

L'illusione dell'ortogonalità

  • 2. About me • Coding since 1982 • … but that’s not what I get paid for • #DDDesign #Agile #Lean #Complexity • I invented • I smell • I run
  • 3. Test-Driven Development Cose che funzionano, ma a volte no
  • 4. Come funziona? TDD Codice affidabile Aperti ad opportunita’ Stime piu’ precise Disponibile alle evoluzioni Design Migliore #Pratiche #Architettura #Business #Processo #Persone Se fatto bene… Piano piano… Che ci vuole?
  • 5. TDD non e’ una pratica strettamente ingegneristica #Pratiche #Architettura #Business #Processo #Persone Impatti a livello di ansia, pianificazione, e reattivita’ business Ansia Pianificazione Reattivita’
  • 6. Sam
  • 7.
  • 8. Pero’ non sempre funziona… Ci sono situazioni in cui queste promesse non vengono mantenute
  • 9. “I miei colleghi non fanno TDD” TDD Commit distruttivi #Pratiche #Architettura #Business #Processo #Persone No TDD WTF! Copertura a macchia di leopardo
  • 10.
  • 11. Rendiamo Evidente il contesto Contesto Quello che troppo spesso dimentichiamo, o e’ sottinteso, ma che fa la differenza. 🙂
  • 12. Dove funziona? TDD Codice affidabile Aperti ad opportunita’ Stime piu’ precise Disponibile alle evoluzioni Design Migliore #Pratiche #Architettura #Business #Processo #Persone Se fatto bene… Piano piano… Confini ben precisi Mancava un ingrediente! Pet Project - POC Un solo sviluppatore, su un progetto ben definito 🙂 Team Agreement Un team con un approccio simile su una porzione ben definita del sistema. 🙂
  • 13. Non puo’ funzionare se… Applico TDD Commit distruttivi #Pratiche #Architettura #Business #Processo #Persone Non applico TDD WTF! Copertura a macchia di leopardo Big Ball of Mud Piu’ sviluppatori, senza confini precisi. 😳 Big Ball of Mud Continuo turnover su una codebase senza padroni 😳 Confini non definiti
  • 14. Qualche nota Il contesto mi serve a capire dove una cosa puo’ funzionare Guardiamo a quello che in Blog Posts, Articoli, Libri e’ sottinteso Per capire il sottinteso devo provare in contesti diversi (o confrontarmi con colleghi)
  • 15.
  • 16.
  • 18. Bounded Context • Unita’ di consistenza del linguaggio • Un modello costruito attorno ad uno scopo ben preciso Bounded Context (Questo l’ho imparato da Domain-Driven Design)
  • 19. Un singolo scopo Piu’ Facile ottimizzare per un solo obiettivo
  • 20.
  • 21. Qui no! In un BC ben definito il codice DEVE essere semplice
  • 22. Ma non si tratta solo di modelli e linguaggi…
  • 23. Motivation • Autonomy • Mastery • Purpose https://vimeo.com/15488784
  • 24. Bounded Context • Unita’ di consistenza del linguaggio • Un modello costruito attorno ad uno scopo ben preciso • UN confine che permette l’implementazione di pratiche ed accordi “speciali” tra colleghi • Un “luogo” dove possiamo fare la cosa giusta senza compromessi Bounded Context
  • 25. primo progetto enterprise (2001) In una banca Stack Tecnologico ‘aggressivo’ Persistenza privata Domain Model sofisticato Modello dei dati non convenzionale Continuous integration Test Engine
  • 26. Circolo Virtuoso Se non funziona, puo’ essere solo colpa nostra 
 QUINDI 
 deve funzionare 
 QUINDI Lo testiamo
  • 27. Confini ben definiti Limitano il rischio Liberta’ di sperimentare Focus sull’obiettivo Empowerment Condizioni per aumentare la qualita’ del risultato
  • 30. Le ho viste funzionare… Sprint Planning Stime precise Team consolidato #Pratiche #Architettura #Business #Processo #Persone A casa presto Pianificazione rispettata Buona codebase Team Nuovo Troppe incognite 😳 Legacy Codebase Come stimare la ruota della fortuna! 😳 Escludiamo qualche contesto…
  • 31. Una settimana dopo… Sprint Planning Stime Sballate del 100% Team consolidato #Pratiche #Architettura #Business #Processo #Persone Oh Shit! Buona codebase Lo stesso team
  • 32. Dove sta la differenza?
  • 33. Dipendenze! Sprint Planning Stime precise Team consolidato #Pratiche #Architettura #Business #Processo #Persone A casa presto Pianificazione rispettata Buona codebase Settimana 1 Attivita’ senza dipendenze esterne 🙂 Settimana 2 Necessita’ di aiuto dall’esterno 😳 No dipendenze
  • 34. I confini contano Ma sono difficili da difendere
  • 35. Field notes E’ difficile - ma non impossibile - stimare il nostro lavoro Stimare zone ad alta incertezza (Legacy pericoloso o attivita’ altrui) ha margini di errore decisamente piu’ alti. …Ne vale ancora la pena…?
  • 36. Le dipendenze contano dipendenze Processo Anche quando vorremmo che fosse solo un problema di Abbiamo problemi a scalare agile… “Forse” avete un problema di architettura
  • 38. Idealmente… Team A Team B Team C Team D Progetto 1 Progetto 2 Progetto 4 Progetto 3 Progetto 5 Progetto 6 Progetto 7 Progetto 8
  • 39. In pratica, bastano un po’ di dipendenze… Team A Team B Team C Team D Progetto 1 Progetto 2 Progetto 4 Progetto 3 Progetto 5 Progetto 6 Progetto 7 Progetto 8 1 2 5 6 4 3 Non sono escrescenze, sono straordinari
  • 40. Questo non e’ accettabile Team A Team B Team C Team D Progetto 1 Progetto 2 Progetto 4 Progetto 3 Progetto 5 Progetto 6 Progetto 7 1 2 5 6 4 3 Probabilmente il progetto più importante Non li pago per stare fermi
  • 41. Ma questo e’ ancora meno accettabile Team A Team B Team C Team D Progetto 2 Progetto 5 Progetto 7 2 5 Probabilmente il progetto più importante
  • 42. Quindi: teniamo fisse le date e andiamo di overtime! Team A Team B Team C Team D Progetto 1 Progetto 2 Progetto 4 Progetto 3 Progetto 5 Progetto 6 Progetto 7 Progetto 8 1 2 5 6 4 3
  • 43. Dipendenze Il miglior antidoto alla scalabilita’
  • 44. Dipendenze Chi le ha lasciate in giro?
  • 45. Il mammut nel guardaroba
  • 47. Purtroppo Data-driven Design Dipendenze Frenone Effort di Coordinamento Stress Centralizzazione Focus sui nomi Ma stiamo passando a Microservizi! Lo stile di modellazione incentrato sul dato porta a costruire sistemi che inevitabilmente generano dipendenze dannose
  • 48. Guardando il dato (O i nomi) Articolo Prezzo Disponibilita’ Cliente Carrello Articolo Prezzo Pagamento Ordine Articolo Prezzo Cliente Cliente Ordine Ordine Pagamento Consegna Cliente Reclamo Cliente Ordine Fattura Articolo Alcuni Termini sono usati quasi dappertutto: -> centralizziamo Articolo Business flow Catalogo Acquisto Gestione ordine Delivery Claim
  • 49. Spinta verso la centralizzazione Mi serve il cliente! Mi serve il cliente! Mi serve il cliente!
  • 50. Guardando il comportamento Articolo Prezzo Disponibilita’ Cliente Carrello Articolo Prezzo Pagamento Ordine Articolo Prezzo Cliente Cliente Ordine Ordine Pagamento Consegna Cliente Reclamo Cliente Ordine Fattura Articolo Il dato e’ lo stesso, ma il comportamento e’ diverso -> Possibili modelli diversi, copie o altre opzioni architettura. Articolo Business flow Registra Completa Autorizza Aggiungi Rimuovi Checkout Aggiungi a catalogo Ritira Modifica descrizione Aggiorna Cliente Disponibilita’ Totale Carrello attiva 
 gestisci 
 chiudi attiva 
 gestisci 
 chiudi Cambia stato Sola lettura Catalogo Acquisto Gestione ordine Delivery Claim Payment Magazzino Billing
  • 51. Un’altra storia! Event-driven Design Dipendenze “leggere” Piu’ spazio per evoluzione Coordinamento ridotto Meno riunioni Partizionamento Focus su eventi chiave Piano piano… Meno Stakeholders
  • 52. I Microservizi (da soli) non basteranno
  • 53. Portare un modello data- centrico a microservizi Significa annegare nelle dipendenze
  • 54. Field Notes Il focus sul dato ci porta a centralizzare (molti stakeholder per componente) Focus sul flusso (comportamenti ed eventi) ci porta a vedere altri confini (e pochi stakeholder per componente) Enterprise software Collaborazione fra team e dipartimenti diversi 🙂
  • 56. Meno riunioni con troppa gente
  • 57. Pairing! O meglio: facciamo esperimenti riducendo il WiP Limit
  • 58. Quando funziona… WiP a 1 Rilascio piu’ rapido Collaborazione #Pratiche #Architettura #Business #Processo #Persone Aperitivo! Design sulla frontiera Cliente contento
  • 59.
  • 61. Quando NON funziona… WiP a 1 Piu’ lenti…? Uno sulla tastiera #Pratiche #Architettura #Business #Processo #Persone Cosa sta succedendo?
  • 62.
  • 63.
  • 65. Quando funziona… WiP a 1 Rilascio piu’ rapido Collaborazione #Pratiche #Architettura #Business #Processo #Persone Aperitivo! Design sulla frontiera Cliente contento OOP ed architettura Domain-Centric Posso splittare classi ed interfacce 🙂 Logica nel dominio (OOP)
  • 66. Quando NON funziona… WiP a 1 Piu’ lenti…? Uno sulla tastiera #Pratiche #Architettura #Business #Processo #Persone Tre umarells a guardare Logica nelle stored procedure Strati web come passacarte 😳 Logica nelle Stored Non si e’ accorto di nulla! E il business…? Data-centric Architecture
  • 67. Certe architetture invalidano le pratiche Architetture Pratiche
  • 68. … ma se leggi bene bene tra le righe…
  • 69. Ho appena cominciato E’ molto peggio di cosi’
  • 70. Logica Nelle stored E’ tempo di guardarci meglio
  • 71. Riapriamo il processo? Forse, sono emerse nuove prove… https://vimeo.com/253336751
  • 72.
  • 73. Usiamo le stored procedures per migliorare le performances Ci vogliono 18 minuti per completare una query! Pensa quanto ci vorrebbe se la logica non fosse vicino al dato!
  • 74. Tempo e ripetizioni Cosa c’e’ dietro alla freccia?
  • 75. Un giorno qualsiasi #Pratiche #Architettura #Business #Processo #Persone Logica nelle stored procedure ??? Nuovo requisito business Chi se ne occupa? Chi se ne occupa?
  • 76. Al giorno zero… Il cuore del nostro sistema, l’infrastruttura che non puo’ cedere Requisito Business Un ipotetico team di persone ugualmente competenti Competenza A chi affidereste l’attivita’? Stored Procedures Posso fare io! Posso fare anche io, e’ uguale… #Pratiche #Architettura #Business #Processo #Persone Solo programming
  • 77. Il risultato? Competenza Un po’ piu’ competente, perche’ ci ha messo le mani… Un po’ meno competenti, perche’ non conoscono le ultime modifiche… Stored Procedures
  • 78. Il giorno successivo: Requisito Business Competenza Stored Procedures A chi affidereste l’attivita’? Abbiamo una asimmetria!
  • 79. Il risultato: Nuovo requisito Competenza Stored Procedures L’asimmetria tende naturalmente ad aumentare… E’ meglio se lo fai tu… Non sono allineato con le ultime
  • 80. Prima o poi… Requisiti critici Stored Procedures Collo di bottiglia Burnout Competenze asimmetriche Ansia Turnover Requisiti critici Requisiti critici Business in ritardo #Pratiche #Architettura #Business #Processo #Persone Solo programming Il destino dell’universo Posso aiutarti? No, mi rallenti Ciao ragazzi, e’ stato bello…
  • 81.
  • 83.
  • 84.
  • 85. Illusione del libero arbitrio • Le stored procedure non facilitano la collaborazione • Lavoreremo principalmente da soli • Asimmetria sulle competenze • Specializzazione • colli di bottiglia • Tensione e stress • Maggior probabilita’ di turnover • Scadenze business difficilmente raggiungibili Quindi Quindi Quindi Quindi Quindi Quindi Quindi Posso accettare un ‘molto probabilmente’ … ma temo che il risultato non cambi
  • 86.
  • 87.
  • 88.
  • 89. C’e’ un filo rosso che collega un’architettura data- centric 
 al planning non rispettato, All’apparizione di un ambiente malsano ed al rallentamento dell’evoluzione business
  • 90. Non e’ sfortuna E’ sulla linea di confine tra correlazione e causalita’ diretta
  • 91. Possiamo fare pairing per condividere la conoscenza! Possiamo fare le stored procedure in TDD per essere piu’ sicuri
  • 92. Lo Yeti! Non posso escludere che esista, ma nessuno l’ha mai visto…
  • 93.
  • 95. Non abbiamo alcuna notizia di aziende che cerchino aiuto per uscire dall’architettura esagonale Forse, Alcune architetture sono piu’ reversibili di altre
  • 96. L’illusione dell’ortogonalita’ Potrei seppellirvi di esempi, ma devo arrivare a qualche conclusione
  • 97. Che problema ho con il database e le stored procedures?
  • 98. Non tutte le dipendenze sono uguali • Non servono cliniche per curarmi
  • 99. Il mio problema e’ che ci sono aziende che hanno questo problema da 20 anni E forse e’ troppo tardi per salvare tutti
  • 100. Pero’ possiamo evitare che si ripeta Magari osservando quei piccoli “segnali deboli” che sono sotto i nostri occhi.
  • 101. Sociotecnico Interrelazione tra aspetti sociali e tecnici di un’organizzazione - L’interazione tra fattori sociali e tecnici crea le condizioni per la performance di un’organizzazione, in maniera lineare e non-lineare. - L’ottimizzazione di uno di questi aspetti indipendentemente dall’altro tende a far aumentare l’instabilita’ del sistema con relazioni non previste, ed a farne peggiorare il rendimento Liberamente tradotto da… https://en.wikipedia.org/wiki/Sociotechnical_system #Pratiche #Architettura #Business #Processo #Persone
  • 102. La dimensione del problema Bolle nate come soluzione tecnologica (come partizionare un grafo per aumentare la velocita’) L’algoritmo ha innescato comportamenti nuovi a livello individuale e collettivo Il nuovo paradigma ha reso possibili - e convenienti - strategie mirate per influenzare elezioni, etc.
  • 104. 1. Non possiamo risolvere problemi da specialisti #Pratiche #Architettura #Business #Processo #Persone
  • 105. Non possiamo risolvere i problemi da soli #Pratiche #Architettura #Business #Processo #Persone
  • 106. Se accettiamo il principio…
  • 108. “Non preoccupo dei tools” E’ un’affermazione che potrebbe fare Sam
  • 109. 2. I dettagli fanno la differenza • Architetture, processi e tools Impattano e vincolano individui ed interazioni • Individui ed interazioni sono piu’ importanti, ma non riusciremo a proteggerli se abbassiamo la guardia su architetture processi e strumenti. • Osserviamo ed analizziamo le interazioni, poi adattiamo gli strumenti per permettere interazioni positive
  • 111. Board fisica • Vincoli fisici, • Policy esplicite • Discussione in un luogo ben preciso • Peso sul richiedente Ho una nuova feature per la settimana prossima, dove la posso mettere che non c’e’ posto?
  • 112. Board digitale • Sensazione che ci sia posto… • Un lieve sentore di rosso • Policy quasi mai visibili Metto in selected, poi ci penseranno loro
  • 113. Non e’ uguale Stiamo dando forma a due interazioni diametralmente opposte
  • 114. Architetture, Processi e Tools Gli strumenti inducono alcuni gesti invece che altri Piccoli gesti ripetuti ed accumulati ci portano lontano dell’obiettivo. Il caso non e’ nostro alleato: dobbiamo pensarci noi, ma per questo dobbiamo proteggere i confini.
  • 115. 3. Proteggiamo i confini! • Non lasciamo che siano altri, o il fato a decidere come portare a casa il risultato #SkinInTheGame • Costruiamo un luogo dove poter sperimentare e trovare la NOSTRA strada giusta Qui possiamo fare grandi cose BTW: lasciare i team liberi di scegliere il loro stack, sembra essere una strategia vincente
  • 116. Minimizziamo le dipendenze Analizzare I flussi di business con il focus sul comportamento aiuta a trovare i confini naturali per minimizzare le dipendenze. 
 
 Dipendenze Sbagliate -> Death by Coordination Meetings (“Massimizzare il lavoro non fatto”) #Pratiche #Architettura #Business #Processo #Persone
  • 117. E Sam?
  • 118.
  • 119. 4. Provate! Si impara dagli esperimenti ed anche dagli errori! 
 Non fidatevi degli esperti da bar… 
 Contesto Quello che troppo spesso dimentichiamo, ma che fa la differenza. 🙂