SlideShare a Scribd company logo
Waltzing with BranchesWaltzing with Branches
Chris OldwoodChris Oldwood
ACCU Conference 2016ACCU Conference 2016
@chrisoldwood | gort@cix.co.uk@chrisoldwood | gort@cix.co.uk
Cargo Cult SoftwareCargo Cult Software
EngineeringEngineering
““They go through the motions of looking likeThey go through the motions of looking like
effective organizations that are stylisticallyeffective organizations that are stylistically
similar. But without any real understandingsimilar. But without any real understanding
of why the practices work […]”of why the practices work […]”
---- Steve McConnellSteve McConnell
Another cult is born…Another cult is born…
https://twitter.com/jezhumble/status/400071665482088448
Read the small print!Read the small print!
https://twitter.com/jezhumble/status/400071665482088448
Waltzing with BearsWaltzing with Bears
<<<<<<<<<<<<<<<<<<<<<<<<
Knox in box.Knox in box.
Fox in socks.Fox in socks.
Knox on foxKnox on fox
in socks in box.in socks in box.
========================
Socks on KnoxSocks on Knox
and Knox in box.and Knox in box.
Fox in socksFox in socks
on box on Knox.on box on Knox.
>>>>>>>>>>>>>>>>>>>>>>>>
“RISK MANAGEMENT IS PROJECT MANAGEMENT FOR ADULTS”
““The business of believing only what you haveThe business of believing only what you have
the right to believe is calledthe right to believe is called riskrisk
managementmanagement.”.”
---- Waltzing with BearsWaltzing with Bears
““Risk management is the process of thinkingRisk management is the process of thinking
out corrective actions before a problemout corrective actions before a problem
occurs, while it’s still an abstraction.”occurs, while it’s still an abstraction.”
---- Waltzing with BearsWaltzing with Bears
Risk: Loss of ProductivityRisk: Loss of Productivity
https://commons.wikimedia.org/wiki/File:Mengniu-production-line.jpg
Risk: Loss of ConfidenceRisk: Loss of Confidence
http://melvillegroup.com/wp-content/uploads/2013/08/fear-man-biting-nails.jpg
Risk Management StrategiesRisk Management Strategies
 Avoid itAvoid it
 Contain itContain it
 Mitigate itMitigate it
 Evade itEvade it
BranchingBranching
http://banyantreemassage.com/.../assets/images/the_banyan_tree_by_isacg-d42dm53.9851934_std.jpg
MergingMerging
https://static-secure.guim.co.uk/sys-images/.../2014/10/17/1413553453352/Clapham-Junction-in-south-014.jpg
Integration/Development BranchIntegration/Development Branch
1 2 3 4 5
Release BranchRelease Branch
3 4 5 6 7
A B
Stable
Volatile
Branching From a LabelBranching From a Label
3 4 5 6 7
A B
v1 X Y
v1.1
Cherry PickingCherry Picking
3 4 5 6 7
A CB
Feature/Task/Private BranchFeature/Task/Private Branch
3 4 5 6 7
A B C
More Stable
More Volatile
ShelvingShelving
1 2 4 5 6
3
Integration PainsIntegration Pains
3 4 5 6 7
X Y Z
A B
No BranchNo Branch
1a 2 1b 3 1c
Gatekeeper WorkflowsGatekeeper Workflows
3 4 5 6 7
X Y
B
Alice
Bob
C
GK
Z
D
ForkingForking
http://3.bp.blogspot.com/-ilala7_XSts/VXCchjYhv4I/.../wXYU7lmhWrs/s1600/fork%2Bin%2Bthe%2Broad.jpg
Branching is a technique forBranching is a technique for
managing risk, but…managing risk, but…
Branching isBranching is not the onlynot the only
technique for managing risk.technique for managing risk.
ApproachApproach
Always Be Ready ToAlways Be Ready To
ShipShip
Small Units of ChangeSmall Units of Change
https://upload.wikimedia.org/wikipedia/.../1280px-A_Sunday_on_La_Grande_Jatte,_Georges_Seurat,_1884.png
AutomationAutomation
http://trendingchannel.com/wp-content/uploads/2013/01/China-car-production.jpg
Continuous Integration is aContinuous Integration is a
mindset, not a tool.mindset, not a tool.
TestsTests
https://twitter.com/whatpaulsaid/statuses/596693825432776704
RefactoringRefactoring
http://factmontster.com/wp-content/uploads/2015/03/interesting-facts-about-brazil-favelas.jpg
Pair/Mob ProgrammingPair/Mob Programming
https://i.ytimg.com/vi/VDYsipu7KZQ/maxresdefault.jpg
MonitoringMonitoring
https://i.ytimg.com/vi/ZKpFFD7aX3c/maxresdefault.jpg
Literature (Old & New)Literature (Old & New)
BranchingBranching cancan be used tobe used to
managemanage somesome risks, but thererisks, but there
are more productive ways.are more productive ways.
Questions?Questions?
Blog:Blog:
http://chrisoldwood.blogspot.comhttp://chrisoldwood.blogspot.com
@chrisoldwood | gort@cix.co.uk@chrisoldwood | gort@cix.co.uk
Articles:Articles:
http://www.chrisoldwood.com/articles.htmhttp://www.chrisoldwood.com/articles.htm

More Related Content

Viewers also liked

My Hobbies
My HobbiesMy Hobbies
My Hobbies
shortigon
 
America
AmericaAmerica
America
Sebitas527
 
Chapter 11 vocabular words and guided notes
Chapter 11 vocabular words and guided notesChapter 11 vocabular words and guided notes
Chapter 11 vocabular words and guided notes
10cline101
 
LBD BrandDev Portfolio
LBD BrandDev PortfolioLBD BrandDev Portfolio
LBD BrandDev PortfolioAaron Luck
 
Sertifikat Digital
Sertifikat DigitalSertifikat Digital
Sertifikat Digital
pingkan lumongdong
 
Classifiers for Predicting Wine Quality
Classifiers for Predicting Wine QualityClassifiers for Predicting Wine Quality
Classifiers for Predicting Wine Quality
Laurent Declercq
 

Viewers also liked (6)

My Hobbies
My HobbiesMy Hobbies
My Hobbies
 
America
AmericaAmerica
America
 
Chapter 11 vocabular words and guided notes
Chapter 11 vocabular words and guided notesChapter 11 vocabular words and guided notes
Chapter 11 vocabular words and guided notes
 
LBD BrandDev Portfolio
LBD BrandDev PortfolioLBD BrandDev Portfolio
LBD BrandDev Portfolio
 
Sertifikat Digital
Sertifikat DigitalSertifikat Digital
Sertifikat Digital
 
Classifiers for Predicting Wine Quality
Classifiers for Predicting Wine QualityClassifiers for Predicting Wine Quality
Classifiers for Predicting Wine Quality
 

Similar to Waltzing with Branches [ACCU]

Startupfest 2012 - Coefficients of friction
Startupfest 2012 - Coefficients of frictionStartupfest 2012 - Coefficients of friction
Startupfest 2012 - Coefficients of friction
Startupfest
 
Continuous Security
Continuous SecurityContinuous Security
Continuous Security
Adam Baldwin
 
1. Mobile E-Commerce Conference - The Apps Summit 2010
1. Mobile E-Commerce Conference - The Apps Summit 20101. Mobile E-Commerce Conference - The Apps Summit 2010
1. Mobile E-Commerce Conference - The Apps Summit 2010
Volker Hirsch
 
Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...
Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...
Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...
Carlos González de Villaumbrosia
 
Fundamental Design Principles
Fundamental Design PrinciplesFundamental Design Principles
Fundamental Design Principles
Nathan Smith
 
Safety Meeting Starters (SMS) Oct 2012
Safety Meeting Starters (SMS) Oct 2012Safety Meeting Starters (SMS) Oct 2012
Safety Meeting Starters (SMS) Oct 2012
safestrat
 
Building private-clouds-qconsf
Building private-clouds-qconsfBuilding private-clouds-qconsf
Building private-clouds-qconsfAndrew Shafer
 
Os Nightingale
Os NightingaleOs Nightingale
Os Nightingaleoscon2007
 
Creative Learning Conference Digital Storytelling
Creative Learning Conference Digital StorytellingCreative Learning Conference Digital Storytelling
Creative Learning Conference Digital Storytelling
José Sacavém
 
Pets, Cattle, Rabbits and Microbes
Pets, Cattle, Rabbits and Microbes Pets, Cattle, Rabbits and Microbes
Pets, Cattle, Rabbits and Microbes
Shiva Narayanaswamy
 
Innovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody InnovationInnovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody Innovation
Adrian Howard
 
What does Web2 do for us?
What does Web2 do for us?What does Web2 do for us?
What does Web2 do for us?
Mike Ellis
 
Michael Kutch
Michael KutchMichael Kutch
Michael Kutch
Lucas Cioffi
 
Knowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the peopleKnowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the people
Stephen Collins
 
UX in the Age of AI: Where Does Design Fit In? Fluxible 2017
UX in the Age of AI: Where Does Design Fit In? Fluxible 2017UX in the Age of AI: Where Does Design Fit In? Fluxible 2017
UX in the Age of AI: Where Does Design Fit In? Fluxible 2017
Carol Smith
 
Taming the Monolith
Taming the MonolithTaming the Monolith
Taming the Monolith
Dennis Traub
 
Taming the Monolith – Are Microservices Just an Implementation Detail?
Taming the Monolith – Are Microservices Just an Implementation Detail?Taming the Monolith – Are Microservices Just an Implementation Detail?
Taming the Monolith – Are Microservices Just an Implementation Detail?
Thoughtworks
 
Conversation Collaboration Community
Conversation Collaboration CommunityConversation Collaboration Community
Conversation Collaboration Community
Stephen Collins
 
Technology Careers v2.0 SP1 Ultimate Edition
Technology Careers v2.0 SP1 Ultimate EditionTechnology Careers v2.0 SP1 Ultimate Edition
Technology Careers v2.0 SP1 Ultimate Edition
John Bristowe
 

Similar to Waltzing with Branches [ACCU] (19)

Startupfest 2012 - Coefficients of friction
Startupfest 2012 - Coefficients of frictionStartupfest 2012 - Coefficients of friction
Startupfest 2012 - Coefficients of friction
 
Continuous Security
Continuous SecurityContinuous Security
Continuous Security
 
1. Mobile E-Commerce Conference - The Apps Summit 2010
1. Mobile E-Commerce Conference - The Apps Summit 20101. Mobile E-Commerce Conference - The Apps Summit 2010
1. Mobile E-Commerce Conference - The Apps Summit 2010
 
Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...
Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...
Mike Mayes Product School Presentation Consumer-v-Enterprise in Product Manag...
 
Fundamental Design Principles
Fundamental Design PrinciplesFundamental Design Principles
Fundamental Design Principles
 
Safety Meeting Starters (SMS) Oct 2012
Safety Meeting Starters (SMS) Oct 2012Safety Meeting Starters (SMS) Oct 2012
Safety Meeting Starters (SMS) Oct 2012
 
Building private-clouds-qconsf
Building private-clouds-qconsfBuilding private-clouds-qconsf
Building private-clouds-qconsf
 
Os Nightingale
Os NightingaleOs Nightingale
Os Nightingale
 
Creative Learning Conference Digital Storytelling
Creative Learning Conference Digital StorytellingCreative Learning Conference Digital Storytelling
Creative Learning Conference Digital Storytelling
 
Pets, Cattle, Rabbits and Microbes
Pets, Cattle, Rabbits and Microbes Pets, Cattle, Rabbits and Microbes
Pets, Cattle, Rabbits and Microbes
 
Innovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody InnovationInnovation, Innovation, Bloody Innovation
Innovation, Innovation, Bloody Innovation
 
What does Web2 do for us?
What does Web2 do for us?What does Web2 do for us?
What does Web2 do for us?
 
Michael Kutch
Michael KutchMichael Kutch
Michael Kutch
 
Knowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the peopleKnowledge Worker 2.0 - Power to the people
Knowledge Worker 2.0 - Power to the people
 
UX in the Age of AI: Where Does Design Fit In? Fluxible 2017
UX in the Age of AI: Where Does Design Fit In? Fluxible 2017UX in the Age of AI: Where Does Design Fit In? Fluxible 2017
UX in the Age of AI: Where Does Design Fit In? Fluxible 2017
 
Taming the Monolith
Taming the MonolithTaming the Monolith
Taming the Monolith
 
Taming the Monolith – Are Microservices Just an Implementation Detail?
Taming the Monolith – Are Microservices Just an Implementation Detail?Taming the Monolith – Are Microservices Just an Implementation Detail?
Taming the Monolith – Are Microservices Just an Implementation Detail?
 
Conversation Collaboration Community
Conversation Collaboration CommunityConversation Collaboration Community
Conversation Collaboration Community
 
Technology Careers v2.0 SP1 Ultimate Edition
Technology Careers v2.0 SP1 Ultimate EditionTechnology Careers v2.0 SP1 Ultimate Edition
Technology Careers v2.0 SP1 Ultimate Edition
 

More from Chris Oldwood

The __far* Side
The __far* SideThe __far* Side
The __far* Side
Chris Oldwood
 
Monolithic Delivery
Monolithic DeliveryMonolithic Delivery
Monolithic Delivery
Chris Oldwood
 
A Test of Strength
A Test of StrengthA Test of Strength
A Test of Strength
Chris Oldwood
 
In The Toolbox - LIVE!
In The Toolbox - LIVE!In The Toolbox - LIVE!
In The Toolbox - LIVE!
Chris Oldwood
 
Test-Driven SQL
Test-Driven SQLTest-Driven SQL
Test-Driven SQL
Chris Oldwood
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Chris Oldwood
 
Becoming a Bitter Programmer
Becoming a Bitter ProgrammerBecoming a Bitter Programmer
Becoming a Bitter Programmer
Chris Oldwood
 
Using xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing ToolkitUsing xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing Toolkit
Chris Oldwood
 
xUnit Style Database Testing
xUnit Style Database TestingxUnit Style Database Testing
xUnit Style Database Testing
Chris Oldwood
 
Robust Software
Robust SoftwareRobust Software
Robust Software
Chris Oldwood
 
Requiem (For Windows XP)
Requiem (For Windows XP)Requiem (For Windows XP)
Requiem (For Windows XP)
Chris Oldwood
 
(Re)Reading the Classics
(Re)Reading the Classics(Re)Reading the Classics
(Re)Reading the Classics
Chris Oldwood
 
Recycle Bin 101
Recycle Bin 101Recycle Bin 101
Recycle Bin 101
Chris Oldwood
 
The Art of Code
The Art of CodeThe Art of Code
The Art of Code
Chris Oldwood
 

More from Chris Oldwood (14)

The __far* Side
The __far* SideThe __far* Side
The __far* Side
 
Monolithic Delivery
Monolithic DeliveryMonolithic Delivery
Monolithic Delivery
 
A Test of Strength
A Test of StrengthA Test of Strength
A Test of Strength
 
In The Toolbox - LIVE!
In The Toolbox - LIVE!In The Toolbox - LIVE!
In The Toolbox - LIVE!
 
Test-Driven SQL
Test-Driven SQLTest-Driven SQL
Test-Driven SQL
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Becoming a Bitter Programmer
Becoming a Bitter ProgrammerBecoming a Bitter Programmer
Becoming a Bitter Programmer
 
Using xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing ToolkitUsing xUnit as a Swiss-Aarmy Testing Toolkit
Using xUnit as a Swiss-Aarmy Testing Toolkit
 
xUnit Style Database Testing
xUnit Style Database TestingxUnit Style Database Testing
xUnit Style Database Testing
 
Robust Software
Robust SoftwareRobust Software
Robust Software
 
Requiem (For Windows XP)
Requiem (For Windows XP)Requiem (For Windows XP)
Requiem (For Windows XP)
 
(Re)Reading the Classics
(Re)Reading the Classics(Re)Reading the Classics
(Re)Reading the Classics
 
Recycle Bin 101
Recycle Bin 101Recycle Bin 101
Recycle Bin 101
 
The Art of Code
The Art of CodeThe Art of Code
The Art of Code
 

Recently uploaded

Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 

Recently uploaded (20)

Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 

Waltzing with Branches [ACCU]

Editor's Notes

  1. Brief bio – gave a related talk a few years ago, but coming from a different angle now. It’s an emotive subject – not helped by the tools giving us more power to avoid the real issues (it’s always a people problem).
  2. http://www.stevemcconnell.com/ieeesoftware/eic10.htm Coined the phrase in early ~2000 (term much older – most famously the Melanesian islanders just after World War II). Teams aspire to be like the cool companies – adopt the right practice and it will come. Branching is one practice that appears to be acquiring cargo cult status.
  3. https://twitter.com/jezhumble/status/400071665482088448 It’s easy to see how it happens – who wouldn’t want this? If a huge company like Google can make it work – we must be able to!
  4. The last entry in the list is fundamental to making the rest work. Also, Google have the funds and people to create the tooling they need to make it work.
  5. The talk’s title comes from a famous book by DeMarco and Lister. It’s name comes from a song by Dr Seuss - My Uncle Terwilliger Waltzes With Bears.
  6. - Dr Seuss’ writing often seems like the result of a botched merge .
  7. The book is about managing risk on software projects, but has wider appeal as risk management is more useful than that. It’s less than 200 pages long. Initial story about William Kingdon Clifford’s paper The Ethics of Belief.
  8. Whilst philosophical in nature it actually learns towards the scientific method for justification. Links back to the cargo cult mentality.
  9. Risk management versus crisis management (i.e. risk has materialized). Anyone who has worked in software development for a while should be able to come up with a list pretty quickly.
  10. Breaking the build for everyone. Checking in without even compiling and then going on holiday for two weeks! Loss of productivity down the pipeline – testers, deployment, etc. Leave broken or fix it and move on?
  11. Does the change we made work without breaking something else? Do we even trust the person making the changes?
  12. Risk as a pejorative misses the opportunities. Turn a risk into an opportunity to learn instead – experiments, Chaos Monkey, etc.
  13. Branching is attractive as it’s cheap on time and resources (due to immutable data structures). Only really 2 branches from a collaboration perspective – integration and private (sharing or working alone).
  14. Should call it Merging Strategies. Merge debt – analogous to Technical Debt (changes accrued but not integrated). Pain is at the end, often when time pressures are most upon us. General wisdom (if you’re going to merge regularly) – only merge from stable to volatile.
  15. - The default branch when VCS doesn’t support branching. Called different names - trunk/main/master. Explain representation – time is left-to-right. - A common “Enterprise” anti-pattern for big teams is one integration branch per project.
  16. - Reaction to code freeze – branch to avoid holding up development of version N+1. - Ideally trunk still needs to be stable prior to branching – no last minute high-risk changes that might be pulled. - Need integration branch when starting from a label. Very few, carefully reviewed changes expected - only essential changes. Organisation or regulatory requirements may require them to be used for quarentine purposes.
  17. Special case of a release branch (patch or hotfix) when supporting multiple product versions. Potentially time-critical, e.g. security fix. Label is snapshot in time whereas a branch is evolution.
  18. - Undesirable, but often a reaction to an overly long testing phase. - Small, focused commits make it easier to cherry pick as changes are isolated. - Heavy refactoring makes this much harder as the likelihood for dependent changes increases. - Changes can get lost on the merge back at the end. - Record a merge at the end as nothing has changed code-wise but the loop should be closed.
  19. - Polar opposite of release branch. - Branch for a specific feature (task) – often volatile in nature, e.g. a spike. - Or the developer may be volatile, e.g. new joiner. - Not necessary a single-developer branch, can allow multiple people to work more freely. - Easy to throw away with no residual effects (e.g. Spike).
  20. - Very short-lived branch, effectively only one commit. - Put current changes to one side and integrate again later when dust has settled. Supported natively by some, called “stashing” in Git, branch from working copy is an alternative in SVN. Was more useful when the working copy was large and disk space was scare.
  21. - The release merge is easier due to small focused changes. The feature branch merge can be harder because of the potential volume for change, e.g. refactoring. Not just syntactic merge conflicts, but semantic conflicts which cause upheaval as they’re often more subtle.
  22. - Back to the old days when branching wasn’t possible . - Break task down into much, much smaller tasks. - New code and refactorings don’t require toggling off, only changes (low risk, but not no risk). - Need to schedule clean-up after toggled on permanently. - Toggles can be compile-time (#ifdef) or runtime (.config entries).
  23. - Pessimistic workflow that uses feature branches and (ideally) automation to manage the risk. - Gatekeeper can be manual (code review) or automated (merge + build + tests).
  24. Forks are another type of branch, may be very short-lived or never merged. Look into iojs and node branch split and merge.
  25. Fundamental change in mindset away from big releases and siloed development to incremental change. Before knowing what agile development was this concept was what drove my change in behaviour. Be careful of what you perceive as waste – it may enable a reduction in opportunity and technical risk. Unlike some ad-hoc development it’s carefully orchestrated – requires discipline.
  26. Deliver software in smaller chunks (Allan Kelly’s Diseconomies of scale). Many of the processes we historically put in place are to minimise the problems from big changes, but are self-reinforcing, e.g. CAB. Opportunity risk comes from delaying changes, e.g. the scheduler refactoring.
  27. - Large amounts of automation are needed on any non-trivial codebase to help assure quality. Commit should trigger the continuous integration server to watch your back. - Optimistic workflow assumes commits are correct and should be ready to ship. - The only breakage should be environmental or long-running tests that can be elided by developers. - Build number should be auto-generated and baked into artefacts where possible. - Wipe workspace if you can afford it, else clean thoroughly to give same effect – no uncommitted hacks should taint the build.
  28. Having a CI server does not necessarily mean you are doing continuous integration. CI is about close collaboration to minimise waste, not establishing a blame culture when the codebase deteriorates. Implies smaller units of change.
  29. - The testing pyramid (programmer versus customer). **Tweet about test types.** Must be fast and easy to run (i.e. automated).
  30. Point out amount of code that changes at Google (on Jez’s tweet). Instead of trying to get it right first time, work with what we know and refactor as our understanding grows. - Physical structure changes are hard with long lived branches, less so with VCS’s that do (implied) directory versioning.
  31. Two heads really are better than one. Helps eliminate waste caused by building the wrong thing. And keeps quality up as it aids building the thing right.
  32. - Close monitoring allows opportunity to be exploited sooner because there is still a tight feedback loop when in production.
  33. - SCM Patterns book – it may be old but it’s got the principles.
  34. - In summary: branches have their uses but managing risk by avoidance should not be top of the list.
  35. - No books, just a blog and some articles – one on branching strategies in particular.