Book

AntiPatterns

📖 Overview

AntiPatterns is a technical guide that identifies and analyzes common mistakes in software development, architecture, and project management. The book introduces the concept of anti-patterns - recurring solutions that appear beneficial but lead to problematic outcomes. The authors present a collection of documented anti-patterns across different domains of software development, from coding practices to management approaches. Each pattern is dissected with detailed explanations of how to recognize these issues and implement proven solutions called refactored patterns. The book draws from the authors' extensive experience at Mitre Corporation and other organizations, providing real-world examples and practical remediation strategies. The work builds upon the foundation established by the original Design Patterns book while focusing on patterns of failure rather than success. This text stands as a significant contribution to software engineering literature, offering a systematic approach to identifying and correcting common pitfalls in software development processes. Its influence continues to shape how practitioners think about software development anti-patterns and their solutions.

👀 Reviews

Readers find the book's taxonomy of common software development mistakes practical and applicable. Many cite the clear naming and categorization of anti-patterns they've personally encountered in projects. Liked: - Real-world examples that resonate with experienced developers - Solutions and refactoring advice for each anti-pattern - Humor throughout the text makes difficult concepts digestible - Useful reference for identifying and discussing project problems Disliked: - Writing style can be verbose and repetitive - Some examples and technologies are dated (from 1998) - Too much focus on enterprise/government scenarios - Several readers note the high price for page count Ratings: Amazon: 4.0/5 (108 reviews) Goodreads: 3.7/5 (869 ratings) Notable review: "Names common dysfunctions we see daily, but gets bogged down in military/government examples" - Amazon reviewer Multiple readers recommend skimming sections outside their domain rather than reading cover-to-cover.

📚 Similar books

Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma This book presents the opposite side of AntiPatterns by documenting proven solutions to recurring problems in software architecture and design.

Refactoring: Improving the Design of Existing Code by Martin Fowler The book provides systematic methods to identify and correct problematic code patterns that could otherwise develop into antipatterns.

Working Effectively with Legacy Code by Michael Feathers This text details strategies for dealing with existing problematic code structures and preventing the formation of new antipatterns in large software systems.

Clean Architecture: A Craftsman's Guide to Software Structure and Design by Robert C. Martin The book outlines architectural principles and patterns that help developers avoid common design pitfalls and antipatterns at the system level.

Implementation Patterns by Kent Beck This work presents coding patterns and practices that serve as counterpoints to antipatterns, focusing on writing maintainable and efficient code.

🤔 Interesting facts

🔷 The term "AntiPattern" was first coined during a OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) conference in 1995, shortly before this book's publication. 🔷 Co-author Tom Mowbray previously wrote the influential "CORBA Design Patterns" book, making him uniquely positioned to analyze both successful and failing patterns in software development. 🔷 The book identifies 40 specific AntiPatterns across three categories: development, architecture, and project management, with each pattern given a memorable name like "Golden Hammer" or "Death March." 🔷 The authors' work at Mitre Corporation involved classified government projects, contributing to their deep understanding of large-scale system failures and organizational challenges. 🔷 Despite being published in 1998, the book has influenced major software development methodologies, including Agile and DevOps, by highlighting the importance of learning from systematic failures.