Often wonder which is more useful - a pattern capturing and containing the proven experience of a community, or an anti-pattern that helps to keep you clear of trouble?
Anti-patterns?
In the world of patterns and pattern language, anti-patterns get a raw deal. They are mentioned in passing, but do always get the attention they deserve. Let's dig a little deeper. This slide show is a useful introduction and here is an example from HR.
Here is a page from the pattern wiki that helps explain the key role of anti-patterns - they alert you to traps, unforgiving situations, bad places and practices that just do not work! Anti-patterns have also been described as the opposite of a working pattern.
There is a built in bias against uncovering, documenting and propagating anti-patterns - they hurt. Communities would rather gather best practices, discuss solutions that work or experiment with new and promising directions. Revisiting lessons learned is painful, treads on toes, holds individuals and groups to the ridicule of 20/20 hindsight.
Anti-patterns mostly do not form a neat pattern language, where there are clusters, connections, sequence and levels of abstraction - they are rather a collection of things to avoid. Here is the anti-pattern catalog from the Portland Pattern Repository (please excuse the software bias).
Next time you are refractoring or sheparding patterns, think backwards, collect and document the signposts to places you do not wish to visit.
Carol,
I think you are right. Anti-patterns also show the forces at play & solution for moving from a bad place to a more desireable one - these is often not included in LL or CSs.
Posted by: Denham | March 06, 2005 at 01:13 PM
New terminology but an old concept: I would make the argument that we have been tapping into the power of anti-patterns for years -- we called the "case studies" and "lessons learned"!
Posted by: Carol H Tucker | March 06, 2005 at 03:32 AM