How to Choose the Right Branching Strategy
Trunk-Based Development vs Feature Branching
For how important branching strategies are, we don’t talk about them as often as we should. We pick our approach, alongside the core languages and tools, at the start of a project and then never think about it again. At most, we might make minor tweaks around the edges — how many reviewers need to approve a pull request, what git tags we use, when our pipelines are triggered, etc. But we rarely check whether Trunk-Based Development or Feature Branching is still working for us.
Software development is not static. Our teams, projects, and the approaches we take are constantly evolving and changing, and failing to update our branching strategy in response results in a lot of pain for the development team. Neither branching strategy is inherently better than the other; each has different circumstances where it shines. Multiple times in my career, I have found myself part of teams locked into one particular strategy when the other would have been a significantly better fit for their situation.
The impact our branching strategy has on the development team shouldn’t come as a surprise. After all, our branching strategy is the primary method we use to communicate and collaborate with other developers. Broadly, the problems we see with branching strategies fall into three categories…