An anti-pattern in software engineering, project management, and business processes is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive.[1][2] The term, coined in 1995 by computer programmer Andrew Koenig, was inspired by the book Design Patterns (which highlights a number of design patterns in software development that its authors considered to be highly reliable and effective) and first published in his article in the Journal of Object-Oriented Programming.[3] A further paper in 1996 presented by Michael Ackroyd at the Object World West Conference also documented anti-patterns.[3]
It was, however, the 1998 book AntiPatterns that both popularized the idea and extended its scope beyond the field of software design to include software architecture and project management.[3] Other authors have extended it further since to encompass environmental, organizational, and cultural anti-patterns.[4]