From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
WikiProject Computer science (Rated C-class, Mid-importance)
WikiProject iconThis article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
C-Class article C  This article has been rated as C-Class on the project's quality scale.
 Mid  This article has been rated as Mid-importance on the project's importance scale.

Many Anti patterns listed are valid commercial decisions[edit]

Many of the listed items are not anti patterns, but valid operating models within some commercial frameworks. For instance, a Business may decide to "Cash Cow" a product, deciding to return significant short term financial benefits rather than go for high risk, low reward long term profits. Also, many of the anti-patterns described are contradictory ("Big Ball of Mud" vs "Over Engineering"), and described outside the commercial environment that drives the decisions. These are not anti patterns, they are life..... — Preceding unsigned comment added by (talk) 02:26, 4 February 2013 (UTC)

By definition an anti-pattern has atleast one scenario where it is a valid solution to a problem. --Daydreamer302000 (talk) 12:32, 12 September 2013 (UTC)

The JAPOCC and GGIAN anti patterns are missing[edit]

I'd like to suggest and Anti pattern that captures the concept that not everything that is done badly has to be called an anti pattern and be given a name. More often than not, its Just Another Piece Of Crappy Code pattern, or the "Gotta Give It A Name" pattern — Preceding unsigned comment added by (talk) 02:15, 4 February 2013 (UTC)

Section Suggestion: User Interface Antipatterns[edit]

I'd like to add a section on User Interface antipatterns and "Dark Patterns" (purposefully bad UI design intended to trick users). That OK? — Preceding unsigned comment added by Harrybr (talkcontribs) 11:18, 30 December 2010 (UTC) Also, the article suggests dark patterns are an alternative name for antipatterns. If you Google the term "Dark Pattern" you'll see this isn't accurate.


The term anti-pattern is a neologism inspired by a particular book (WP:COI?). The phrase seems to have other meanings (see Other uses below) and its usage in this case is obscure. And the article seems to be mostly an unsourced collection of Dilbert-style grumbles. The more common phrase for this concept is bad habit so I'm going to be bold and move to that title. Under the new title, the concept will be more generally useful. Colonel Warden (talk) 11:37, 26 March 2008 (UTC)

That's done. Rewriting the article will take some time and there may be some opposition so I'll leave it at that for now. More anon. Colonel Warden (talk) 11:42, 26 March 2008 (UTC)

  • STRONGLY object to this move. The term "anti-pattern" is well-established in the CS literature and has been for over a decade; it is not a neologism. Am requesting an admin move it back. --EngineerScotty (talk) 21:39, 26 March 2008 (UTC)
  • The definition of WP:NEO is Neologisms are words and terms that have recently been coined, generally do not appear in any dictionary, but may be used widely or within certain communities. Since this term does not appear in authoritative dictionaries such as the OED, it is certainly a neologism. The concept it describes is not a new one - people have been making systematic blunders throughout history. All we have here is old wine in new bottles. Colonel Warden (talk) 10:08, 27 March 2008 (UTC)
  • A search of Google Scholar shows a reasonably large number of scholarly publications (mostly CS from my quick browse of the results) that use the term "anti-pattern", which seems to indicate that the term has entered the technical lexicon. That said, I agree that the article itself consists mostly of unsourced lists of dubious quality. I don't see much point in having the big lists, particularly since they're mostly just going to be duplicating PPR's AntiPatterns Catalog anyway. --Allan McInnes (talk) 05:48, 27 March 2008 UTC)
  • I have created Bad habit as a separate article with a natural focus on personal bad habits. That article is just a stub but already has more references than this tendentious neologism. It is a bad habit of computer geeks to think that their business is something special and so deserves an article for every bit of whimsical jargon. This is systemic bias. Colonel Warden (talk) 14:15, 27 March 2008 (UTC)
    • Nonsense--Wikipedia is larded with articles on every bits of the "whimsical jargon" found in *numerous* disciplines and fields of study--CS is probably one of the easier ones to cover, as most of the technical jargon in CS is fairly well defined, and those things that aren't (i.e. "object") are nonetheless the subject of much discussion in the literature. Technical jargon != neologism. Now, a technical term that is only used by one author or in one paper, and not accepted by a wider academic or professional community--that is neologism. (Or protologism). And most technical jargon starts out as neologism, with some being accepted by a community (and becoming part of the lingua franca of that community), and other bits of technical jargon not becoming so. But Wikipedia is not paper, and is certainly free to cover well-established technical terminology in detail. Remember, perceived "importance" is not an issue here; the ability to write a well-sourced article is what determines whether or not something is worthy of coverage. --EngineerScotty (talk) 16:46, 27 March 2008 (UTC)
      • This article is not well sourced and it is not well-titled. The term antipattern is not as prevalent as you suggest. The search of Google scholar above yields 719 hits and that includes other usages. If I try other searches in plain English, I get more hits, e.g.
My impression remains that this is a fashionable neologism being pushed by a small clique of authors who have books to sell. Bad practise and design existed long before they wrote a book about it and will no doubt continue under many names... Colonel Warden (talk) 19:17, 27 March 2008 (UTC)
  • I too object to the move. In spite of its flaws, this article is useful, it contains what people want/need to know, and it is where most computing professionals will expect it, while they would scarcely stumble on Bad habit. That article, incidentally, could well become interesting, but one sees at once that it is a different topic, and I suspects its references are there to prove a point - and this article has more external links and further reading. As to whimsy, that seems to fit a lot of the articles in User:Colonel Warden/creations. Bad practice has indeed been around for a long time, but this approach to recognising, avoiding and repairing it in programming and elsewhere seems to deserve a term of its own. As to "neologism", I feel it was one ten years ago, but is no longer, even if it hasn't made it into the OED, which reacts slower than Wikipedia. I agree that this article has some problems, but feel that is outweighed by its utility. It certainly needs regular pruning and maintenance, as people stick in their pet grudges, which seem to be concentrated in the managerial/organisational rather than technical sections. Another problem is that limiting it strictly to anti-patterns at the expense of e.g. pitfalls involves tricky judgements and makes it less useful, as the borders are a bit fluid. It has also been suggested it should just be a category, but for that it has too much substance of its own and useful descriptions on the links. Perhaps it is worth standing back and trying to say what we want the article to achieve. PJTraill (talk) 01:58, 28 March 2008 (UTC)
  • Typically what happens in such cases is that the long list of examples is spun off into a separate List article and people then fight over what should be included. See List of massacres, for example. If the basis for inclusion is not clear then the article will then usually fail at AFD, as in the recent case of List of Geordies. In any case, if there isn't a reliable source saying that something is an anti-pattern, then it should go, as the term is derogatory. I wouldn't consider the creators of this neologism to be acceptable since they have a commercial interest in casting their net wide and so are not independent. What we want are examples of serious secondary usage. Right? Colonel Warden (talk) 08:07, 28 March 2008 (UTC)
  • Object. WP:NEO is satisfied, it allows an article about this term: To support the use of (or an article about) a particular term we must cite reliable secondary sources such as books and papers about the term—not books and papers that use the term. This is satisfied, period. We can argue about WP:COMMONNAME for a "a design pattern or behavioral pattern that should be better avoided" in a separate thread. I'd say it is a common name. We can argue also if the article is properly sourced: it is NOT. It cites mainly a primary source, which is against WP:RS. There is a lot of secondary sources. Your argument about "individuals casting the commercial net" completely misses the point (!), but proves that intro section should be re-written if it gave you such impression. --Kubanczyk (talk) 10:19, 11 April 2008 (UTC)
Rewritten intro, provided sources, please comment. --Kubanczyk (talk) 14:27, 11 April 2008 (UTC)
I'm not sure that you've touched this bit but, according to the current lede, an anti-pattern requires that there be a refactored solution, i.e. another way of writing the code to achieve the same effect but without the technical drawbacks. For example, spaghetti code might be rewritten in a more structured way. This seems to limit the concept quite tightly to coding issues. So, why do we have all the Dilbert stuff about bad management? This belongs to organisation theory, not computer science and so should be purged from this article, right? Or is the lede's definition wrong? Colonel Warden (talk) 15:54, 11 April 2008 (UTC)
I would say that the whole idea expanded from the OO design pretty much into IT project management. Maybe further into org/mgmt theory. WP:RS needed. But my source-browsing battery is totally depleted. --Kubanczyk (talk) 17:52, 11 April 2008 (UTC)
The anti-pattern here is adding endless examples of bad behaviour without any verification. The refactored solution is to exclude anything that doesn't have a reliable source. See - anyone can play this anti-pattern game. I'll source a few entries to show how it's done and then toss out all the other examples. Colonel Warden (talk) 18:20, 11 April 2008 (UTC)
Mhm, but that's not actually an anti-pattern. It's just the Bad Thing :)) If I were you I would start with removing links that describe a bad thing, instead of describing a "supposedly good thing that turns bad later". For example Death march (software development) is not an anti-pattern. But per WP:V it's really up to you. --Kubanczyk (talk) 19:00, 11 April 2008 (UTC)
No, simple deletionism is an anti-pattern because it does not demonstrate the correct way forward. The refactored solution is to lead by example. But I find that some sources seem to give examples which seem wholly negative and so are just bad things. These sources seem unreliable but it may be difficult to exclude them. I favour a tabular structure in which we have several columns: a) the antipatterm b) its false promise c) the refactored solution. Colonel Warden (talk) 19:25, 11 April 2008 (UTC)
I like the idea of the three column table! "A proper pattern example" seems like a better name for the third column. My concern is, that sometimes the third column could contain A LOT of text. There are types of problems that have 3 or more equally excellent solutions. --Kubanczyk (talk) 19:59, 11 April 2008 (UTC)

Other uses[edit]

In the course of checking this neologism, I find that it is used in computer science with a different sense to the current Dilbertisms. See, for example, Anti-pattern Matching in which the usage seems more sensible. The term pattern is a long-standing one in computer science which conforms to general usage. Trying to use the term to also mean methodology, practise or style is confusing and unnecessary. Colonel Warden (talk) 10:41, 27 March 2008 (UTC)

Again, if you refer to the Google Scholar search I linked to above (or better yet, one that looks for occurrences of "anti-pattern" and "software"), you'll find that the term anti-pattern seems to be used in scholarly CS literature more in the sense of the current article. Yes, the article you link to appears in the first 10 hits. But over half of the first 10 hits are links to articles that use anti-pattern in the sense described in this article. For example, the abstract of the top hit says: "We present a library of 38 antipatterns, which describe predefined recognized sources of multithreading related errors in the code."
Personally, I'm not particularly fond of the term "anti-pattern". But the fact remains that it is in common use in scholarly literature, and the usage is predominantly the one promulgated in this article. I do think that the (as you call them) "Dilbertisms" are misplaced here, since the use of anti-pattern in the literature seems to be focused more on technical design errors than on management foibles. But I suspect that kind of thing could be cleaned up by being more stringent in requiring sources for any listed anti-patterns. --Allan McInnes (talk) 15:44, 27 March 2008 (UTC)
The example given (an anti-pattern meaning a way of matching negative and positive criteria) seems itself a neologism, and far less well-established. If it becomes established, good luck to it, but it has little bearing on this discussion. Moreover, I am not sure what this separate thread is for, and it seems a bit like a distraction from the previous thread. PJTraill (talk) 01:16, 28 March 2008 (UTC)
It's a separate thread because it is a separate issue. That's all. Colonel Warden (talk) 07:41, 28 March 2008 (UTC)

Milk monitor promotion[edit]

In the long run, are the results negative to either organization or an employee? --Kubanczyk (talk) 11:57, 5 June 2008 (UTC)

What does this matter? the point is that the promotion is a facade
Because if the results are not clearly negative then this does not meet the friggin DEFINITION of "anti-pattern" and becomes just a "pattern"; the definition is at the very top of this article! --Kubanczyk (talk) 11:57, 5 June 2008 (UTC)
The results ARE clearly negative! The employee is given more responsibility and no extra pay.
The description says otherwise: he is given "no more responsibility and no extra pay"; he is expected to work harder but he is not expected to; where are the clearly negative results? --Kubanczyk (talk) 11:57, 5 June 2008 (UTC)
The results are negative because in the short or long term the employee will consider that this is not a win win relationship. This will do lose his motivation.The result: an employee with less motivation is an employee with less productivity -- Maxi parisi 14:31, 20 December 2008 (UTC)

DLL Hell an anti-pattern?[edit]

Is this sourced? While the multiple-copies-of-one-library thinking may be an example of an anti-pattern, is the "Hell" part? Surely that's the outcome, rather than the rationale? Chris Cunningham (not at work) - talk 09:25, 22 July 2008 (UTC)

Web of Referral[edit]

A specific Mushroom Management pattern is when managers mutually refer to each other when giving informing on decisions and responsibility to employees of a lower rank. The manager supposedly responsible, is typically not present or available. —Preceding unsigned comment added by (talk) 11:05, 13 January 2009 (UTC)

Reducing the Examples List - Removal of redlink and unreferenced items[edit]

I propose that the Organisational and Project Management sections be removed entirely. Each example doesn't demonstrate a pattern - just bad practice or bad habit. Surely to be a pattern (or anti-pattern) then it needs to be repeatable in a systematic way. Also, I still regard "patterns" and hence "anti-patterns" to be specifically IT software development related. For me the Organisation and PM sections don't really belong here as examples. Agree / disagree ??? Liassic (talk) 14:35, 7 January 2009 (UTC)

Agree, this article is full of OR. I went through and removed all the redlinked, unreferenced items. Jfire (talk) 23:12, 3 February 2009 (UTC)
The article looks a lot better now. Perhaps future contributors will now make sure that they create an actual article before adding anymore dead links to this page? Let's hope. --Daydreamer302000 (talk) 09:27, 5 February 2009 (UTC)
I have re-instated the "gas factory" and "n-tier" anti-patterns that you removed. Simply because they do not have a backing article does not mean they are not significant. In fact I would rate "gas factory" as one of the most important today. And a classic example of "n-tier" is OSI which computer companies spent billions on in the 80s.
I will attempt to add the backing articles for these shortly. In the meantime it is useful to leave them as a placeholder and for their brief but useful description. -- AndrewWPhillips (talk) 07:50, 9 June 2010 (UTC)
Your enthusiasm is appreciated, but Encyclopedic articles should not have 'placeholders' in them. It is proper form here to create the articles first and then link them to related articles where appropriate. I recommend using the sandbox feature of Wikipedia to get the basic articles together and ensure that you can find valid references to back up any major points. As such, this article appears incomplete with these red links and even has the appearance of original research. If these anti-patterns were truly as notable (significant) as you state, it should be no problem to atleast find a single reference to justify their inclusion onto the list. Also, there is atleast one article, expectation handling, which has already been deleted through a RFD due to the fact that there did not exist any valid references or proof of notability. When you did your undo, you reverted a change that had already been challenged and was thus quite valid. And there may have been others. Don't use a blanket undo for just a couple of changes. I'm going to redo my removal of the red-linked articles. If you do want to put any back, please create the articles first (make sure you've got references or they will be deleted faster than you can blink!), and put back in only those articles that have a related Wiki page. Daydreamer302000 (talk) 11:45, 28 July 2010 (UTC)
Organisational and Project Management "anti-patterns" (or simply bad practice) should be separated more clearly from software anti-patterns - or maybe removed alltogether, since there is the danger of every bad habit in every conceivable area being labeled an "anti-pattern". -- (talk) 21:57, 7 March 2009 (UTC)
This article attracts the uncited addition of many ostensible anti-patterns which are likely original research. I've reverted your addition as such, and I agree that unless they can be cited to reliable sources which refer to them as anti-patterns many of the remaining examples should probably be removed as well. Jfire (talk) 22:13, 7 March 2009 (UTC)
Does this [1] count as a reliable source? If yes, where am I supposed to cite it for the creation of a new list entry? The Java "import static" statement is explained there as a way to avoid the "Static Interface Antipattern". I believe that it is a legitimate entry for in this list of software anti-patterns. -- (talk) 23:12, 7 March 2009 (UTC)
The Java docs could indeed be a reliable source. It's a decent start for an entry about the "Constant Interface Antipattern" (I don't see it referred to as the "Static Interface Antipattern"). Even better would be to reference what appears to be the original source: Effective Java (Item 17). Do you have access to that source? Jfire (talk) 01:22, 8 March 2009 (UTC)
Yes, I'll try to summarize it in a new article. --Libsoc (talk) 09:59, 8 March 2009 (UTC)

Irony in 2nd paragraph[edit]

Found the sentence "Often pejoratively named with clever oxymoronic neologisms, many anti-pattern ideas amount to little more than mistakes, rants, unsolvable problems, or bad practices to be avoided if possible. " to be a classic example of an anti-pattern. Thanks! haha —Preceding unsigned comment added by (talk) 18:10, 6 September 2009 (UTC)


Why is this article rated as Top importance for the Computer Science wikiproject? Is it really at the same level as Graph Theory, Sorting algorithm, P vs NP, Donald Knuth or Operating System? I'm demoting it to Medium. Diego (talk) 12:00, 7 April 2010 (UTC)

It was rated higher than Design pattern (computer science)!!! Nonsense. Diego (talk) 12:02, 7 April 2010 (UTC)
This was probably my fault. When I go on my assessment runs I do a lot of copy/pasting and on rare occasion, if things get moving quickly, I don't always remember to adjust the class/importance respectively. I'd still probably rate this as High (yes, even higher than Design Patterns, as this topic is considerably more generic) but that is a disputable point. Anyway, good catch. Daydreamer302000 (talk) 10:53, 1 September 2010 (UTC)

Waterfall Model description[edit]

[New guy here - please be gentle :-)]

Just wanted to suggest that the entry under "Project Management Anti-patterns > Waterfall Model" appears to violate both NPOV and lack of citation.

Original entry (diff) could still use a citation, but isn't quite so egregiously biased. Thoughts? TheOnlyCueball (talk) 05:26, 25 March 2011 (UTC)

I don't think the waterfall model belongs here, (I'm working in Agile), the waterall model is fairly well established, and is generally successsful [citation needed]--Oxinabox (talk) 13:16, 20 July 2011 (UTC)

Anti agile[edit]

What's the deal with the anti agile comments in the article? i dont think its the appropriate place for this nonsense

"but is far more robust than so called agile methods which are a trial and error approach to software development that ignores any a priori systems architecture thus leading to unintended consequences."

"Programming by permutation (or "programming by accident"): Trying to approach a solution by successively modifying the code to see if it works. This is the essence of the agile approach. "

I agree, Test Driven Design, as a bad thing? --Oxinabox (talk) 13:25, 20 July 2011 (UTC)

Random Aside[edit]

While I'm not 100% sure of the terminology, the pokemon anti-pattern does exist. It's bad practice to catch every single error, you should only catch the relevant ones and allow the language framework to throw any other further up for analysis and handling — Preceding unsigned comment added by (talk) 08:22, 27 August 2011 (UTC)

Most brief complete definition of Anti-pattern[edit]

How can we begin to improve our definition of Anti-pattern?

I see we found outside sources for our: An anti-pattern (or antipattern) is a pattern used in social or business operations or software engineering that may be commonly used but is ineffective and/or counterproductive in practice.

I see offers us the more cogent: (software engineering) A design pattern that may be commonly used but is ineffective and/or counterproductive in practice.

In my own world I'd more likely say: A familiar, convenient, intuitive, natural, popular way of overwhelming yourself with complexities of your own making, like shooting your self in the foot

How can we even begin to ask a tool like Google where the original research on this is?

Pelavarre (talk) 20:09, 25 October 2013 (UTC)

Is Organized Religion an Anti-Pattern?[edit]

I ask this as a spiritual person who thinks this is a very interesting question. It seems when humans try to speak for God and shape their actions and behaviors on what they believe to be God's rules and use this to create formalized inflexible protocols for every situation they encounter, much good appears to come from it initially. Over time, things degenerate as God's actual intentions for particular situations that arise (especially as society and culture changes) cannot be acted upon because they come in conflict with the established rules and protocols of the organized religion. People get burned by this, then hate God without realizing that they should be hating organized religion instead. In the absence of God, morals degenerate and the very things that organized religion was trying to help, ultimately brings much harm. (It looks like much thought about anti-pattern can take place outside the field of computer science.) DavidPesta (talk) 15:18, 9 March 2014 (UTC)

What do you see as the recurring problem that organized religion is attempting to solve? Eric Corbett 16:50, 9 March 2014 (UTC)

Analysis paralysis[edit]

Which book are you referring to when you say "try reading the book"? Also, if the linked page analysis paralysis is wrong in its software development section, you should probably correct that first, because this article should just give a brief one-sentence summary of that article - it's more important that that article be right. Finally, it makes no sense to take about the "analysis phase" of an agile project which doesn't have phases.--greenrd (talk) 21:56, 3 January 2015 (UTC)

It's not my job to fix every single article in WP, and may I remind you that WP is not a reliable source in any event. In other words, it doesn't matter what the linked article says. Eric Corbett 22:00, 3 January 2015 (UTC)
So can I take it that the book you're referring to is Antipatterns by William J. Brown?--greenrd (talk) 23:02, 3 January 2015 (UTC)
How many other books on antipatterns are you aware of? Have you read it yourself? Eric Corbett 23:09, 3 January 2015 (UTC)

Is hatnote necessary?[edit]

As the book AntiPatterns is already mentioned in the lead paragraph, the hatnote constitutes overlinking and possibly legitimate article content that does not belong in a hatnote. Is any of this a valid reason to remove the hatnote? --SoledadKabocha (talk) 03:51, 1 June 2015 (UTC)

Resolved by another user --SoledadKabocha (talk) 00:45, 31 October 2015 (UTC)

Callback hell[edit]

Recommend adding this, as it's a well known anti-pattern on javascript. ref: — Preceding unsigned comment added by (talk) 20:11, 24 October 2015 (UTC)

Telescoping constructor[edit]

The Builder pattern is cited as being a software design solution to the "telescoping constructor anti-pattern that occurs when the increase of object constructor parameter combination leads to an exponential list of constructors." Also discussed here. SteveChervitzTrutane (talk) 05:40, 4 August 2017 (UTC)

Rube Goldberg Machine[edit]

Seems like Rube Goldberg machine could qualify as an anti-pattern, with the antidote being Occam's razor. This anti-pattern could be applicable to either organizational or engineering realms. SteveChervitzTrutane (talk) 05:56, 4 August 2017 (UTC)