Un anti-patrón es cualquier solución común, pero contraproducente, para una clase específica de problema. El término fue acuñado en 1995 por Andrew Koenig, inspirado por el libro Design Patterns, el cual destaca patrones de diseño de software confiables y efectivos.
Historia y Evolución
Michael Ackroyd describió los anti-patrones en un artículo presentado en la Conferencia Object World West de 1996. Posteriormente, el libro AntiPatterns de 1998 popularizó la idea y extendió su alcance más allá del diseño de software, ablandando la frontera para incluir la arquitectura de software y la gestión de proyectos.
Otros autores han extendido el concepto aún más, abarcando anti-patrones ambientales, organizacionales y culturales.
Características Distintivas
Un anti-patrón se diferencia de un simple mal hábito, una mala práctica o una mala idea por dos rasgos principales:
- Frecuencia y Apariencia: Son procesos, estructuras o patrones de acción comúnmente utilizados que inicialmente parecen ser apropiados y efectivos, pero que resultan tener más desventajas que beneficios.
- Existencia de Alternativas: Existe otra forma de resolver el problema que está documentada, es repetible y efectiva, a diferencia del anti-patrón.
La Regla de Tres
Al igual que con los patrones de diseño, se aplica la "regla de tres": para que una solución sea considerada un anti-patrón, debe haber ocurrido al menos tres veces en la industria o en el entorno de desarrollo.
La Importancia de la Documentación
Documentar los anti-patrones es fundamental para analizar el espacio de un problema y capturar el conocimiento experto. Mientras que algunas descripciones de anti-patrones se limitan a documentar las consecuencias negativas, una documentación robusta proporciona formas alternativas de minimizar el daño y corregir el rumbo.
Ejemplos de Aplicación
Los anti-patrones se manifiestan comúnmente en diversas áreas:
- Ingeniería de Software: Donde se aplican soluciones rápidas que generan deuda técnica.
- Gestión de Proyectos: Donde se aplican metodologías de gestión que parecen eficientes pero retrasan la entrega final.

