dagblog.
← Archive

How Would Messi, Sideshow Bob and the Germans Fare in Software Development?


The just-concluded 2014 football World Cup was balm for fans who think the game comes down to 22 players, a ball, a referee and a German victory. Passes, goals, howlers, the odd foul, dives, the arrival of video refereeing. All in all, a pile of emotions worth talking over with friends and a beer. Before the final, former England star David Beckham said Germany wouldn’t win because it didn’t have a single first-class star. The match showed how wrong he was. Winning simply vindicated the path Germany had chosen ten years earlier, prompted in part by an embarrassing defeat to the Czech B team at Euro 2004. Reading the papers, I kept seeing similar descriptions of the German team’s character and how it got there. It got me thinking about what we had watched over four weeks at the World Cup in Brazil and what we see every day in software development.

What’s good about doing without your own Neymar, Messi or Robben?

Teams that depended on one star stopped just short of the top. In software engineering we call this a bus factor of one. A loose definition is how many of your engineers have to be run over by a bus before your project collapses like a house of cards. The Argentine demigod Lionel Messi playing on the edge of exhaustion and the injured Brazilian superhero Neymar showed that the difference between success and failure in a team effort can’t rest on one person. Hold a retrospective with your team and work out its bus factor. The lower the number, the bigger your problem. Germany won because none of its losses was fatal to how the team played.

I’ll digress from football for a moment and turn to one of my favorite thinkers, Nassim Taleb. In his book Antifragile he argues that continually introducing unexpected catastrophic events into a system makes it more robust. Developers at Netflix put the idea into practice by writing a family of toolsthat randomly bring down production servers, clusters and even geographically distributed server farms. They’re essentially deterministic generators of black swans (another ideaof Taleb’s, thanks, Křečák), events the system or the developer hasn’t allowed for, that can’t be predicted and have enormous consequences for how the system works. By deliberately introducing catastrophic failures, Netflix keeps improving the reliability of the system as a whole.

I’m certainly not suggesting Argentina should have kicked Messi in the knee as a trial run for playing without him. Nor am I suggesting that you have some poor developer institutionalized just to see how much your team depends on them. Less invasive methods work too. Compare the team’s performance in sprints against when individual team members were on vacation. If development ground to a halt when, say, a third of the developers were out, that tells you your bus factor. The way to deal with it is to build a team whose members can cover for one another. It’s complicated, laborious and painful, and worth it. The one sure thing about the worst case is that it will happen someday.

In my former team, rotating roles helped a lot. One example was the elite bug fixer, a role that expired after a week. The developer’s first job was to fix smaller bugs coming out of manual testing that would disrupt the team’s sprint. In the remaining time, they improved infrastructure and did other work outside the product backlog, ideally helping pay down technical debt. We made it easier to cover for the person responsible for production deployments and interventions by building a tool to deploy changes automatically to the production cluster and another that let customer support carry out operational tasks directly.

Sideshow Bob and cargo-cult defending

Brazil’s historic and humiliating 7–1 defeat to Germany in the semifinal laid bare serious shortcomings in the Seleção. It’s called a cargo cult. On Polynesian islands, tribes built imitation airplanes, believing they would bring back the white man whose arrival they associated with cargo planes. Brazil thought it would have an impenetrable defense by putting together players from the top clubs. Having defenders from Real Madrid, Barcelona, Bayern Munich and Chelsea, the absolute best at club level, is no guarantee that your defense will work any better than Jirka Luňák’s bunch of hopeless players from the Czech TV series Okresní přebor. A similar cargo cult often shows up in attempts at agile development. Copying techniques from agile methodologies doesn’t mean you’re doing agile development. It’ll take Brazil a long time to shake off the cargo cult in its defense. When it comes to agile development, I’d suggest reading the Manifesto for Agile Software Developmentto see whether you’re actually agile or practicing a cargo cult. Recognizing what you’re doing is often the first step toward fixing it…

Jogi’s mantra

Germany didn’t end up with the golden Nike statuette by chance. This wasn’t a team that depended on the whims of fortune. Incidentally, it was their fifth medal in a row. They had reached at least the semifinals of every World Cup or European Championship since 2006. Coach Joachim Löw expected the players to stick to an intricate defensive system, but gave them no rules going forward. He wanted as many players as possible to join the attack. I’ve spent part of my career doing things nobody asked me to do. They weren’t in a backlog. I just had a feeling that, at the time, they were worth doing. I’d bury myself in a framework, refactor code that made my blood boil, or prototype something I thought would be useful. I asked for forgiveness when things didn’t work out. I didn’t ask permission. You can’t order people to be creative. You can create an environment where no formal or informal rules get in their way. Germany followed a system that was safe enough while giving players the freedom their creativity needed. I think workplaces, organizations and teams should follow a similar mantra: keep enough rules to operate reliably and leave people enough freedom to develop their creativity.

Football is a game with simple rules, and the best players make it look simple. The parallels to software development aren’t entirely accidental. I believe the best software teams operate much like Germany did at this World Cup.

The author is an amateur footballer who makes his living developing software.

Medium version

Related articles

Related CZ Podcast episodes