Feature branching is one of the most commonly accepted practices in the IT industry. It is mainly used to control quality and to control feature delivery. However, many times the inverse is true. Branches break the flow of the IT delivery process, reducing both stability and throughput. Unfortunately, oftentimes teams are not aware of this. They truly think they are doing the right thing.
The session explores why teams are using feature branches, what problems are introduced by using them and what techniques exist to avoid them altogether. It explores exactly what’s evil about feature branches, which is not necessarily the problems they introduce - but rather, the real reasons why teams are using them.
After the session, you’ll understand a different branching strategy, how it relates to Continuous Integration and how it will predict better quality and higher delivery throughput.
Learning outcomes - you will be able to:
- understand why teams are using feature branching
- explain why feature branching is problematic
- describe alternatives to feature branching
- understand if all teams can adopt trunk-based development
References:
- SCM Patterns (ch 4 Mainline; ch 5 Active Development Line), Stephen Berczuk and Brad Appleton
- Growing Object Oriented Software guided by Tests, p172 Keyhole Surgery for Software, Steve Freeman and Nat Pryce
- Continuous Delivery (ch 14 Advanced Version Control), Jez Humble and Dave Farley
- The Role of Continuous Delivery in IT and Organizational Performance, Nicole Forsgren and Jez Humble
- The State of DevOps Report 2016, Alanna Brown, Nicole Forsgren, Jez Humble, Nigel Kersten and Gene Kim
- DevOps Handbook (ch 11 Enable and Practice CI), Gene Kim, Jez Humble, Patrick Debois and John Willis
- Accelerate (ch 4 Technical Practices), Nicole Forsgren, Jez Humbe and Gene Kim
- Measuring Continuous Delivery (ch 7 The Mainline Throughput indicator), Steve Smith
- trunkbaseddevelopment.com
- ThoughtWorks Technology Radar on GitFlow
- Continuous Integration on a dollar a day, James Shore
- On DVCS, Continuous Delivery and Feature Branches, Jez Humble
- Why software development methodologies suck, Jez Humble
- Don’t Feature Branch, Dave Farley
- Feature Branch, Martin Fowler
- Version Control Stragies series, Steve Smith
- More Feature Branches means less Continuous Integration, InfoQ interview with Steve Smith
- The Death of Continuous Integration, Steve Smith
- Long-Running Branches Considered Harmfull, Jade Rubick
- An e-mail conversation with Steve Smith on Trunk Based Development
- Continuous Isolation, Paul Hammant
- What is Trunk Based Development?, Paul Hammant
- Trunk Based Development, Jon Arild Tørresdal
- You Are What You Eat, Dave Hounslow
- Google’s Scaled Trunk Based Development, Paul Hammant
- Legacy App Rejuvenation, Paul Hammant
- Why Google Stores Billions of Lines of Code in a Single Repository?, Google
- The history of “Taking Baby Steps”, Adrian Bolboaca
- Baby Steps TDD approach, David Völkel
- 4 Simple Tricks to avoid Merge Conflicts, Robert Mißbach
- From GitFlow to Trunk Based Development, Robert Mißbach
- Short-lived branches, Corey Haines
- Introducing Branch by Abstraction, Paul Hammant
- Branch by Abstraction, Martin Fowler
- Make Large Scale Changes Incrementally with Branch by Abstraction, Jez Humble
- branchbyabstraction.com
- Feature Toggles, Pete Hodgson
- #NoStaging - Pipeline Conf 2016, Dave Nolan
- When Feature Flags go Wrong, Edith Harbaugh
- Managing Feature Flag Debt with Split, Adil Aijaz
- Continuous Delivery and Code Review from the Continuous Delivery Google Group
- Theory X and Theory Y from Wikipedia
- Continuous Review, Paul Hammant
- Non-Continuous Review, Paul Hammant
- Code Review: Why are we doing it?, Sandro Mancuso
- Code Reviews in Trunk Based Development, Robert Mißbach
- A conversation in the SoCraTes Slack #codereview channel on … Code Reviews and Trunk Based Development
- A reply on Twitter by Michiel Rook regarding When code reviews would not be required
- Non-Blocking Continuous Code Review - a case study, Thierry de Pauw
- I Found Something Better Than Pull Requests…, Dave Farley