Top Qs
Timeline
Chat
Perspective
Anti-pattern
Solution to a problem that may be commonly used but is generally a bad choice From Wikipedia, the free encyclopedia
Remove ads
An anti-pattern is a solution to a class of problem which may be commonly used but is likely to be ineffective or counterproductive.[1][2] The term, coined in 1995 by Andrew Koenig, was inspired by the book Design Patterns which highlights software development design patterns that its authors consider to be reliable and effective.[3] A paper in 1996 presented by Michael Ackroyd at the Object World West Conference described anti-patterns.[3] It was, however, the 1998 book AntiPatterns that both popularized the idea and extended its scope beyond the field of software design to include software architecture and project management.[3] Other authors have extended it further since to encompass environmental, organizational, and cultural anti-patterns.[4]
![]() | This article only references primary sources. (September 2025) |
According to the authors of Design Patterns, there are two key aspects of an anti-pattern that distinguish it from a bad habit, bad practice, or bad idea. First, an anti-pattern is a commonly used process, structure or pattern of action that, despite initially appearing to be appropriate and effective, has more bad consequences than good ones. Second, another solution exists to the problem that the anti-pattern is attempting to address. This solution is documented, repeatable, and proven to be effective where the anti-pattern is not.
A guide to what is commonly used is a "rule-of-three" similar to that for patterns: to be an anti-pattern it must have been witnessed occurring at least three times.[5]
Documenting anti-patterns can be an effective way to analyze a problem space and to capture expert knowledge.[6] While some anti-pattern descriptions merely document the adverse consequences of the pattern, good anti-pattern documentation also provides an alternative, or a means to ameliorate the anti-pattern.[7]
Remove ads
Examples
Summarize
Perspective
In software engineering
In software engineering, anti-patterns include:[7]
- God object
- A single class handles all control in a program rather than control being distributed across multiple classes.
- Magic number
- A literal value with an important yet unexplained meaning which could be replaced with a named constant.
- Poltergeist
- Ephemeral controller classes that only exist to invoke other methods on classes.
- Big Ball of Mud
- A software system that lacks a perceivable architecture. Although undesirable from a software engineering point of view, such systems are common in practice due to business pressures, developer turnover and software entropy.
In project management
Project management anti-patterns included in the Antipatterns book include:[4]
- Blowhard Jamboree
- An excess of industry pundits
- Viewgraph Engineering
- Too much time spent making presentations and not enough on the actual software.
- Death by Planning
- Spending too much effort planning.
- Fear of Success
- Irrational fears near to project completion.
- The Corncob
- Difficulties with people.
- Intellectual Violence
- Intimidation through use of jargon or arcane technology
- Irrational Management
- Bad management habits.
- Smoke and Mirrors
- Excessive use of demos and prototypes by salespeople.
- Throw It Over the Wall
- Forcing fad software engineering practices onto developers without buy-in.
- Fire Drill
- Long periods of monotony punctuated by short crises.
- The Feud
- Conflicts between managers.
- e-mail Is Dangerous
- Situations resulting from ill-advised e-mail messages.
Remove ads
See also
- Code smell – Characteristic of source code that hints at a quality problem
- Design smell – Term in computer programming
- Dark pattern – Deceptive user interface designs
- List of software development philosophies
- List of tools for static code analysis
- Software rot – Process of software deterioration
- Software Peter principle – Engineering term for a complex, failing project
- Capability Immaturity Model
- ISO/IEC 29110: Software Life Cycle Profiles and Guidelines for Very Small Entities (VSEs)
- List of software anti-patterns
- The Innovator's Dilemma – 1997 book by Clayton M. Christensen
Remove ads
References
Further reading
External links
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads