
On Thu, May 21, 2009 at 00:54, Michael Mossey
I call it "design by negation." When asked to justify his design, the lead software architect explains everything that *wouldn't* work. "We couldn't have a unique key for every entry because blah blah blah. We couldn't use a garbage collector because blah blah. We couldn't write a sugar layer because then you have to document it separately blah blah." So the chosen design seems to be the only thing left after eliminating everything you can't do.
I want to aspire to "positive design." I want to list the goals, and think of design as making clever choices that meet all the goals.
I think there is often a good "default" solution which is so obvious that experienced software architects won't even bother to mention. This is the case for both examples that you mention (unique keys in a database, garbage collection). They then go on to give reasons why the "default" solution would not work in their case. Thomas