It is time to kick off a new season.  Thus, we will set the tone by providing a general anti-pattern definition.  Spoiler alert, this season will focus on anti-patterns much like we did software patterns of design a few seasons back.  We will drift away from software design and implementation at times due to the more general applicability of anti-patterns.

Finding An Anti-Pattern Definition

There are a number of functional definitions out there.  However, we will go to the source of truth on the Internet, Wikipedia. [Click Here to See The Page]

An anti-pattern is a common response to a recurring problem that is usually ineffective and risks being highly counterproductive. The term, coined in 1995 by Andrew Koenig,[3] was inspired by a book, Design Patterns, which highlights a number of design patterns in software development that its authors considered to be highly reliable and effective.

The term was popularized three years later by the book AntiPatterns, which extended its use beyond the field of software design to refer informally to any commonly reinvented but bad solution to a problem. Examples include analysis paralysis, cargo cult programming, death march, groupthink and vendor lock-in.

We can see from the above that the modern version of anti-patterns is still young.  It spun off of the gang of four book that gave us patterns.  However, anti-patterns have been with us since man made his first mistake.  The simplest definition is that these tell us what to avoid.

Laugh or Cry

You might find bits of humor mixed in with the topics we cover.  This is intentional.  We will be looking at examples that fall under the category of those that you can either laugh or cry at them.  You are more likely to laugh at those you have witnessed.  On the other hand, you should grab a tissue for those you have lived through.  Nevertheless, there are concrete examples for each of the warnings we address.

Language Specification

We found that software patterns often were supported in every modern language.  These anti-patterns go beyond languages and even software in many cases.  Thus, we will not even bother going down to a technical level except in those cases where specific examples help our understanding.

Rob Broadhead

Rob is a founder of, and frequent contributor to, Develpreneur. This includes the Building Better Developers podcast. He is also a lifetime learner as a developer, designer, and manager of software solutions. Rob is the founder of RB Consulting and has managed to author a book about his family experiences and a few about becoming a better developer. In his free time, he stays busy raising five children (although they have grown into adults). When he has a chance to breathe, he is on the ice playing hockey to relax or working on his ballroom dance skills.

Leave a Reply