My brain is full and happy. Now to decompress.
I started the day late at the "Patterns in the IT Community Roundtable Discussion." Folks who went expecting something about community were disappointed, this was a good fireside chat about the pros and cons of Design Patterns.
Major points paraphrased:
- Patterns are a good way for groups to communicate. They provide a common language to discuss complicated topics.
- When consulting for shops in disarray, Patterns are useful to tease out and describe the intent of the system, and from there to refactor or re-implement the underlying patterns more explicitly.
- Patterns provide folks from different backgrounds a common language to communicate.
- Microsoft is busy identifying Enterprise patterns and wants their Design Patterns to be general enough for any platform, while their Implementation and Infrastructure Patterns are naturally more MS-centric.
- In agile methodologies, the zen path of learn, internalize, forget, and apply is the best practise. Patterns are worthy goals, but to remain flexible it is best to understand their principles, head in their direction, but not consider them a grail. As needs change, so may the patterns necessary to meet them. Always remain aware of and build for the goal and not the sake of the pattern.
- PetShop 3.0 applies three patterns: DAAB, Factory, and a UI Processing Pattern with some parallels to Java MVC. The dev team made large gains in productivity through their application (4,000 pgs/sec, 8,000 users/sec on 4 CPUs). The DAAB is a set of data access routines used in Pet Shop and the Starter Kits, get'em!
It wouldn't be a blog if I didn't have my own thoughts to add.
Communication drives evolution. Hardware issues evolved from issues of communication among components (IRQ's anyone?), and the issue boundaries pushed out to the LAN, WAN, and the Internet. Just as communication standards are necessary for hardware evolution, so are they needed for communication to improve among IT personnel -- Devs, DBAs, Webmasters, Network Admins, everyone. Patterns provide common ground and common definitions. So far so good.
At the same time, it's a little like the olden days of High German vs. Low German. "Proper English" vs. the vernacular used by common folk. Language as a status symbol. Lawyers base their whole careers on unravelling intricacies of language. Patterns are useful as common ground only when used by common people.
Right now Patterns are still considered unapproachable by many, and this must change. Microsoft's Patterns and Practises site is useful to theorists and those who climb the learning curve, but by imposing their own 4-column graph and process (which I happen to like), they make Patterns seem more complex and imposing, not less.
I have a few lightbulbs on the brain that could help guide folks through the darkness. As James Avery wrote, the Lazy Programmer blogs are but the tip of the iceberg.
That's one of three I hit today. More to follow.