My respect for Grady Booch has grown over the past few days, as I’ve investigated the idea of building a list of the 100 patterns that every developer should know. As I’ve surfed around looking at pattern-oriented sites, including those in MS-land, I’ve come to recognize and appreciate the amazing amount of work that Grady Booch has put into his ‘software architecture handbook’ site.
He even has a heirarchy of systems by type, a better list than the one on Wikipedia. I will work on the Wikipedia pages to clean them up. They needed a reference source anyway.
For those of you who haven’t taken a look at his site yet, visit www.booch.com/architecture and sign up (free). It’s worth a look. It is still a work in progress, and to be fair, I believe that he is hindering his own progress by using a traditional site instead of a wiki, but it is a fairly good start on the herculean tasks he has set out for himself.
I am not so patient. When I consider the fact that there are clearly over 2000 published patterns, many overlapping in intent, I’ve realized that the work of selecting 100 core patterns will be really tough to do without much of the basic cataloging already done (as Grady Booch has started to do).
As most scientists recognize, you cannot effectively analyze a body of knowledge until that knowledge has been cataloged. Naturalists of the 19th century discovered this and spent countless hours of labor before the major breakthroughs in understanding were reached.
(Yes, I’ve been to the Portland Patterns Repository. With all due respect to WardC, the PPR is a self-organized site created by intensely creative people, and as such, there’s not a lot of cataloging going on. As a result, a good navigation of patterns, or even a good comprehensive list, is not readily available there. Booch’s work, while still in its infancy, is already more comprehensive and better organized than the self-organized PPR. That doesn’t mean that the PPR should be dismissed. It just doesn’t solve the initial problem.)
Alas, I cannot do this by myself. I don’t believe my 25 years in software to be sufficient, by itself, to this task.
In academia, when you need help, you seek out a graduate student eager to pick a thesis topic, and you convince him or her that your research idea is worth their while. Not sure if the same tactic would work for this space, but I’m mulling it over.