Antipatterns are common solutions to common problems where the solution is ineffective and may result in undesired consequences. An antipattern is different from bad practice when:
- It is a common practice that initially looks like an appropriate solution but ends up having bad consequences that outweigh any benefits
- There’s another solution that is known, repeatable, and effective.
The concept of antipatterns was inspired by the concept of design patterns, which indicate common effective solutions to common problems.
Antipatterns were initially applied in the context of software development, but have extended to other aspects of software engineering, organizations, and project management.
Coaches and consultants like to invoke antipatterns as a way of pointing out behavior they often see in teams they coach and as an avenue of suggesting better patterns.
Also Known As
The term has a variety of spellings which, at this writing, seem to be equally prevalent in use. Those include anti patterns and anti-patterns.
These are also known as “bad ideas”, but antipattern is considered a kinder label.
Other terms used include code smells and design smells.
Origins
1995 Andrew Koenig originally coined the term antipattern in the March – April 1995 edition of the Journal of Object Oriented Program: “An antipattern is just like a pattern, except that instead of a solution it gives something that looks superficially like a solution, but isn’t one.”
1998 Linda Rising reprints Keonig’s definition of antipattern in the The patterns handbook: techniques, strategies, and applications.
1998 The book AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis popularized the term.
Further Reading
The Wikipedia entry on Anti-Patterns contains a list of commonly referenced antipatterns.
Template for describing antipatterns similar to the patterns template from the C2 Wiki
AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis by William J. Brown, Hays W. McCormick, Scott W. Thomas and Thomas J. Mowbray
AntiPatterns and Patterns in Software Configuration Management by William J. Brown, Hays W. McCormick, and Scott W. Thomas
AntiPatterns in Product Management by William J. Brown, Hays W. McCormick, and Scott W. Thomas