SlideShare a Scribd company logo
1 of 53
Download to read offline
1
Collaborazione, Decisionalità e Gestione
della Complessità nel Tempo
cosa ho imparato lavorando in un grande
progetto software cross funzionale
2
Chi sono?
3
Perchè
3 fattori critici per la maggior parte dei progetti che ho vissuto
1. Collaborazione VS Silos e Catene di Montaggio
2. Decisionalità VS “Lui ha detto che..”
3. Gestione della complessità nel tempo VS
“Facciamo così poi vedremo”
* non sono 3 cose separate
4
Come
Seguiremo schema
1. Connessione con la vostra esperienza
dalla quale spero di imparare
2. Concetti derivati dalla mia esperienza (*)
3. Pratica
* in particolare gli ultimi mesi in eDreams odigeo
5
Collaborazione
6
La vostra esperienza
Identifica il principale bottleneck collaborativo che percepisci
nella tua organizzazione.
Quale impatto negativo ha/ha avuto sul progetto/i?
Miro
Decisionalità
7
Regole
● Abbiamo un euro all’asta 🤑
● L’offerta minima è 5 cents
● I rilanci sono per multipli di 5
● In quanto gestore dell’asta incasso la prima e la seconda
offerta 💸
Esperimento
col pubblico
L’asta dell’euro
8
Sistema
Connessione esercizio / realtà
Il nostro
team
Altro team
(es. product)
Altro team
(es UX)
L’azione individuale anche
se è razionale localmente
non porta benefici e risulta
irrazionale nel suo
complesso.
No condivisione di dati o di
strategie.
9
Sistema
AZIONE CONDIVISA
Perché la collaborazione è necessaria
Il nostro team Altro team Altro team
North
Star
10
Collaborazione, ma con chi?
11
Collaborazione parte da noi, ma con chi?
Fattori Esterni al nostro
team. Ma che possono
influenzare la nostra
decisione
Team
Vicini al nostro
team
Periferici al nostro
team
12
Collaborazione, ma con chi?
team
Vicini al nostro
team
Esterni al nostro team,
Ma che possono
influenzare la nostra
azione
Periferici al nostro
team
Legal
Regulation
Mercato
Business
Analytics
DevOps
Team di
Prodotto Y
Team di
Prodotto Z
Consulting
Team
Marketing
Team di
Prodotto X
13
Come collaborare con le persone giuste nel modo giusto?
Challenger
Alto potere
Basso interesse
Key Supporter
Alto potere
Alto interesse
Passive
Basso potere
Basso interesse
Follower
Basso potere
Alto interesse
POTERE
INTERESSE
14
Esempio Pratico
Challenger
Alto potere
Basso interesse
Key Supporter
Alto potere
Alto interesse
Passive
Basso potere
Basso interesse
Follower
Basso potere
Alto interesse
Gestite le
aspettative, da
coinvolgere
quando serve
Da tenere
monitorati, info
broadcast
Mantienili
Informati,
mostra
considerazione
Tienili vicini,
coinvolgerli
nelle iniziative,
riti comuni
POTERE
INTERESSE
Team di
Prodotto Y
Team di
Prodotto Z
Legal Analytics Team di
Prodotto X Business
Consulting
Team Marketing
DevOps
15
Come collaborare con le persone giuste nel modo giusto?
Expressive
Creativi
“Generiamo nuove idee
e poi scegliamo”
Amiable
Team-player
“Facciamolo insieme”
Driver
Risultati
“Avremo questi
risultati facendo ciò in
questo tempo”
Analytics
Dati e Processi
“Seguiremo questo
metodo e ci baseremo
su queste metriche”
STILE
ASSERTIVO
(TELLING)
NON MOSTRANO EMOZIONI
MOSTRANO EMOZIONI
STILE
NON
ASSERTIVO
(ASKING)
16
Esempi di azioni
Expressive
Creativi
“Generiamo nuove idee
e poi scegliamo”
Amiable
Team-player
“Facciamolo insieme”
Driver
Risultati
“Avremo questi
risultati facendo ciò in
questo tempo”
Analytics
Dati e Processi
“Seguiremo questo
metodo e ci baseremo
su queste metriche”
STILE
ASSERTIVO
(TELLING)
NON MOSTRANO EMOZIONI
MOSTRANO EMOZIONI
STILE
NON
ASSERTIVO
(ASKING)
empatia,
coinvolgimento
nei processi
generativi
business plan,
metriche
Empatia,
inclusività, lego
serious play,
workshop
Dati storici &
learnings,
metriche
17
Saper nutrire lo spirito collaborativo
18
Booster
● Connessioni Allocare tempo per creare connessioni
● Domande fare challenge intelligenti > dare ordini
● Dati dati e metriche per guidare la discussione
● Bisogni capire prima i bisogni degli altri
● WIIFM what is the benefit for them
● Ideation coinvolgere i le persone dall’inizio
● Prototypes discutere soluzioni concrete non idee vaghe
● Chiarezza qual è l’obiettivo dell’organizzazione?
come lo stiamo implementando?
19
Cosa NON fare
● Sfiducia negli altri
● Paura del feedback (dare e ricerverlo)
● Personalizzazione dei conflitti
● Mancanza (o accettazione della mancanza) di
commitment & poca attenzione ai risultati
● Non prendersi la responsabilità di ciò che si è fatto
● Obiettivi/metriche locali non connessi a quelli globali
* tanto più sono evidenti nelle key people quanto più questi sono
dannosi
20
Focus collaborazione Designer e Developer
21
6 Momenti in cui chiedersi se lavorare insieme
1. Ideation coinvolgere i dev dall’inizio
2. Prototypes feedback & opportunità
3. UX Research Dare visibilità e importanza alle
informazioni che abbiamo sull’utente
4. Grooming condividere priorità e evolutive
5. Inizio Task reframe/refresh delle attività
6. QA feedback sul risultato
22
Richiesta
1. Identifica il principale bottleneck collaborativo che
percepisci nella tua organizzazione ✅
2. Identifica un’azione da mettere in capo da domani per
iniziare a rimuoverlo;
3. Definisci cosa fare, perché è importante, chi coinvolgere,
come, e che benefici ha.
4. Spiega la tua decisione alla persona seduta accanto a te in
meno di due minuti e vice versa.
Miro
Esercizio Pratico
23
Decisionalità
24
La vostra esperienza
Tutti noi abbiamo in testa come vorremmo lavorare se fossimo
completamente liberi (XP, Agile, Lean, etc etc).
Immagina il tuo processo decisionale come un piatto perfetto:
quali sono gli ingredienti che non possono mancare secondo te?
🍎🍆🥦🥒🌶🫑🌽🥕🧄🥔🍋
Miro
Decisionalità
25
Gli ingredienti di un buon decision making
Right Data
Right
Process
Right People
Decisioni
buone 1. Opzionalità
2. Criteri di
giustezza
chiari e
condivisi
Collaborazione!
1. Sugli utenti
2. Sul business
3. Sul contesto
26
Quale processo?
dipende
27
Posso permettermi di sbagliare?
high impact
low impact
no room for risk
I can afford to make mistakes
28
Decisione profonda o intuizione?
29
Categorizzare una decisione
30
Categorizzare una decisione: esempi
QuEST
MVP
User Research
Five why
Fishbowl Heads or tails
Dot Voting
C-level
meeting
31
Decisione individuale o Intelligenza collettiva?
32
Categorizzare una decisione
33
Categorizzare una decisione
Importante
Da pianificare
Critico
Da fare subito
Archivio
Da non considerare ora
Delega
Da delegare a chi ha
passione e
responsabilità
IMPORTANZA
URGENZA
34
Rimuovere bottleneck delegando una decisione
Manager Delegato
35
Delegare una decisione: esempio
Milestone Champion
Compie l’analisi tecnica
Affianca il team di prodotto e UX
Effettua lo user story mapping
Monitora l’andamento
Tech Lead Developer
36
1. Identifica il tuo processo decisionale perfetto ✅
2. Identifica almeno un ingrediente da aggiungere a quelli che
hai già definito;
3. Definisci perché è importante e in che modo migliora il
processo definito precedentemente;
4. Spiega la tua decisione alla persona seduta accanto a te in
meno di due minuti e vice versa.
Miro
Esercizio Pratico
37
Gestione della
complessità nel
tempo
38
La vostra esperienza
Identifica la “cosa” (tecnologia/pratica/approccio/metodologia)
che ha avuto il più alto impatto positivo sulla produttività tua e
del team e ha semplificato l’evoluzione del software?
Spiega brevemente il perché
Miro
Gestione della complessità nel tempo
39
Il costo del software nel tempo
Il costo delle attività di sviluppo di un software o di una feature
dipendono per una quota variabile tra il 40 e l’80% dalle
evolutive e dalle correzioni che avvengono dopo il primo
rilascio.
Facts and Fallacies of Software Engineering, Robert Glass
40
Evoluzione socio-tecnica verso la complessità
󰞵
󰞵
󰞵
📑
󰞵
󰞵
󰞴
📑
📑
📑
󰞵
󰞵
󰥤
📑
📑
󰞵
󰞵
󰞴
📑
󰞵󰞵
󰞵󰥤
󰥤
📑📑
📑📑
📑📑
📑📑
📑
󰞵󰞵
󰞵󰞵
󰞵󰥤
📑
📑
󰞵󰞵
󰞵󰞵
󰞵󰞵 📑
1 2 3
📑
📑
📑
📑
📑
📑
📑
📑
󰞴
󰠀
󰥤󰥤
󰞴
󰠀
󰞵󰞵
󰞵󰥤
󰥤
41
Design Stamina Hypothesis: Good design VS Bad design
https://martinfowler.com/bliki/DesignStaminaHypothesis.html
42
Come rendere facile l’evoluzione? la teoria degli hotspot
Code as Crime Scene, Adam Tornhill
43
Saper guidare l’evoluzione
1. Fare sofware è un lungo processo di apprendimento e passiamo la
maggior parte a capire e evolvere un software esistente,
l’evoluzione ha un impatto economico alto;
2. In grandi codebase abbiamo un intersezione tra variabili tecniche e
sociali/organizzative interdipendenti;
3. Fare buon design è essenziale ed è un’arte agile che implica
rendere facile l’evoluzione;
4. Per rendere facile l’evoluzione è necessario capire dove
focalizzarsi per trovare i “colpevoli” che la ostacolano
44
La teoria degli hotspot: how to
Gli hotspot rappresentano parti complesse della codebase che sono più
critiche (solitamente sono il 4..6% della nostra codebase).
● 📌 I crimini: la ricerca (*) ha dimostrato che modifiche frequenti a
codici complessi generalmente indicano un calo della qualità
(NB i file di config vanno esclusi)
● 🎯 Il nostro obiettivo: ridurre la complessità e rendere il codice
facile e sicuro da modificare ed evolvere
Sonarqube
45
La teoria degli hotspot: how to
● 📌 modifiche frequenti 👉 git (file config esclusi)
git log --since "1 year ago" --name-only --pretty="format:" |
sed '/^s*$/'d | sort | uniq -c | sort -r | head -n 30
● 🎯 complessità 👉 sonarqube (fallback lines of code)
/api/measures/component_tree?&metricKeys=cognitive_complexity&c
omponent=<yourcomponent>&strategy=leaves&s=metric&metricSort=cog
nitive_complexity
(git ls-files | xargs wc -l | sort -gr | head -n30)
46
La teoria degli hotspot: esempio
hibernate-orm
47
Cosa fare quando abbiamo un indiziato
● Ci sono ragioni eterogenee per cui il file sta cambiando?
● Ci sono gruppi di file che cambiano per la stessa ragione?
● Come è evoluto questo file nel tempo?
48
Buone pratiche per gestire la complessità: tech & lean metrics
Metriche che ogni team calibra e valuta regolarmente:
● Lean metrics:
○ Lead time
○ Bugs/features ratio
○ Blockers
○ Throughput
● Tech metrics:
○ Test coverage
○ Acceptance/criteria & test plan
○ Cognitive Complexity
49
Test della teoria degli hotspot:
1. Se potessi apportare qualche modifica alla tua codebase,
dove sarebbe? Identifica un hotspot
2. Cosa potresti fare per ridurre la complessità e semplificare
l’evoluzione?
3. Spiega la tua decisione alla persona seduta accanto a te in
meno di due minuti e vice versa.
Miro
Gestione della complessità nel tempo
50
"94% of most problems and possibilities for
improvement belong to the system, not the
individual."
W. Edwards Deming
L’opportunità
https://hbr.org/2021/01/productivity-is-about-your-systems-not-your-people
51
Libri e Risorse per approfondire
● Decision Making for Software Development Teams
Francesco Strazzullo
● Code as Crime Scene
Adam Tornhill
● Agile Estimating and Planning
Mike Cohn
● The New How
Nilofer Merchan
Domande
󰢧❓
Thanks
🙏
Per ulteriori domande:
antonio.dellava@edreamsodigeo.com
E… We are hiring..

More Related Content

Similar to Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ho imparato lavorando in un grande progetto software cross funzionale

Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Luciano Amodio
 
Noonic Guides - Growth Hacking
Noonic Guides - Growth HackingNoonic Guides - Growth Hacking
Noonic Guides - Growth HackingNoonic Agency
 
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementSimone Onofri
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliStefano Leli
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSGiovanni Buffa
 
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiScrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiMarco Da Rin Zanco
 
SMAU MILANO 2022: High Tempo Testing.pdf
 SMAU MILANO 2022: High Tempo Testing.pdf SMAU MILANO 2022: High Tempo Testing.pdf
SMAU MILANO 2022: High Tempo Testing.pdfSMAU
 
Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)Agile Lean Conference
 
Agile Project Management - the Board Game workshop
Agile Project Management  - the Board Game workshopAgile Project Management  - the Board Game workshop
Agile Project Management - the Board Game workshopGiulio Roggero
 
Data skills: come e perché diffonderle in azienda genera vantaggio competitivo
Data skills: come e perché diffonderle in azienda genera vantaggio competitivoData skills: come e perché diffonderle in azienda genera vantaggio competitivo
Data skills: come e perché diffonderle in azienda genera vantaggio competitivoSMAU
 
Growth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuitoGrowth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuitoNinja Academy
 
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Vittorio Polizzi
 
User eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startupUser eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startupGiuseppe Sorrentino
 
User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino  User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino Codemotion
 
Usabilità e User Experience Design: #2 Test e Monitoraggio
Usabilità e User Experience Design: #2 Test e MonitoraggioUsabilità e User Experience Design: #2 Test e Monitoraggio
Usabilità e User Experience Design: #2 Test e MonitoraggioFormazioneTurismo
 
20161216 Google Design Sprint & Design Thinking
20161216 Google Design Sprint & Design Thinking20161216 Google Design Sprint & Design Thinking
20161216 Google Design Sprint & Design ThinkingFrancesco Casale
 
How Agile Dev Teams work
How Agile Dev Teams workHow Agile Dev Teams work
How Agile Dev Teams workXPeppers
 

Similar to Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ho imparato lavorando in un grande progetto software cross funzionale (20)

Agile software lifecycle
Agile software lifecycleAgile software lifecycle
Agile software lifecycle
 
Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016Agile web development - Forum IISF - 2016
Agile web development - Forum IISF - 2016
 
Noonic Guides - Growth Hacking
Noonic Guides - Growth HackingNoonic Guides - Growth Hacking
Noonic Guides - Growth Hacking
 
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie Agili
 
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJSWorkshop Ideare e creare Web Applications, Introduzione ad AngularJS
Workshop Ideare e creare Web Applications, Introduzione ad AngularJS
 
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiScrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
 
SMAU MILANO 2022: High Tempo Testing.pdf
 SMAU MILANO 2022: High Tempo Testing.pdf SMAU MILANO 2022: High Tempo Testing.pdf
SMAU MILANO 2022: High Tempo Testing.pdf
 
Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)
 
Agile Project Management - the Board Game workshop
Agile Project Management  - the Board Game workshopAgile Project Management  - the Board Game workshop
Agile Project Management - the Board Game workshop
 
Management per l'innovazione: la metodologia Agile (principi e applicazione)
Management per l'innovazione: la metodologia Agile (principi e applicazione)Management per l'innovazione: la metodologia Agile (principi e applicazione)
Management per l'innovazione: la metodologia Agile (principi e applicazione)
 
Data skills: come e perché diffonderle in azienda genera vantaggio competitivo
Data skills: come e perché diffonderle in azienda genera vantaggio competitivoData skills: come e perché diffonderle in azienda genera vantaggio competitivo
Data skills: come e perché diffonderle in azienda genera vantaggio competitivo
 
Growth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuitoGrowth Marketing & Performance ROI - Webinar gratuito
Growth Marketing & Performance ROI - Webinar gratuito
 
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
 
User eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startupUser eXperience fast and smart - Come integrare la UX in lean startup
User eXperience fast and smart - Come integrare la UX in lean startup
 
User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino  User eXperience fast and smart | Giuseppe Sorrentino
User eXperience fast and smart | Giuseppe Sorrentino
 
Usabilità e User Experience Design: #2 Test e Monitoraggio
Usabilità e User Experience Design: #2 Test e MonitoraggioUsabilità e User Experience Design: #2 Test e Monitoraggio
Usabilità e User Experience Design: #2 Test e Monitoraggio
 
20161216 Google Design Sprint & Design Thinking
20161216 Google Design Sprint & Design Thinking20161216 Google Design Sprint & Design Thinking
20161216 Google Design Sprint & Design Thinking
 
How Agile Dev Teams work
How Agile Dev Teams workHow Agile Dev Teams work
How Agile Dev Teams work
 
Design of experiment
Design of experiment Design of experiment
Design of experiment
 

More from Commit University

Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGCommit University
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfCommit University
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfCommit University
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit University
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PACommit University
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Commit University
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting forCommit University
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityCommit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfCommit University
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Commit University
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsCommit University
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftCommit University
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneCommit University
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcCommit University
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeCommit University
 

More from Commit University (20)

Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAG
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
 
Slide-10years.pdf
Slide-10years.pdfSlide-10years.pdf
Slide-10years.pdf
 
Vue.js slots.pdf
Vue.js slots.pdfVue.js slots.pdf
Vue.js slots.pdf
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PA
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting for
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdf
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and Swift
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazione
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lc
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
 
SwiftUI vs UIKit
SwiftUI vs UIKitSwiftUI vs UIKit
SwiftUI vs UIKit
 

Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ho imparato lavorando in un grande progetto software cross funzionale

  • 1. 1 Collaborazione, Decisionalità e Gestione della Complessità nel Tempo cosa ho imparato lavorando in un grande progetto software cross funzionale
  • 3. 3 Perchè 3 fattori critici per la maggior parte dei progetti che ho vissuto 1. Collaborazione VS Silos e Catene di Montaggio 2. Decisionalità VS “Lui ha detto che..” 3. Gestione della complessità nel tempo VS “Facciamo così poi vedremo” * non sono 3 cose separate
  • 4. 4 Come Seguiremo schema 1. Connessione con la vostra esperienza dalla quale spero di imparare 2. Concetti derivati dalla mia esperienza (*) 3. Pratica * in particolare gli ultimi mesi in eDreams odigeo
  • 6. 6 La vostra esperienza Identifica il principale bottleneck collaborativo che percepisci nella tua organizzazione. Quale impatto negativo ha/ha avuto sul progetto/i? Miro Decisionalità
  • 7. 7 Regole ● Abbiamo un euro all’asta 🤑 ● L’offerta minima è 5 cents ● I rilanci sono per multipli di 5 ● In quanto gestore dell’asta incasso la prima e la seconda offerta 💸 Esperimento col pubblico L’asta dell’euro
  • 8. 8 Sistema Connessione esercizio / realtà Il nostro team Altro team (es. product) Altro team (es UX) L’azione individuale anche se è razionale localmente non porta benefici e risulta irrazionale nel suo complesso. No condivisione di dati o di strategie.
  • 9. 9 Sistema AZIONE CONDIVISA Perché la collaborazione è necessaria Il nostro team Altro team Altro team North Star
  • 11. 11 Collaborazione parte da noi, ma con chi? Fattori Esterni al nostro team. Ma che possono influenzare la nostra decisione Team Vicini al nostro team Periferici al nostro team
  • 12. 12 Collaborazione, ma con chi? team Vicini al nostro team Esterni al nostro team, Ma che possono influenzare la nostra azione Periferici al nostro team Legal Regulation Mercato Business Analytics DevOps Team di Prodotto Y Team di Prodotto Z Consulting Team Marketing Team di Prodotto X
  • 13. 13 Come collaborare con le persone giuste nel modo giusto? Challenger Alto potere Basso interesse Key Supporter Alto potere Alto interesse Passive Basso potere Basso interesse Follower Basso potere Alto interesse POTERE INTERESSE
  • 14. 14 Esempio Pratico Challenger Alto potere Basso interesse Key Supporter Alto potere Alto interesse Passive Basso potere Basso interesse Follower Basso potere Alto interesse Gestite le aspettative, da coinvolgere quando serve Da tenere monitorati, info broadcast Mantienili Informati, mostra considerazione Tienili vicini, coinvolgerli nelle iniziative, riti comuni POTERE INTERESSE Team di Prodotto Y Team di Prodotto Z Legal Analytics Team di Prodotto X Business Consulting Team Marketing DevOps
  • 15. 15 Come collaborare con le persone giuste nel modo giusto? Expressive Creativi “Generiamo nuove idee e poi scegliamo” Amiable Team-player “Facciamolo insieme” Driver Risultati “Avremo questi risultati facendo ciò in questo tempo” Analytics Dati e Processi “Seguiremo questo metodo e ci baseremo su queste metriche” STILE ASSERTIVO (TELLING) NON MOSTRANO EMOZIONI MOSTRANO EMOZIONI STILE NON ASSERTIVO (ASKING)
  • 16. 16 Esempi di azioni Expressive Creativi “Generiamo nuove idee e poi scegliamo” Amiable Team-player “Facciamolo insieme” Driver Risultati “Avremo questi risultati facendo ciò in questo tempo” Analytics Dati e Processi “Seguiremo questo metodo e ci baseremo su queste metriche” STILE ASSERTIVO (TELLING) NON MOSTRANO EMOZIONI MOSTRANO EMOZIONI STILE NON ASSERTIVO (ASKING) empatia, coinvolgimento nei processi generativi business plan, metriche Empatia, inclusività, lego serious play, workshop Dati storici & learnings, metriche
  • 17. 17 Saper nutrire lo spirito collaborativo
  • 18. 18 Booster ● Connessioni Allocare tempo per creare connessioni ● Domande fare challenge intelligenti > dare ordini ● Dati dati e metriche per guidare la discussione ● Bisogni capire prima i bisogni degli altri ● WIIFM what is the benefit for them ● Ideation coinvolgere i le persone dall’inizio ● Prototypes discutere soluzioni concrete non idee vaghe ● Chiarezza qual è l’obiettivo dell’organizzazione? come lo stiamo implementando?
  • 19. 19 Cosa NON fare ● Sfiducia negli altri ● Paura del feedback (dare e ricerverlo) ● Personalizzazione dei conflitti ● Mancanza (o accettazione della mancanza) di commitment & poca attenzione ai risultati ● Non prendersi la responsabilità di ciò che si è fatto ● Obiettivi/metriche locali non connessi a quelli globali * tanto più sono evidenti nelle key people quanto più questi sono dannosi
  • 21. 21 6 Momenti in cui chiedersi se lavorare insieme 1. Ideation coinvolgere i dev dall’inizio 2. Prototypes feedback & opportunità 3. UX Research Dare visibilità e importanza alle informazioni che abbiamo sull’utente 4. Grooming condividere priorità e evolutive 5. Inizio Task reframe/refresh delle attività 6. QA feedback sul risultato
  • 22. 22 Richiesta 1. Identifica il principale bottleneck collaborativo che percepisci nella tua organizzazione ✅ 2. Identifica un’azione da mettere in capo da domani per iniziare a rimuoverlo; 3. Definisci cosa fare, perché è importante, chi coinvolgere, come, e che benefici ha. 4. Spiega la tua decisione alla persona seduta accanto a te in meno di due minuti e vice versa. Miro Esercizio Pratico
  • 24. 24 La vostra esperienza Tutti noi abbiamo in testa come vorremmo lavorare se fossimo completamente liberi (XP, Agile, Lean, etc etc). Immagina il tuo processo decisionale come un piatto perfetto: quali sono gli ingredienti che non possono mancare secondo te? 🍎🍆🥦🥒🌶🫑🌽🥕🧄🥔🍋 Miro Decisionalità
  • 25. 25 Gli ingredienti di un buon decision making Right Data Right Process Right People Decisioni buone 1. Opzionalità 2. Criteri di giustezza chiari e condivisi Collaborazione! 1. Sugli utenti 2. Sul business 3. Sul contesto
  • 27. 27 Posso permettermi di sbagliare? high impact low impact no room for risk I can afford to make mistakes
  • 28. 28 Decisione profonda o intuizione?
  • 30. 30 Categorizzare una decisione: esempi QuEST MVP User Research Five why Fishbowl Heads or tails Dot Voting C-level meeting
  • 31. 31 Decisione individuale o Intelligenza collettiva?
  • 33. 33 Categorizzare una decisione Importante Da pianificare Critico Da fare subito Archivio Da non considerare ora Delega Da delegare a chi ha passione e responsabilità IMPORTANZA URGENZA
  • 34. 34 Rimuovere bottleneck delegando una decisione Manager Delegato
  • 35. 35 Delegare una decisione: esempio Milestone Champion Compie l’analisi tecnica Affianca il team di prodotto e UX Effettua lo user story mapping Monitora l’andamento Tech Lead Developer
  • 36. 36 1. Identifica il tuo processo decisionale perfetto ✅ 2. Identifica almeno un ingrediente da aggiungere a quelli che hai già definito; 3. Definisci perché è importante e in che modo migliora il processo definito precedentemente; 4. Spiega la tua decisione alla persona seduta accanto a te in meno di due minuti e vice versa. Miro Esercizio Pratico
  • 38. 38 La vostra esperienza Identifica la “cosa” (tecnologia/pratica/approccio/metodologia) che ha avuto il più alto impatto positivo sulla produttività tua e del team e ha semplificato l’evoluzione del software? Spiega brevemente il perché Miro Gestione della complessità nel tempo
  • 39. 39 Il costo del software nel tempo Il costo delle attività di sviluppo di un software o di una feature dipendono per una quota variabile tra il 40 e l’80% dalle evolutive e dalle correzioni che avvengono dopo il primo rilascio. Facts and Fallacies of Software Engineering, Robert Glass
  • 40. 40 Evoluzione socio-tecnica verso la complessità 󰞵 󰞵 󰞵 📑 󰞵 󰞵 󰞴 📑 📑 📑 󰞵 󰞵 󰥤 📑 📑 󰞵 󰞵 󰞴 📑 󰞵󰞵 󰞵󰥤 󰥤 📑📑 📑📑 📑📑 📑📑 📑 󰞵󰞵 󰞵󰞵 󰞵󰥤 📑 📑 󰞵󰞵 󰞵󰞵 󰞵󰞵 📑 1 2 3 📑 📑 📑 📑 📑 📑 📑 📑 󰞴 󰠀 󰥤󰥤 󰞴 󰠀 󰞵󰞵 󰞵󰥤 󰥤
  • 41. 41 Design Stamina Hypothesis: Good design VS Bad design https://martinfowler.com/bliki/DesignStaminaHypothesis.html
  • 42. 42 Come rendere facile l’evoluzione? la teoria degli hotspot Code as Crime Scene, Adam Tornhill
  • 43. 43 Saper guidare l’evoluzione 1. Fare sofware è un lungo processo di apprendimento e passiamo la maggior parte a capire e evolvere un software esistente, l’evoluzione ha un impatto economico alto; 2. In grandi codebase abbiamo un intersezione tra variabili tecniche e sociali/organizzative interdipendenti; 3. Fare buon design è essenziale ed è un’arte agile che implica rendere facile l’evoluzione; 4. Per rendere facile l’evoluzione è necessario capire dove focalizzarsi per trovare i “colpevoli” che la ostacolano
  • 44. 44 La teoria degli hotspot: how to Gli hotspot rappresentano parti complesse della codebase che sono più critiche (solitamente sono il 4..6% della nostra codebase). ● 📌 I crimini: la ricerca (*) ha dimostrato che modifiche frequenti a codici complessi generalmente indicano un calo della qualità (NB i file di config vanno esclusi) ● 🎯 Il nostro obiettivo: ridurre la complessità e rendere il codice facile e sicuro da modificare ed evolvere Sonarqube
  • 45. 45 La teoria degli hotspot: how to ● 📌 modifiche frequenti 👉 git (file config esclusi) git log --since "1 year ago" --name-only --pretty="format:" | sed '/^s*$/'d | sort | uniq -c | sort -r | head -n 30 ● 🎯 complessità 👉 sonarqube (fallback lines of code) /api/measures/component_tree?&metricKeys=cognitive_complexity&c omponent=<yourcomponent>&strategy=leaves&s=metric&metricSort=cog nitive_complexity (git ls-files | xargs wc -l | sort -gr | head -n30)
  • 46. 46 La teoria degli hotspot: esempio hibernate-orm
  • 47. 47 Cosa fare quando abbiamo un indiziato ● Ci sono ragioni eterogenee per cui il file sta cambiando? ● Ci sono gruppi di file che cambiano per la stessa ragione? ● Come è evoluto questo file nel tempo?
  • 48. 48 Buone pratiche per gestire la complessità: tech & lean metrics Metriche che ogni team calibra e valuta regolarmente: ● Lean metrics: ○ Lead time ○ Bugs/features ratio ○ Blockers ○ Throughput ● Tech metrics: ○ Test coverage ○ Acceptance/criteria & test plan ○ Cognitive Complexity
  • 49. 49 Test della teoria degli hotspot: 1. Se potessi apportare qualche modifica alla tua codebase, dove sarebbe? Identifica un hotspot 2. Cosa potresti fare per ridurre la complessità e semplificare l’evoluzione? 3. Spiega la tua decisione alla persona seduta accanto a te in meno di due minuti e vice versa. Miro Gestione della complessità nel tempo
  • 50. 50 "94% of most problems and possibilities for improvement belong to the system, not the individual." W. Edwards Deming L’opportunità https://hbr.org/2021/01/productivity-is-about-your-systems-not-your-people
  • 51. 51 Libri e Risorse per approfondire ● Decision Making for Software Development Teams Francesco Strazzullo ● Code as Crime Scene Adam Tornhill ● Agile Estimating and Planning Mike Cohn ● The New How Nilofer Merchan