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...
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 spesso la stessa attenzione non è riservata alla collaborazione su una codebase.
Quindi, come possiamo applicare i principi agili anche a questo aspetto?
----
Slides del talk di XPug Milano del 25/05/2023
----
Articoli 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
Size: 637.94 KB
Language: it
Added: May 26, 2023
Slides: 50 pages
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à
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
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