Pattern Value System

The ethics stem from a session that NormKerth ran at the first PLoP, and it ties back to ethical concerns that the early software pattern advocates held crucial to the success of patterns. I've written about them to some extent in some of the columns I've written for C++ Report, and you can find extended discussion of them in the SoftwarePatterns management briefing from SIGS (which I understand is going to be taken over by ColumbiaUniversityPress? and redistributed, hopefully at a reasonable price). Here's a summary of things pattern-writers should be concerned about. Most of them take some inspiration from Alexander's work, and it's probably a good idea for every pattern practitioner to spend a good amount of time reading at least the more accessible of Alexander's works: Are these universally held? No. Do we follow them as much as we'd like to? No. But they're fairly normative across the pattern culture. And most of them have quite a bit of thought behind them; they aren't just arbitrary. They come from a growing community of people who care.

Tasteful editing is invited.

-- JimCoplien
Interesting. I don't understand it yet. It seems to express some of the differences between patterns and other related approaches. For example, tools like wizards and code generators share the "aggressive disregard for originality", but to me they seem to devalue the coder and replace the expert. And that seems natural while this pattern ethics seems self-contradictory. Probably the resolution of that conflict lies in affirming the complexity of the real world. Automate what can be automated, but accept that you cannot automate everything. -- DaveHarris
Yes -- I would heartily agree with that. Some things can be automated -- by all means automate them. Some things that were patterns to me as an assembly language programmer and compiler writer of 25 years ago are now automatable, so today's patterns may be tomorrow's automatable stuff.

I think you have this just right -- so many people have trouble seeing that this balance can exist... Are you sure you don't understand it? :-)

-- JimCoplien
I'm not sure "automating" things is what I'm about when I'm working with patterns. I view it as something more like templates -- where a "pattern" is something more like the thing a dressmaker or cabinetmaker uses.

While I don't find "simple" patterns, like mail merge programs, emacs macros, and c #defines, very interesting, something profound happens when the pattern and its application can be interchangeable.

As DouglasHofstadter says in LTbdM:

But now imagine a repertoire of more and more templates, ever more complex -- thousands, perhaps millions. Imagine further that when a template's blanks are filled, other templates can be used as fillers, thus producing nested structures, and this can go on for any number of levels, thus allowing blanks to be filled in by whole phrases, themselves possibly having further filled blanks inside them -- and so on. Imagine the steadily increasing subtlety of the data used to guide the selection fo the most suitable template out of a vast set of potential templates store in memory, and to guide the filling-in of the chosen template's slots. Imagine putting sentences together from more and more small units, making less and less use of long, purely canned, rigid phrases. At some point, the performance is going to become surprisingly and impressively fluid-seeming.

Substitute "pattern" for "template", and you begin (I hope...) to see my personal view of what "this pattern stuff" is all about.

-- TomStambaugh
Ive sort of coined my own pet-phrase for what Cope says in the third bullet above (To hype patterns beyond these modest roles ...). I mentioned it during an email correspondence with DougLea. Doug singled out the phrase, saying he "loved it!" and thought it was worth mentioning somewhere more public (so I thought I'd record it here ;-)

I call it The Hype-No-Cratic Oath: First, do no hype!


View edit of December 29, 1998 or FindPage with title or text search