It seems to contain too many examples (or examples of poor quality) for an encyclopedia entry.
In software engineering, an anti-pattern (or antipattern) is a design pattern that appears obvious but is ineffective or far from optimal in practice.12
The term was coined in 1995 by Andrew Koenig,3 inspired by Gang of Four's book Design Patterns, which developed the concept of design patterns in the software field. The term was widely popularized three years later by the book AntiPatterns, which extended the use of the term beyond the field of software design and into general social interaction. According to the authors of the latter, there must be at least two key elements present to formally distinguish an actual anti-pattern from a simple bad habit, bad practice, or bad idea:
Some repeated pattern of action, process or structure that initially appears to be beneficial, but ultimately produces more bad consequences than beneficial results, and
A refactored solution that is clearly documented, proven in actual practice and repeatable.
Often pejoratively named with clever oxymoronicneologisms, many anti-pattern ideas amount to little more than mistakes, rants, unsolvable problems, or bad practices to be avoided if possible. Sometimes called pitfalls or dark patterns, this informal use of the term has come to refer to classes of commonly reinvented bad solutions to problems. Thus, many candidate anti-patterns under debate would not be formally considered anti-patterns.
By formally describing repeated mistakes, one can recognize the forces that lead to their repetition and learn how others have refactored themselves out of these broken patterns.
Management by numbers: Paying excessive attention to quantitative management criteria, when these are non-essential or cost too much to acquire
Management by perkele: Authoritarian style of management with no tolerance for dissent
Management by wondering: Expecting a team to define their own objectives, and then wondering what they're doing
Milk Monitor Promotion: A pseudo-promotion (e.g., a better sounding title) with no additional responsibilities or pay increase, which is given as a quick and costless way to make the employee work harder.clarify
Moral hazard: Insulating a decision-maker from the consequences of his or her decision.
Mushroom management: Keeping employees uninformed and misinformed (kept in the dark and fed manure)
Stovepipe: A structure that supports mostly up-down flow of data but inhibits cross organizational communication
Vendor lock-in: Making a system excessively dependent on an externally supplied component
Death march: Everyone knows that the project is going to be a disaster - except the CEO. However, the truth remains hidden and the project is artificially kept alive until the Day Zero finally comes ("Big Bang"). Alternative definition: Employees are pressured to work late nights and weekends on a project with an unreasonable deadline.
Smoke and mirrors: Demonstrating how unimplemented functions will appear
Software bloat: Allowing successive versions of a system to demand ever more resources
Groupthink: During groupthink, members of the group avoid promoting viewpoints outside the comfort zone of consensus thinking.
Analysis anti-patterns
Napkin specification: The Functional/Technical specification is given to the Development team on a napkin - i.e., informally, and with insufficient detail.
Phony requirements: All requirements are communicated to the development teams in a rapid succession of netmeeting sessions or phone calls with no Functional/Technical specification or other supporting documentation.
Retro-specification: To write the Technical/Functional specification after the project has already gone live.
Bystander apathy: When a requirement or design decision is wrong but the people who notice do nothing because it affects more people than them.
Software design anti-patterns
Abstraction inversion: Not exposing implemented functionality required by users, so that they re-implement it using higher level functions
Race hazard: Failing to see the consequence of different orders of events
Railroaded solution: A proposed solution that while poor, is the only one available due to poor foresight and inflexibility in other areas of the design
Yet Another Useless Layer: Adding unnecessary layers to a program, library or framework. This became popular after the first book on programming patterns.
Yo-yo problem: A structure (e.g., of inheritance) that is hard to understand due to excessive fragmentation
Code momentum: Over-constraining part of a system by repeatedly assuming things about it in other parts
Coding by exception: Adding new code to handle each special case as it is recognized
Error hiding: Catching an error message before it can be shown to the user and either showing nothing or showing a meaningless message
Expection handling: (From Exception + Expect) Using a language's error handling system to implement normal program logic
Hard code: Embedding assumptions about the environment of a system at many points in its implementation
Lava flow: Retaining undesirable (redundant or low-quality) code because removing it is too expensive or has unpredictable consequences
Loop-switch sequence: Encoding a set of sequential steps using a loop over a switch statement
Magic numbers: Including unexplained numbers in algorithms
Magic strings: Including literal strings in code, for comparisons, as event types etc.
Monkey work: Term for any general repeated support code required within projects which suffer from poor code reuse and design. Is often avoided and rushed, hence open to errors and can quickly become a Bug magnet.
Packratting: Consuming excessive memory by keeping dynamically allocated objects alive for longer than they are needed
Parallel protectionism: When code becomes so complex and fragile that it is easier to clone a parallel infrastructure than to add a trivial attribute to existing infrastructure
Ravioli code: Systems with lots of objects that are loosely connected
Soft code: Storing business logic in configuration files rather than source code4
Spaghetti code: Systems whose structure is barely comprehensible, especially because of misuse of code structures
Wrapping wool in cotton: Commonly observed when framework methods are contained in single line methods in wrapper classes which provide no useful abstraction
Methodological anti-patterns
Copy and paste programming: Copying (and modifying) existing code rather than creating generic solutions
De-factoring: The process of removing functionality and replacing it with documentation
Improbability factor: Assuming that it is improbable that a known error will occur
Low hanging fruit: Dealing with easier issues first while ignoring larger more complex issues. It can be thought of as to the relative ease with which scientific, philosophical and technological discoveries are made at first compared with the difficulties once the subject has already been explored.clarify
Hostile testing: Antagonizing practical development solutions and workflow with over-testing procedures or over-scheduling test runs
Meta-testing: Overdesigning testing procedures until it is necessary to test them, also known as "watchmen's watchmen"
Moving target: Continuously change design and/or implementation in order to escape established testing procedures
Configuration management anti-patterns
Dependency hell: Problems with versions of required products
Classpath hell: Problems related to specifying Java libraries, their dependencies and their required version to run the application
Extension conflict: Problems with different extensions to pre-Mac OS X versions of the Mac OS attempting to patch the same parts of the operating system
JAR hell: Overutilization of the multiple JAR files, usually causing versioning and location problems because of misunderstanding of the Java class loading model
^ Budgen, D. (2003). Software design. Harlow, Eng.: Addison-Wesley, pp. 225. ISBN 0-201-72219-4. "As described in Long (2001), design anti-patterns are 'obvious, but wrong, solutions to recurring problems'."
^ Koenig, Andrew (March/April 1995). "Patterns and Antipatterns". Journal of Object-Oriented Programming8, (1): 46–48.; was later re-printed in the: Rising, Linda (1998). The patterns handbook: techniques, strategies, and applications. Cambridge, U.K.: Cambridge University Press, pp.387. ISBN 0-521-64818-1. "Anti-pattern is just like pattern, except that instead of solution it gives something thats looks superficially like a solution, but isn't one."