The point of patterns is not to describe tricks any of us have invented individually, but solutions many
of us have come up with, independently, to solve a wide range of problems.
In academic or research paradigms, originality is key. With patterns, originality is not important; in fact, the best validation one can give a pattern is to say it's not
original, that it's ubiquitous. We need to find a way to say, "your work is not original" in a way that's positive and supportive. We also need to avoid the net newbie's classic, "Me, too!," with a lengthy restatement or quote of the solution. (See: MeToo
Say "I have this pattern" when you want to reinforce someone else's experience with your own.
I first heard WardCunningham
use this phrase; I've certainly picked up on it. Anyone else HaveThisPattern
? -- PaulChisholm
Not me. I never write "I have this pattern" for seven cents, because I can get the same money for "Me, too". At least write "I have this pattern, too" to make it proper English, please.
used the phrase quite unconsciously at the first meeting of the HillsideGroup
. We were stunned by the phrase and its implications: a pattern is a thing you could have, possibly without knowing, even before it is ever written. -- WardCunningham
I like the phrase because it helps answer a question I've long had: How much duplication should occur (or be tolerated) before I "wrap" the code into a method (i.e., refactor)? Some say do it immediately: (Never Repeat), while others say "three strikes". I feel that Ward's phrase gives me more leeway, the freedom to keep doing or writing something the same way until I feel strongly that I Have A Pattern in my code. It might be a DesignPattern
, or it might just be something like PHP's substr($haystack, 0, 6) which I could read more comfortably as left($haystack, 6) if I'll take the time to write the function (and remember to "include" it). -- EdPoor
Exactly so. I was shocked to find out that the GangOfFour
had "formalized" patterns I had been using in the rather insular world of embedded systems design. (Just goes to show what happens if you don't keep up...)
How fortunate for me that the boss on that gig insisted we were going to "use XP as our development environment," even though we did not implement any
of the practices espoused. I read "ExtremeProgrammingExplained
" as required newbie reading. That was good, because it lead me to "Design Patterns." Not to be too blunt, but if I had seen the name GradyBooch
on the cover without already knowing what was going to be inside I would have RunAwayScreaming
" crystallized several things that had been running around in my head for many years without congealing into specifics. I knew
things had to be easier to design -- the same user interface problems, the same command and control problems, the same information distribution problems. The use of patterns now makes all this stuff look so easy. Patterns kind of drop into place when an architecture is coming together. How relaxing to use something so familiar, eh? -- MartySchrader
After a lengthy RandomWalk
I have linked the notion of HaveThisPattern
, but I haven't quite figured out why. -- MatthewAstley
Before patterns are captured in writing, they are NamelessConcepts: you may know them and not realize it; once they are captured, you realize that you HaveThisPattern. It is necessary to distinguish between patterns as entities and the written
descriptions of captive patterns.
There is a concept that I have used several times, other software developers do, that I call a software pattern,
and its even mentioned in the Software Patterns Gang Book, but, it's not mentioned as a Software Pattern, by itself.
Its called the Dual or Parallel Hierarchy Software Pattern. (Check Wikipedia).
The idea of Software Patterns, is that: "I have this problem, that appears several times, in my projects, I have found that this solution its the best, even if there are other ways to solve it, using this objects or classes. I have found that other developers also deal with the same problem, and some of them use a similar if not equal solution. Let's call it Software Pattern".