{"id":8027191,"date":"2017-03-31T12:34:14","date_gmt":"2017-03-31T19:34:14","guid":{"rendered":"https:\/\/test-agilealliance.pantheonsite.io\/?post_type=aa_glossary&#038;p=8027191"},"modified":"2022-08-30T09:10:06","modified_gmt":"2022-08-30T16:10:06","slug":"antipattern","status":"publish","type":"aa_glossary","link":"https:\/\/agilealliance.org\/glossary\/antipattern\/","title":{"rendered":"AntiPattern"},"content":{"rendered":"<p>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:<\/p>\n<ul>\n<li>It is a common practice that initially looks like an appropriate solution but ends up having bad consequences that outweigh any benefits<\/li>\n<li>There\u2019s another solution that is known, repeatable, and effective.<\/li>\n<\/ul>\n<p>The concept of antipatterns was inspired by the concept of design patterns, which indicate common effective solutions to common problems.<\/p>\n<p>Antipatterns were initially applied in the context of software development, but have extended to other aspects of software engineering, organizations, and project management.<\/p>\n<p>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.<\/p>\n<hr \/>\n<h2>Also Known As<\/h2>\n<p>The term has a variety of spellings which, at this writing, seem to be equally prevalent in use. \u00a0Those include anti patterns and anti-patterns.<\/p>\n<p>These are also known as \u201cbad ideas\u201d, but antipattern is considered a kinder label.<\/p>\n<p>Other terms used include code smells and design smells.<\/p>\n<hr \/>\n<h2>Origins<\/h2>\n<p>1995 Andrew Koenig originally coined the term antipattern in the March \u2013 April 1995 edition of the Journal of Object Oriented Program: \u201cAn antipattern is just like a pattern, except that instead of a solution it gives something that looks superficially like a solution, but isn\u2019t one.\u201d<\/p>\n<p>1998 Linda Rising reprints Keonig\u2019s definition of antipattern in the\u00a0<a href=\"http:\/\/amzn.to\/2nT2nbC\">The patterns handbook: techniques, strategies, and applications.<\/a><\/p>\n<p>1998 The book\u00a0<a href=\"http:\/\/amzn.to\/2mWaNiX\">AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis<\/a>\u00a0popularized the term.<\/p>\n<hr \/>\n<h2>Further Reading<\/h2>\n<p>The Wikipedia entry on Anti-Patterns contains <a href=\"https:\/\/en.wikipedia.org\/wiki\/Anti-pattern#Examples\">a list of commonly referenced antipatterns<\/a>.<\/p>\n<p><a href=\"http:\/\/wiki.c2.com\/?AntiPatternTemplate\">Template for describing antipatterns<\/a>\u00a0similar to the patterns template from the C2 Wiki<\/p>\n<p><a href=\"http:\/\/amzn.to\/2mWaNiX\">AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis<\/a>\u00a0by William J. Brown, Hays W. McCormick, Scott W. Thomas and Thomas J. Mowbray<\/p>\n<p><a href=\"http:\/\/amzn.to\/2nnUQxE\">AntiPatterns and Patterns in Software Configuration Management<\/a>\u00a0by William J. Brown, Hays W. McCormick, and Scott W. Thomas<\/p>\n<p><a href=\"http:\/\/amzn.to\/2nrSs9P\">AntiPatterns in Product Management<\/a>\u00a0by William J. Brown, Hays W. McCormick, and Scott W. Thomas<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Antipatterns are common solutions to common problems where the solution is ineffective and may result in undesired consequences. <\/p>\n","protected":false},"author":12,"featured_media":8067461,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","categories":[908],"tags":[],"class_list":["post-8027191","aa_glossary","type-aa_glossary","status-publish","has-post-thumbnail","hentry","category-process"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_glossary\/8027191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_glossary"}],"about":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/types\/aa_glossary"}],"author":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/comments?post=8027191"}],"version-history":[{"count":0,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/aa_glossary\/8027191\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/media\/8067461"}],"wp:attachment":[{"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/media?parent=8027191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/categories?post=8027191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agilealliance.org\/wp-json\/wp\/v2\/tags?post=8027191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}