I’ve written about design patterns a couple of times in the past, but today I discovered anti-patterns: design patterns that “may be commonly used but [are] ineffective and/or counterproductive in practice”.
One of the “key elements present to formally distinguish an actual anti-pattern from a simple bad habit, bad practice, or bad idea”:
Some repeated pattern of action, process or structure that initially appears to be beneficial, but ultimately produces more bad consequences than beneficial results.
The seven types of anti-pattern, with some examples:
- Organisational: Moral hazard,Â insulating a decision-maker from the consequences of his or her decision.
- Project management: Groupthink, whereby members of the group avoid promoting viewpoints outside the comfort zone of consensus thinking.
- Analysis: Bystander apathy, when a requirement or design decision is wrong, but the people who notice this do nothing because it affects a larger number of people.
- Software design: Gold plating, continuing to work on a task or project well past the point at which extra effort is adding value.
- Programming: Cargo cult programming, using patterns and methods without understanding why.
- Methodological: Golden hammer, assuming that a favorite solution is universally applicable (See: Silver Bullet).
- Configuration management.