Anti-Patterns

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.