Anti-pattern
Template:Short description Template:Only primary sources
An anti-pattern is any common but counterproductive solution to some class of problem.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. The term, coined in 1995 by Andrew Koenig, was inspired by the book Design Patterns which highlights reliable and effective software development design patterns.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. Michael Ackroyd described anti-patterns in a paper presented at the 1996 Object World West Conference.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. The 1998 book AntiPatterns popularized the idea and extended its scope beyond software design to include software architecture and project management.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. Other authors have extended it further to encompass environmental, organizational, and cultural anti-patterns.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
An anti-pattern can be distinguished from a bad habit, bad practice, or bad idea by two traits. First, anti-patterns are commonly used processes, structures or patterns of action that initially appear to be appropriate and effective, but have greater drawbacks than benefits. Second, there is another way to solve the problem that is documented, repeatable, and effective where the anti-pattern is not.
Similar to patterns, a "rule-of-three" applies: to be an anti-pattern it should have occurred at least three times.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
Documenting anti-patterns can help to analyze a problem space and to capture expert knowledge.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found. While some anti-pattern descriptions merely document the consequences of the pattern, good anti-pattern documentation also provides alternatives ways to minimize harm.Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
Examples
In software engineering
In software engineering, anti-patterns include:Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
- 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:Lua error in package.lua at line 80: module 'Module:Footnotes/anchor_id_list' not found.
- 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.[<span title="Script error: No such module "decodeEncode".">vague]
- 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.
See also
- Template:Annotated link
- Template:Annotated link
- Template:Annotated link
- Template:Annotated link
- Template:Annotated link: Software Life Cycle Profiles and Guidelines for Very Small Entities (VSEs)
- List of software anti-patterns
- Template:Annotated link
- Template:Annotated link
- Template:Annotated link
- Template:Annotated link
- Template:Annotated link
References
What supports what
Page Template:Reflist/styles.css has no content.
Sources
Page Template:Refbegin/styles.css has no content.
- Page Module:Citation/CS1/styles.css has no content.Neill, Colin J.; Laplante, Philip A.; DeFranco, Joanna F. (2011). Antipatterns: Managing Software Organizations and People. Applied Software Engineering Series (second ed.). CRC Press. ISBN 9781439862162.
- Page Module:Citation/CS1/styles.css has no content.Budgen, D. (2003). Software design. Harlow, Eng.: Addison-Wesley. p. 225. ISBN 0-201-72219-4.
As described in Long (2001), design anti-patterns are 'obvious, but wrong, solutions to recurring problems'.
- Page Module:Citation/CS1/styles.css has no content.Ambler, Scott W. (1998). Process patterns: building large-scale systems using object technology. Cambridge, UK: Cambridge University Press. p. 4. ISBN 0-521-64568-9.
...common approaches to solving recurring problems that prove to be ineffective. These approaches are called antipatterns.
- Page Module:Citation/CS1/styles.css has no content.Jimenez, Edward (2006-04-24). "AntiPatterns". AntiPatterns. Retrieved 24 April 2006.
- Page Module:Citation/CS1/styles.css has no content.Demeyer, Serge (2008). "ObjectOriented Reengineering". In Mens, Tom; Demeyer, Serge (eds.). Software Evolution. Springer Science + Business Media. ISBN 9783540764403.
Further reading
- Page Module:Citation/CS1/styles.css has no content.Koenig, Andrew (March–April 1995). "Patterns and Antipatterns". Journal of Object-Oriented Programming. 8 (1): 46–48.
- Later re-printed in: Page Module:Citation/CS1/styles.css has no content.Rising, Linda (1998). The patterns handbook: techniques, strategies, and applications. Cambridge, U.K.: Cambridge University Press. p. 387. ISBN 0-521-64818-1.
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.
- Later re-printed in: Page Module:Citation/CS1/styles.css has no content.Rising, Linda (1998). The patterns handbook: techniques, strategies, and applications. Cambridge, U.K.: Cambridge University Press. p. 387. ISBN 0-521-64818-1.
- Page Module:Citation/CS1/styles.css has no content.Laplante, Phillip A.; Neill, Colin J. (2005). Antipatterns: Identification, Refactoring and Management. Auerbach Publications. ISBN 0-8493-2994-9.
- Page Module:Citation/CS1/styles.css has no content.Brown, William J.; Malveau, Raphael C.; McCormick, Hays W.; Thomas, Scott W. (2000). Hudson, Theresa Hudson (ed.). Anti-Patterns in Project Management. John Wiley & Sons. ISBN 0-471-36366-9.
- Page Module:Citation/CS1/styles.css has no content.Stamelos, Ioannis (January 2010). "Software project management anti-patterns". Journal of Systems and Software. 83 (1): 52–59. doi:10.1016/j.jss.2009.09.016.
External links
Page Template:Sister-inline/styles.css has no content.Script error: No such module "Sister project logo". Media related to Script error: No such module "Commons link". at Wikimedia Commons
Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found.
Lua error in package.lua at line 80: module 'Module:Authority control/config' not found.