"In software engineering, an anti-pattern (or antipattern) is a pattern that may be commonly used but is ineffective and/or counterproductive in practice."
Click to buy on Amazon !
The 1998 book "AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis" (see Amazon link to the right) put the term on the map. Now software engineers and architects understand the term and use it often.
Some easily understood examples of antipatterns include:
- Golden Hammer: Assuming that a favorite solution is universally applicable.
- Not Invented Here Syndrome: Failing to adopt an existing adequate solution.
- Avalanche: An inappropriate mashup of the Waterfall model and Agile Development techniques
- Death march: Everyone knows that the project is going to be a disaster – except the CEO – so the truth is hidden to prevent immediate cancellation of the project - (although the CEO often knows and does it anyway to maximize profit). 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.
- Groupthink: During groupthink, members of the group avoid promoting viewpoints outside the comfort zone of consensus thinking
- Overengineering: Spending resources making a project more robust and complex than is needed
- Smoke and mirrors: Demonstrating unimplemented functions as if they were already implemented
- Software bloat: Allowing successive versions of a system to demand ever more resources