Trunk Based Development is a social matter

AlessioCoser 54 views 50 slides May 26, 2023
Slide 1
Slide 1 of 50
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50

About This Presentation

Ti sei mai chiesto se con il tuo team state gestendo in modo "agile" la codebase?
C'è da sempre molto interesse verso le pratiche agili perché aiutano i team a portare valore alle persone che usano il prodotto incorporando nello sviluppo i feedback ricevuti.
Ho notato però che spess...


Slide Content

Trunk Based
Development
is a social
matter

Alessio Coser
Software Developer

Quando gli sviluppatori collaborano sul
codice presente in un singolo branch.

— trunkbaseddevelopment.com

1.Push continuo di piccoli commit
direttamente su master
— trunkbaseddevelopment.com

2.Merge frequente di short-lived
branches (-1 giorno)
— trunkbaseddevelopment.com

Frequenza di Integrazione

Quando ogni membro di un team
integra il codice
almeno una volta al giorno.
– https://martinfowler.com/articles/continuousIntegration.html

Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti
Da una prospettiva Agile

Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti

● Ridurre il work in progress
Da una prospettiva Agile

Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti

● Ridurre il work in progress

● Lavorare per piccoli incrementi
Da una prospettiva Agile

Vogliamo ottimizzare
il flusso di lavoro per fronteggiare
i continui cambiamenti

● Ridurre il work in progress

● Lavorare per piccoli incrementi

● Accorciare il ciclo di feedback
Da una prospettiva Agile

Ma quale ciclo di Feedback?

Impatti

Soprattutto quando ci sono più
persone che lavorano sulla stessa
parte del sistema.
Aumenta la frequenza
di integrazione

rendendolo più trasparente, sai
immediatamente che codice
stanno cambiando i colleghi.
Viene evidenziato
il work in progress

Iterativo, e incrementale
con push frequenti
Abilita il
refactoring

Riduce la distanza tra gli sviluppatori che
lavorano sulle funzionalità nella stessa
codebase.
Aumenta la
collaborazione
https://trunkbaseddevelopment.com/5-min-overview/#distance
Branches create distance between
developers and we do not want that

— Frank Compagner, Guerrilla Games

Perchè TBD
non lo fanno
tutti?

Mindset
sociale

Lavoro di
squadra
Viene incoraggiato
rispetto al lavoro
individuale

Mindset - sociale

Lavoro di
squadra
Feedback
Viene incoraggiato
rispetto al lavoro
individuale

Frequente e
costruttivo


Mindset - sociale

Lavoro di
squadra
FiduciaFeedback
Viene incoraggiato
rispetto al lavoro
individuale

Frequente e
costruttivo


Che livello di
fiducia abbiamo
nel team?
Mindset - sociale

Mindset
tecnico

Mindset - tecnico
Piccole
modifiche
incrementali

Mindset - tecnico
Piccole
modifiche
incrementali
Attenzione
alla qualità

Mindset - tecnico
Piccole
modifiche
incrementali
Attenzione
alla qualità
Separazione
Deploy - Release

Mindset - tecnico
Piccole
modifiche
incrementali
Attenzione
alla qualità
Sempre in uno
stato
deployabile
Separazione
Deploy - Release

Come si fa deploy
quando qualcosa
è in progress?

Nascondi le
funzionalità
incomplete

01
Deployare se qualcosa è ancora in progress

Nascondi le
funzionalità
incomplete

Usa branch by
abstraction
01 02
Deployare se qualcosa è ancora in progress

Usa branch by
abstraction
02
Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html

Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html
Usa branch by
abstraction
02

Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html
Usa branch by
abstraction
02

Deployare se qualcosa è ancora in progress
https://www.martinfowler.com/bliki/BranchByAbstraction.html
Usa branch by
abstraction
02

Nascondi le
funzionalità
incomplete

Usa branch by
abstraction
Usa i feature flag
01 02 03
https://martinfowler.com/articles/feature-toggles.html
Deployare se qualcosa è ancora in progress

Quando fare
attenzione?

Quando fare attenzione?
Open
Source

Team(?) di singoli
contributor
Quando fare attenzione?
Open
Source

Team(?) di singoli
contributor
Quando fare attenzione?
Open
Source
Team distribuito in
diverse timezones

Esperimenti
Team(?) di singoli
contributor
Quando fare attenzione?
Open
Source
Team distribuito in
diverse timezones

Iniziamo domani!
… ma come?

Costruire le
fondamenta
del team
Iniziamo domani! … ma come?

Team

Costruire le
fondamenta
del team
Iniziamo domani! … ma come?

Piccoli passi e
salvataggio
frequente
Team Abitudini

Costruire le
fondamenta
del team
Iniziamo domani! … ma come?

Ridurre tempo
di divergenza
da main branch


TrasparenzaTeam Abitudini
Piccoli passi e
salvataggio
frequente

Costruire le
fondamenta
del team
Iniziamo domani! … ma come?

Ridurre tempo
di divergenza
da main branch


TrasparenzaTeam Abitudini
Ridurre la
burocrazia
Flow
Piccoli passi e
salvataggio
frequente

Conclusioni

Lo sviluppo software è
un’attività sociale
Una persona, da sola, non è altrettanto creativa o
efficace nel far emergere idee e trovare soluzioni

Accetta il cambiamento
Non nascondere la testa sotto la sabbia,
impara a convivere con il cambiamento

Gary Gruver from HP
“Engineers thought
trunk-based development
would never work, but once
they started, they couldn’t
imagine ever going back”

CREDITS: This presentation template was created by
Slidesgo, including icons by Flaticon, infographics &
images by Freepik
Per approfondire
- nelis.boucke.be/post/trunk-based-development
- mrdevops.io/trunk-based-development-8376fe577c11
- techbeacon.com/app-dev-testing/how-trunk-based-delivery-key-faster-more-reliable-software
- trunkbaseddevelopment.com
- media.webteam.puppet.com/uploads/2019/11/2016-State-of-DevOps-Report_0.pdf
- georgestocker.com/2020/03/04/please-stop-recommending-git-flow/
- mrdevops.io/if-you-still-insist-on-feature-branching-you-are-hurting-your-business-and-our-profession-32e1109d4594
- continuousdelivery.com/2011/07/on-dvcs-continuous-integration-and-feature-branches/
- 12factor.net

- martinfowler.com/bliki/BranchByAbstraction.html
- continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction
- martinfowler.com/articles/feature-toggles.html
- infoq.com/articles/feature-flags-gone-wrong
- martinfowler.com/bliki/StranglerFigApplication.html
- tuple.app/pair-programming-guide/the-case-for-pair-programming
- grrava.blogspot.com/2017/10/review-of-our-code-review-process.html

CREDITS: This presentation template was created by
Slidesgo, including icons by Flaticon, infographics &
images by Freepik
Thanks,
any question?
twitter.com/alessiocoser
it.linkedin.com/in/alessiocoser
Alessio Coser
Software Engineer