Sunday, February 23, 2014

Who's monitoring the monitor?

(Uncle) Bob Martin posts about the need for a "foreman" on software teams who, among other things, is the keeper of commit rights for the team.

His first post on the matter was resisted by people who valued teams -- Martin responds that they are basing this on an unrealistic picture of a perfect team.

This may be so, but in my judgment, Martin is basing his view on a view of a perfect foreperson.

To illustrate this point, Martin passes on the fable of Ron and the perfect team.  Ron was a developer on a "perfect" team, then hit a rough patch in his personal life, slipped below standards, and since there was no foreman to keep him in line, was allowed to infect the software base.

As an alternative, Martin describes how this would work out on a team with an effective foreperson:

And, of course, Jessica finds Ron's first bad commit within hours. So she's on the phone to him, asking him why he committed code without tests, code that had not been refactored. Ron says he's a bit under the weather but that everything will be fine soon. He promises to fix the commit before the end of the day. 
Jessica accepts this, but starts to pay closer attention to Ron's commits. Ron, aware that Jessica is watching, tries his best; but can't muster the emotional energy to keep up appearances and keep the code clean. He never does fix that commit. He avoids pairing. He starts to miss deadlines. There's no place for him to hide.

The whole team can now see that something is very wrong with Ron. Jessica confronts Ron with the evidence. Bad commits. Missed deadlines. "What's going on, Ron?" 
The truth about Ron's wife comes out. The team rallies around Ron. Tasks are redistributed. Ron's load is lightened. The team survives.
Thank goodness Jessica was watching!
Phew.

But is having a super foreperson like Jessica, who has the technical knowledge to monitor the commits, as well as the softer skills to "confront" Ron in an effective manner all that likely?

What if Jessica isn't completely benevolent?  What if she sees this as an opportunity to bury Ron and make him look bad in front of the team?  What if she uses her commit power arbitrarily, letting through things from her friends and not from others, holding back their projects?

Or what if Jessica simply doesn't have the skills to respond to this effectively?  What if her "confrontation" with Ron goes wrong?

Or what if it's Jessica who hits a bump in the road, where she just lets everything through, or becomes a bottleneck?

In short, I don't think the idea of having a single person with technical knowledge, interpersonal skill, ethical character, and steadiness to do the job Martin describes is that much more realistic than having a team of people so good they don't require such a foreperson.

All of us are subject to Original Sin, so to speak.  We need protection from the incompetence of team members, but also from tyranny of corrupt and incompetent leadership.  It seems to me that a bad foreperson could do a lot more damage a lot more quickly than a rogue team member, which is why we've erred on the side of putting more power in the team's hands and less in a single person.

I agree that teams need a regular safeguard to ensure that people are maintaining high quality.  I am skeptical that this should be a Single Person.

Post a Comment