A commonly used process that has more bad consequences than good. Antithesis of the [[Design Patterns]].
Some design patterns are considered to be an anti-pattern. Some fall out of favor after years of practice, as its downsides are more acutely felt. Some anti-patterns become well-accepted into a pattern.
# Anti-pattern as an anti-pattern
A case of [[Continuous-Discrete boundary]].
Whether a particular solution is apt or not is dependent on its situation. However, the *anti-pattern* labeling is too binary, overarching and final. Many patterns are anti-patterns if misused, and many anti-patterns have their merits. After all, people adopted them for one reason or another.
There are many articles of the form *[[ORM]] is an anti-pattern*. Usually these articles are too extreme, pushing the argument for an argument's sake. Even singleton / global variable is a justifiable pattern as it eliminates [[Argument Drilling]]. Many web frameworks - Django and Rails - implicitly exposes the database as a global variable and this heavily improves the ergonomics of the frameworks.
> [!thought]
> this is what [[Hillel Wayne]] emphasizes a lot in his posts; software engineering is very vast; it’s difficult to make a generalizing statement on what is right or wrong. Software engineering in a:
> - PhD student's laptop
> - 10 engineer software shop
> - 100 engineer startup
> - 10000 engineer FAANG
>
> are all very different. A methodology may make sense for one but not another, vice versa.
# Example
- [[Global Variables]]