login
Blurts on the Art of Software Development

Today | RSS | RDF | Atom | Other Tags
Categories : All | All | CI | .NET | General | Humour | Java | Personal | Reviews | Ruby | SW Eng

Michael Harmer blogs about his preference for elegantly sufficient design. In that blog entry Michael defines Michael's design threshold laws:

  1. For a team to work well together it needs to establish a common, congruent set of design thresholds.
  2. 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.


Lasse makes a good point about my Elegant Sufficiency post. Defining design thresholds is hard, very hard. The only way I think they can be practically defined (or identified) is with reference to a codebase since design thresholds are implicitly em...

Read more...


Add a comment

Title
Body
HTML : b, i, blockquote, br, p, pre, a href="", ul, ol, li
Math Quiz 3 + 5 = (Helps stop blog spam)
Name
E-mail address
Website
Remember me Yes  No 

E-mail addresses are not publicly displayed, so please only leave your e-mail address if you would like to be notified when new comments are added to this blog entry (you can opt-out later).

TrackBack to http://radio.javaranch.com/lasse/addTrackBack.action?entry=1120909098668