Borjan Cace, dinsdag 05 augustus 2008
A week ago I discussed the pattern repository of VNA with a colleague. He is a respected and experienced business architect; sharp and skeptical, but a novice in patterns. We have agreed on all issues, but I have fallen somewhat short in answering the simple question “Why would one use patterns?”. My colleague suggested that I write an article on it. In other words, he gave me some time to convince him – I hope this text will do.
Patterns provide a method to document expertise in a domain. The emphasis is on ‘empirical knowledge’: patterns are discovered in working solutions and not invented. This is, in my opinion, of a big value in IT. The ‘run-away’ technology developments generate hype after hype and so many claims are not backed up by any evidence. Expressing knowledge in a pattern-form is inherently empirical. It requires providing an evidence, or at least providing a reason for not providing an evidence (for the time being).
Patterns provide a powerful means of describing design solutions. Each pattern is applicable in a context. The solution that is the result of applying that pattern creates another, ‘resulting’ context. The forces of that new context can be resolved by applying other (smaller) patterns. In that way patterns are linked together. A sequence of such connected patterns can be viewed as a guideline how a larger solution can be created by coherently applying a hierarchy of patterns.
As an example, the sequence of patterns depicted in the figure can be viewed as the guideline for creating a mid-office solution for Dutch Municipalities (the patterns marked with an arrow are already described in the repository of VNA )
These patterns are incomplete. One could add lower design patterns and implementation details to ‘Status Tracking Store’, “Replication in the Middle’ and ‘Business Process Composition’. In addition, patterns could be extended with prototypes and/or links to repositories with software documentation and source code (and, needless to say, business patterns are only suggested).
Patterns stimulate collaborative knowledge building. Writing patterns means capturing the experience of others. Furthermore, authors maintaining a pattern repository on Internet can link their patterns to patterns described by others. This also helps creating a common vocabulary. Even when we are envisaging our own candidate-pattern: “ideas are worth more when given away”.
Both using and writing patterns have educational effect: pattern collections disseminate knowledge. We either learn new ways of solving problems or we learn that the solutions we already knew have also been identified by others. And, of course, patterns help less experienced professionals to solve problems easier.
One way of answering the question of my colleague could have been to repeat a catchy quote from the Internet “Patterns help you learn from other’s successes, instead of your own failures” (attributed to Mark Johnson). Although I fully agree with this statement, a ‘one-liner’ is not enough – there are a lot, even catchier one-liners on Internet a few of us trust. On the other hand, I did not want to write a long article – nobody likes long texts, especially in our modern times when we write more than we can read. To compromise between the one-liner and an elaborate article I’ve summarized only my reasons of using and writing patterns. This also implies that I’m not claiming that I have stressed the most important arguments. If you have other reasons, please add...