SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
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
Fiducia
Feedback
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
Trasparenza
Team Abitudini
Piccoli passi e
salvataggio
frequente
Costruire le
fondamenta
del team
Iniziamo domani! … ma come?
Ridurre tempo
di divergenza
da main branch
Trasparenza
Team 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

Más contenido relacionado

La actualidad más candente

Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategiesjstack
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowMikhail Melnik
 
Intro to GitOps & Flux.pdf
Intro to GitOps & Flux.pdfIntro to GitOps & Flux.pdf
Intro to GitOps & Flux.pdfWeaveworks
 
Git for jenkins faster and better
Git for jenkins   faster and betterGit for jenkins   faster and better
Git for jenkins faster and betterMark Waite
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Vietnam Open Infrastructure User Group
 
Git workflows presentation
Git workflows presentationGit workflows presentation
Git workflows presentationMack Hardy
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Noa Harel
 
Git branch management
Git branch managementGit branch management
Git branch managementMatt Liu
 
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...Simplilearn
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioAraf Karsh Hamid
 
SAP Inside Track Berlin 2018 - DevOps in ABAP Landscapes
SAP Inside Track Berlin 2018 - DevOps in ABAP LandscapesSAP Inside Track Berlin 2018 - DevOps in ABAP Landscapes
SAP Inside Track Berlin 2018 - DevOps in ABAP LandscapesSascha Junkert
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.jsStefan Stölzle
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsAhmed Adel
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 

La actualidad más candente (20)

Git branching strategies
Git branching strategiesGit branching strategies
Git branching strategies
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-Flow
 
Git flow
Git flowGit flow
Git flow
 
Intro to GitOps & Flux.pdf
Intro to GitOps & Flux.pdfIntro to GitOps & Flux.pdf
Intro to GitOps & Flux.pdf
 
Git for jenkins faster and better
Git for jenkins   faster and betterGit for jenkins   faster and better
Git for jenkins faster and better
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
 
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
 
Git workflows presentation
Git workflows presentationGit workflows presentation
Git workflows presentation
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
Git branch management
Git branch managementGit branch management
Git branch management
 
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes Istio
 
SAP Inside Track Berlin 2018 - DevOps in ABAP Landscapes
SAP Inside Track Berlin 2018 - DevOps in ABAP LandscapesSAP Inside Track Berlin 2018 - DevOps in ABAP Landscapes
SAP Inside Track Berlin 2018 - DevOps in ABAP Landscapes
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
Git advanced
Git advancedGit advanced
Git advanced
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 

Similar a Trunk Based Development is a social matter

Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Klab
 
ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...Stefano Marchetti
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Gian Maria Ricci
 
Come i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsCome i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsGiulio Roggero
 
OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!Alex Comba
 
AgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insiemeAgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insiemeFelice Pescatore
 
Back to basics - il Manifesto Agile
Back to basics - il Manifesto AgileBack to basics - il Manifesto Agile
Back to basics - il Manifesto AgileGiancarlo Valente
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
Milano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationMilano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationGonzalo Marcos Ansoain
 
Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2Meet Magento Italy
 
Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2MageSpecialist
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfFlorence Consulting
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessFelice Pescatore
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeDotNetMarche
 

Similar a Trunk Based Development is a social matter (20)

Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)Branching & Merging strategies (with TFS)
Branching & Merging strategies (with TFS)
 
ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...ClueMapper: uno strumento Open Source per la gestione di progetti software co...
ClueMapper: uno strumento Open Source per la gestione di progetti software co...
 
Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011Alm pills - Sessione community tour Dot Net Umbria 2011
Alm pills - Sessione community tour Dot Net Umbria 2011
 
Come i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature TeamsCome i Microservizi favoriscono il lavoro dei Feature Teams
Come i Microservizi favoriscono il lavoro dei Feature Teams
 
OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!OCA: da Oggi Contribuisco Anch'io!
OCA: da Oggi Contribuisco Anch'io!
 
05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!05 OCA, da Oggi Contribuisco Anch'io!
05 OCA, da Oggi Contribuisco Anch'io!
 
AgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insiemeAgileIoT, scopriamolo insieme
AgileIoT, scopriamolo insieme
 
Back to basics - il Manifesto Agile
Back to basics - il Manifesto AgileBack to basics - il Manifesto Agile
Back to basics - il Manifesto Agile
 
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
Milano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce IntegrationMilano Meetup #8 - Testing & Salesforce Integration
Milano Meetup #8 - Testing & Salesforce Integration
 
Git branching model
Git branching modelGit branching model
Git branching model
 
Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2Riccardo Tempesta - Strumenti di automazione in Magento 2
Riccardo Tempesta - Strumenti di automazione in Magento 2
 
Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2Strumenti di automazione in Magento 2
Strumenti di automazione in Magento 2
 
MuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdfMuleSoft_Meetup__Official__8_.pdf
MuleSoft_Meetup__Official__8_.pdf
 
DevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del BusinessDevOps: l'IT al servizio del Business
DevOps: l'IT al servizio del Business
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
CruiseControl.net in un progetto reale
CruiseControl.net in un progetto realeCruiseControl.net in un progetto reale
CruiseControl.net in un progetto reale
 
Total Testing in DevOps
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOps
 

Trunk Based Development is a social matter