Frankencode

Frankencode

Frankencode refers to code that was never designed to work together, being pulled into a single application and held together with duct tape, baling wire, and maybe some Adapter design pattern usage. While software reuse and composability are desirable, frequently … Continued
Duct Tape Coder

Duct Tape Coder

The Duct Tape Coder is someone who is able to cobble together software that solves the immediate problem, but without any concern for the code’s quality or maintainability.  Sometimes, a bit of duct tape is exactly what the situation calls … Continued
The Blob

The Blob

The Blob is an anti-pattern that describes a class which resembles the monster from the 1958 film The Blob, which absorbs anything it touches and grows larger and larger over time. Such classes are similar to God Objects and over … Continued
Iceberg Class

Iceberg Class

Although encapsulation is an oft-sited good thing to have in a design, there are many cases in which hiding an abundance of implementation behind private methods is undesirable.  Often, this behavior is beyond the actual scope of the class in … Continued
Walking Through a Minefield

Walking Through a Minefield

When software is released before it is ready, and users of the software are made to find all of its bugs and shortcomings, they’re made to feel as though they’re walking in a minefield. It’s important to release software as … Continued
Reinventing the Wheel

Reinventing the Wheel

It’s common for software developers and some organizations to prefer to write something they may need for a given project themselves, rather than using an available open source or commercial offering.  Generally, it’s best to avoid this urge unless the … Continued
Flags Over Objects

Flags Over Objects

The Flags Over Objects anti-pattern occurs when behavior is written outside of an object by inspecting flags (such as status codes), rather than within the object itself. This violates the Tell, Don’t Ask principle, and results in chatty interfaces and … Continued
Copy Folder Versioning

Copy Folder Versioning

Copy Folder Versioning is a software development anti-pattern in which source code is updated by simply making copies of the folder in which the code currently resides. This results in a tangled mess of folders, usually without any clear indication … Continued
Assumption Driven Programming

Assumption Driven Programming

Assumption Driven Programming refers to the developer practice of assuming all users are like them. The best way to avoid falling into this trap is to interact with users as much as possible. It’s certainly important to dogfood your software, … Continued
Antipatterns

Antipatterns

Antipatterns are simply design patterns that in many cases introduce more problems than they solve. Sometimes these are coding patterns, while others describe problems within teams or organizations. Alphabetical list of antipatterns: Anemic Model Assumption Driven Programming The Blob Broken Windows … Continued