Введение
Антипаттерн в разработке программного обеспечения, управлении проектами и бизнес-процессах – это часто встречающаяся реакция на повторяющуюся проблему, которая обычно неэффективна и может оказаться крайне контрпродуктивной. Термин, введенный в 1995 году программистом Эндрю Коенигом, был вдохновлен книгой "Design Patterns" (в которой представлены различные шаблоны проектирования в разработке программного обеспечения, признанные авторами высоконадежными и эффективными) и впервые опубликован в его статье в журнале "Journal of Object Oriented Programming". Дополнительное исследование, представленное Майклом Акройдом в 1996 году на конференции Object World West, также документировало антипаттерны. Однако именно книга AntiPatterns, опубликованная в 1998 году, популяризировала эту концепцию и расширила ее область применения за пределы проектирования программного обеспечения, включив в нее архитектуру программного обеспечения и управление проектами. Позднее другие авторы распространили ее на экологические, организационные и культурные антипаттерны.
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. 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. A further paper in 1996 presented by Michael Ackroyd at the Object World West Conference also documented anti patterns. 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. Other authors have extended it further since to encompass environmental, organizational, and cultural anti patterns.
Применение
Документирование антипаттернов может быть эффективным способом анализа проблемной области и фиксации экспертных знаний. Если некоторые описания антипаттернов лишь документируют негативные последствия шаблона, то качественная документация антипаттерна также предлагает альтернативное решение или способ смягчить проблему, связанную с антипаттерном.
Антипаттерны в программировании
В разработке программного обеспечения антипаттерны включают в себя "большой ком грязи" (отсутствие) архитектуры, "Бог-класс" (когда один класс управляет всей логикой программы вместо распределения управления между несколькими классами), "магические числа" (уникальные значения с непонятным смыслом или множественными повторениями, которые можно заменить именованной константой) и "Полтергейсты" (недолговечные классы-контроллеры, существующие только для вызова других методов в классах).
Антипаттерны управления проектами
Антипаттерны управления проектами, описанные в книге "Антипаттерны", включают в себя Blowhard Jamboree (избыток отраслевых экспертов и псевдоэкспертов), паралич анализа, Viewgraph Engineering (чрезмерное время, затрачиваемое на создание презентаций в ущерб разработке программного обеспечения), Death by Planning (аналогично, избыточное планирование), Fear of Success (иррациональные страхи, возникающие перед завершением проекта), The Corncob (межличностные трудности), Интеллектуальное насилие (устрашение посредством использования жаргона или сложной, непонятной технологии), Irrational Management (неэффективные методы управления), Smoke and Mirrors (чрезмерное использование демонстраций и прототипов отделами продаж), Throw It Over the Wall (навязывание разработчикам устаревших или неподходящих практик разработки без их согласия), Fire Drill (длительные периоды рутинной работы, прерываемые короткими кризисами), The Feud (конфликты между менеджерами) и e-mail Is Dangerous (ситуации, возникающие из-за необдуманных электронных писем).