Today was a full day session of DesignFest at OOPSLA. We worked as a group of four designers plus a moderator. We tackled the basic design for a system to keep track of the ratings of players at a racquetball club.
It was an interesting problem, and team members came at it from several different directions. One profitable, although somewhat painful, exercise came from the fact that we could not agree on the basics of part of the design. So, we ended up doing three version of the design, looking at the sequence of calls for one of the main use cases. This was a rather intense experience, and somewhat draining. But it did really illustrate the value of being willing to take a design down to some detail, then backtrack, start again, and see where a different design will take you. Until you do that, you may have an intuitive idea of what will and wont work, but it won't be firm. After you do this, the strengths and weaknesses of the different designs are much more concrete.
Not really knowing what to expect, I had expected that there might be more of a component of either explicit mentoring or competition involved in DesignFest. I had hoped that a really senior person could critique what we did. But DesignFest really was simply an opportunity to get together with a group of strangers and work for a day on the design of a program.