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]]