Agile Zone is brought to you in partnership with:

I have a passion for talking to people, identifying problems, and writing software. When I'm doing my job correctly, software is easy to use, easy to understand, and easy to write... in that order. Michael is a DZone MVB and is not an employee of DZone and has posted 54 posts at DZone. You can read more from them at their website. View Full User Profile

Stop Branching! Agile is Soccer, Not American Football

  • submit to reddit

One trend I've noticed with git users is a habit to create a lot of branch and merge activity. The oft-repeated mantra is "branching is (easy/cheap/safe) in git so I do it a lot". When working on an agile project though, this behavior can cause serious problems. To illustrate the point, compare american football to soccer: American football has highly specialized players and positions as well as a variety of tightly choreographed set pieces.

In contrast, soccer has a much lesser degree of specialization, and while there are some set pieces that are choreographed, the majority of the game is spent reacting to the situation as it evolves. Traditional development methodologies are like american football: They divide the work up among highly specialized players and then try to replay an intricate set of movements to make the play "work". Agile methodologies are more like soccer (or to a lesser degree rugby) in that the advantage doesn't come from following the choreography (or even rehearsing it), but from reacting to the current situation on the field and having visibility and vision as to the current state of the field. When teams start creating a lot of branches and working in isolation for large periods of time (relative to release frequency), that means they are often making assumptions about how the plan is supposed to work.

Unless this has been worked out well in advance, it often leads to a "massive catastrophic merge" when everybody tries to come back together. To maintain an agile development process, it's important to react to interdependent changes as early as possible and reenforce the notion of a team of generalists who must react and move based on the current situation, NOT by following a plan that was written months before. So, if you're on an agile team of 5 and each of you are working on multiple independent branches and not sharing them on a daily basis, you're probably trying to play american football. Instead of developing vision and dealing with the ebb and flow of the game as it unfolds, you're trying to rehearse what you think your role in the project is supposed to be so that you can execute your portion perfectly at the appropriate time. 


Published at DZone with permission of Michael Mainguy, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


John J. Franey replied on Mon, 2011/12/19 - 11:32am

All analogies limp, but 'soccer vs american football' is lame. Before every play in american football, on the offense and defense side of the ball, there is a significant amount of contextual play-planning which considers the current position on the field, the time on the clock, the distance to the goal, the number of plays and yards remaining until 4th down, the skill set on the field, the weather conditions, and successes and failures to that point. Also, in american football, any planned play can break down and frequently does due to unforeseeable events. How is this unlike agile development?

I think I see your point, but this analogy fails for me.


Michael Mainguy replied on Mon, 2011/12/19 - 7:05pm in response to: John J. Franey

All those factors you mention apply to both soccer and american football (other than the number of "downs"). The difference is that american football tends to value technology, process, and following the plan over the individual players' creativity. Put another way, soccer is all about the players... set-pieces and formulas exist, but are a secondary. American football, in general, is the opposite.

The better comparison would have been rugby and american football, but I think that one has been overdone ;)

Paul Russel replied on Sun, 2012/06/10 - 8:17am

Hi Mike, do you know soccer? In soccer you also need to be specialized... Each player has a specific position/task in the team. From my understand in agile the expected is the complete opposite. I can imagine an Agile soccer team, like a team where everybody is chasing the ball trying to score.
Since in an agile team everybody has to be able to be good in every positions.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.