Michael Harmer blogs about his preference for elegantly sufficient design. In that blog entry Michael defines Michael's design threshold laws:
- For a team to work well together it needs to establish a common, congruent set of design thresholds.
- For a team to be successful it needs to have design thresholds that produce elegantly sufficient designs and code.
Now, there's no way one could disagree with a team having common design thresholds being a good thing. It's easier said than done, however. How do you define a design threshold? I'm pretty sure you can't find a definition that would be considered accurate and would not involve subjective evaluation by an authority recognized as having a good sense for what's elegantly sufficient design. Oh, I'm sure there are plenty of academic studies experimenting with formal, statistical, and what not algorithms for automatically deducing a number from a codebase but, seriously, have those things ever worked on any real world context? Most of the time, guess not.
Among ScrumMasters, the phrase "ask the team" is a good one and an often used one. Consensus is, however, difficult to
achieve.
Quoting James Grenning:
"Consensus is great, but that may never happen. [...] Have a vote on items of disagreement. Benevolent dictator can also help speed things up."
Consensus is indeed a rare luxury in many teams. Voting, on the other hand, seems to work ok most of the time. Sometimes, though, voting on things is simply too costly if the team consists of more than a handful of developers. Besides, how often you get unanimous votes? There's a good chance that someone feels wronged by the evil, evil majority. Another option would be to assign someone to be the code police who says whether a given solution is sufficiently elegant or not. "If the team's unofficial code police says it's good, then it's good" might not be a good criteria in the long run, however, and it's far from ideal considering that the code police rarely represents the whole team. And most of the time it's still a majority vote, not a consensus decision. It seems that there's really no substitute for consensus. Only workarounds with trade-offs.
In order to achieve the best performance your team is capable of, the concept of elegantly sufficient must be part of the team's culture--shared by everyone on the team. Once you've got that, it's likely that you've got a jelling team. Congratulations. You're probably kicking the living crap out of your competitors.
Read more...







