something that looks like a good idea, but which backfires badly when applied
I have long been uncomfortable with the term AntiPatterns. From a purely semantic perspective, it is not very accurate. After all, AntiPatterns are Patterns, and often some of the most frequently encountered, most difficult-to-resist patterns there are.
In thinking through the problem, I realized that DarkPatterns captures the idea better for me (YMMV, of course!) I mean Dark here in the Star Wars universe vernacular. I suggest that DarkPatterns are frequently encountered solutions to common problems which:
I hate to contribute to JargonProliferation, but DarkPatterns seems so much more evocative, somehow. What do you think? -- BillBarnett
I've never found any value in AntiPatterns, so a name change still doesn't help me. What do you or others actually find helpful about anti-patterns? -- JoshuaKerievsky
I'm sure the idea is that to know the DarkPatterns or AntiPatterns allows a person to identify one before it is put into production. If we have a problem and while thinking and talking about it we start to re-create that same old DarkPattern again, hopefully one of us will say, "Stop!" because they will be wise in the ways of darkness ... this has never happened to me, I keep touching the hot stove every chance I get. But I like the term DarkPatterns, better too. -- EricHerman
While I haven't seen them articulated as formal AntiPatterns, there are several DarkPatterns that have kept me from making mistakes and helped me steer others away from similar mistakes. BrooksLaw, from Fred Brooks MythicalManMonth, jumps immediately to mind. (And, for a great analysis of why BrooksLaw works, see QualitySoftwareManagement (vol 1).) In fact, several of the systems diagrams that Weinberg develops make very effective DarkPatterns, including the SelfInvalidatingModel and the TitanicEffect. -- BillBarnett
I've written my share of AntiPatterns and I too like DarkPatterns as what they should be called. For example, (self-promotion mode ON) TrainTheTrainer is a classic "dark" pattern because it is so widely used and is so completely bogus. But it continues to be used because underlying it is the desire to save money in a way that is quantifiable while actually costing much more money in ways that don't show up clearly in budget statistics. To quote JackieChiles, "Its insidious, perfidious, outrageous!" I vote for DarkPatterns too. --DonOlson
JoshuaKerievsky, imagine that we are on a project together, and we are both acquainted with the SelfInvalidatingModel DarkPattern. Imagine also, that we're talking about adding a simple little bell or whistle to a module. I might be inclined to say, "Ah, piece of cake, here lemme just take a few minutes and add it in." Then you might be inclined to say, "This is starting to sound like a SelfInvalidatingModel ... be sure not to skip the test cases for that."
Obviously, having a little bit of pattern vocabulary can go a long way from time to time. In this case, I might just say "Oh, good point." If I did not share the vocabulary and wisdom of DarkPatterns, I might be inclined to argue with you and insist that we can JangIt.
In contrast, having completely destroyed all the nerve endings in my fingers, I can now touch that hot stove time after time without hardly noticing! -- EricHerman
Whoa! And here I was, constantly itching and feeling lonely miserable. Thank God they come in ten! Does it ever get normal again?
OK, we've had this debate on the PatternsDiscussion? mailing list. No one agrees. I'm for writing Pattern Languages that document what you guys call AntiPatterns in the form of Problems and Misfits. Either way, it's good that they are being written up. -- JoshuaKerievsky
ChristopherAlexander talked about patterns that have life, and patterns that don't. He is interested in the patterns that promote the QualityWithoutaName, which is the same thing (to him) as life. So, my favorite name for antipatterns is "patterns of death". -- RalphJohnson
I can see some politically incorrect undertones in associating a bad thing with the concept of dark. Anti seems to be a politically correct option.
In several respects, it sounds like AntiPattern and DarkPattern are not the same thing. Also, I am not so sure that what Alexander was after, when naming the QualityWithoutaName, is all that much value to a software designer. In the example he gives he talks about an espaliered peach tree against a wall in the sun whose peaches are warm. Alexander was interested in Oriental Rugs, and little walkways through crowded gardens that opened up onto a surprizingly wonderful place to sit and rest. Ok, some of this poetry may translate to the Interactive Insurance Claim form my team is implementing, but, which field represents the peach, again? One can get carried away with the metaphor. Patterns and AntiPatterns, in terms of their usage in the software design community, remind me more of therapies one might find for the prevention and treatment of disease. Consequently, a pattern in medicine might be WashingOnesHandsBeforeExaminingThePatient?, and an AntiPattern might be, Bleeding4PintsOfBadBlood out of the patient. It seemed a good idea for thousands of physicians for many generations, but the vast majority never realized why it was such a bad idea. Patterns, and AntiPatterns or Dark Patterns encapsulate wisdom gained from experience for the prevention and treatment of sick software designs. -- JohnCave