patterns and antipatterns
“Patterns are the recurring solutions to the problems of design. People learn patterns by seeing them and recall them when need be without a lot of effort. Patterns link together in the mind so that one pattern leads to another and another until familiar problems are solved. That is, patterns form languages, not unlike natural languages, within which the human mind can assemble correct and infinitely varied statements from a small number of elements.”
“Design patterns are important to software development as witnessed by the amount of coverage they get in the technical trade press. But as useful as they are in the development process, design patterns solve only half the puzzle. Antipatterns – which describe 'a commonly occurring solution to a problem that generates decidedly negative consequences'”
links
- portland pattern repository http://c2.com/ppr/
- directions and implications for advanced computing: http://www.cpsr.org/conferences/diac02 with their pattern clusters at http://www.cpsr.org/conferences/diac02/patterns/clusters.html
- Workshop on Socio-Technical Pattern Languages http://swiki.darmstadt.gmd.de/gw-patterns/cscw2002
reading
- Design Patterns in Dynamic Programming, by Peter Norvig http://www.norvig.com/design-patterns/ppframe.htm
- A Pattern Language by C. Alexander, et al. Oxford University Press, 1977. ISBN 0-19-501-919-9. online summary → http://members.ozemail.com.au/~butter/pattern/index.htm
- writings by Richard Gabriel on topics such as AI, patterns, programming, socity and art, http://www.dreamsongs.com/Essays.html and “patterns of software” in particular http://www.dreamsongs.com/NewFiles/PatternsOfSoftware.pdf
related, essay on the similarities and differences with the Design Process and the Research Process . http://paulgraham.com/desres.html