Design Patterns
A design pattern focuses on a specific software design problem. It lays out the context where the problem shows up, the forces that need to be resolved, and how those forces get balanced into a solution, with its benefits, its related solutions, and the negative forces left over (called consequences).
Patterns usually assume a clean context, one without much legacy baggage. In practice, legacy and existing problems are the norm. AntiPatterns start from the opposite end: an existing negative solution, maybe the result of a manager's or developer's inexperience, or a good pattern applied in the wrong context. The AntiPattern names that negative solution clearly enough that an organization can recognize it, understand its consequences, and apply a refactored solution to get out of it.