SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기
Changyol BAEK
 

Was ist angesagt? (20)

なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
식습관 스몰데이터 분석을 통한 장트러블 극복기
식습관 스몰데이터 분석을 통한 장트러블 극복기식습관 스몰데이터 분석을 통한 장트러블 극복기
식습관 스몰데이터 분석을 통한 장트러블 극복기
 
[전득진_22년4월] AI_ML담당_Tech_seminar-emart.pdf
[전득진_22년4월] AI_ML담당_Tech_seminar-emart.pdf[전득진_22년4월] AI_ML담당_Tech_seminar-emart.pdf
[전득진_22년4월] AI_ML담당_Tech_seminar-emart.pdf
 
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
스타트업은 데이터를 어떻게 바라봐야 할까? (개정판)
 
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
「スキルなし・実績なし」 32歳窓際エンジニアがシリコンバレーで働くようになるまで
 
훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
MelOn 빅데이터 플랫폼과 Tajo 이야기
MelOn 빅데이터 플랫폼과 Tajo 이야기MelOn 빅데이터 플랫폼과 Tajo 이야기
MelOn 빅데이터 플랫폼과 Tajo 이야기
 
로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법로그 기깔나게 잘 디자인하는 법
로그 기깔나게 잘 디자인하는 법
 
このIRのグラフがすごい!上場企業2020
このIRのグラフがすごい!上場企業2020このIRのグラフがすごい!上場企業2020
このIRのグラフがすごい!上場企業2020
 
プロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のことプロダクトオーナーが知るべき97のこと
プロダクトオーナーが知るべき97のこと
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
코딩 테스트 및 알고리즘 문제해결 공부 방법 (고려대학교 KUCC, 2022년 4월)
 
設計書からの卒業
設計書からの卒業設計書からの卒業
設計書からの卒業
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
人間と話す: Lean Customer Development (Lean Startup Update 2015)
人間と話す: Lean Customer Development (Lean Startup Update 2015)人間と話す: Lean Customer Development (Lean Startup Update 2015)
人間と話す: Lean Customer Development (Lean Startup Update 2015)
 
The only one big thing every programmer should know
The only one big thing every programmer should knowThe only one big thing every programmer should know
The only one big thing every programmer should know
 
카카오톡으로 여친 만들기 2013.06.29
카카오톡으로 여친 만들기 2013.06.29카카오톡으로 여친 만들기 2013.06.29
카카오톡으로 여친 만들기 2013.06.29
 
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証
 

Ähnlich wie Trunk Based Development is a social matter

Ähnlich wie 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