Spaghetti Code

Spaghetti Code

Featured in the 2012 Software Craftsmanship AntiPatterns calendar, Spaghetti Code refers to that has a tangled and hard to follow structure, especially one in which following the actual flow of the program is difficult. Different programming languages have different constructs … Continued
Death March

Death March

The worst part of a Death March project is that virtually everybody involved with it knows it’s a death march project. The Death March refers to a project that has little or no hope of success. It’s already over-budget, over-schedule, … Continued
Golden Hammer

Golden Hammer

The Golden Hammer refers to a language, tool, or platform with which the developer is comfortable and productive, so they are tempted to use it for any problem that presents itself.  As the saying goes, “If all you have is … Continued
One Thing To Rule Them All

One Thing To Rule Them All

Having “One Thing To Rule Them All” can be an antipattern in many systems. Within applications, it’s good to follow the Don’t Repeat Yourself principle, which leads to defining things Once And Only Once. This tends to also promote the … Continued
Copy Paste Programming

Copy Paste Programming

Sometimes you need to make a change that’s similar to one you’ve made before, or you have some logic that’s performed in more than one location, and it needs to change.  The temptation, of course, is to simply copy the … Continued
Fast Beats Right

Fast Beats Right

The Fast Beats Right antipattern alleges that it is always better to just get something done, regardless of quality, than to invest any effort into doing the job right.  In software development, this quickly leads to taking on Technical Debt, … Continued
Waterfall

Waterfall

Waterfall, or Waterfail, is a rigid software development life cycle methodology that moves all activity through a series of stages, such as Gather Requirements, Design, Develop, Test, Deliver, Maintain.  The first article describing this model (Managing the Development of Large … Continued
Smoke and Mirrors

Smoke and Mirrors

The practice of showing a customer “smoke and mirrors” and then hoping the engineers or developers can build it has been around for as long as sales and marketing people have had jobs.  As long as what’s being sold can … Continued
Feature Creep

Feature Creep

Many software products die an earlier death than necessary because of feature creep, by which additional bits of functionality are continually added.  Feature creep (also commonly known as scope creep) is often responsible for delays in shipping or delivering software, … Continued
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