Design Patterns

Don’t use Design Patterns just because you can, you Cargo Cult Programmer

Have you ever stumbled across a project and just think to yourself why does this class exist, or more specifically why did they use this design pattern? Recently I happened across one of those projects, in it the project used a Factory class that’s purpose was to instantiate and return a single class. In essence

The Constant Interface Antipattern – How not to define constants

When working in applications that utilize a lot of variables I often come across interfaces containing nothing but constants. Instead of creating a class containing the constants the developers choose to define them in an interface that can be implemented by a class so that constants don’t need to be qualified to a class in

Factory Pattern and the Java Class Object

Overview The Factory Pattern is a Software Design Pattern that is used to create an object without calling the specific object’s constructor.  This pattern allows a end user to call the factory to instantiate a class without having to know how to instantiate the class itself.  How it works is by the creation of a

Anti-Pattern Fun

Overview

Anti-Patterns are a pattern of behavior or design that proves to be counterproductive or inefficient to a project.  Although Anti-Patterns exist for Software and Object-Oriented designs my favorites mostly apply to organizational and project management (personal and group behaviors). Some patterns are listed below, if these sound familiar to you and you happen to be a project manager or a team lead then you may want to do research into how to modify the group’s or your own behavior.

Analysis Paralysis

This anti-pattern is defined as spending too much time on the analysis and planning of a project that too little time is left to the actual development or completion of the project.  Basically the project sits around with meetings and research going on but no work is being done on the actual project deliverable, until the implementation time period is shortened to the point the project is delayed or even canned.

Mushroom Management

This one I think explains itself in that the management keeps the team uninformed and fed lies (crap).

Death March

A project that everyone knows is going to be a disaster, which results in stress and pressure to work nights and weekends (or depending on the situation mandatory overtime). This can be caused by a multitude of factors some prominent ones are unrealistic time-lines, lack of necessary skills for the project, and poor management.

Scape Goat

Another one that probably needs no explanation but one I have often come across the brunt of. A scape goat is the individual that gets blamed for the failings of a project regardless of the factors that caused the project to fail. Ever been blamed for something when everyone knows their were a dozen other reasons that it went wrong? Congratulations!!, you were the goat BLEAT.

Wrap Up

There are dozens of other anti-patterns and hundred more unofficial ones, a quick way to find ones are to visit Wikipedia or the Anti Patterns Catalog. Some other ones i am fond of are Feature Creep ( I prefer CreepingFeaturitis ), Design By Committee, and Group Think.

Decorator : Design Pattern

Overview Design Patterns are a reusable solutions to a commonly seen software desgin problem. The key item to remember is that these patterns are more like templates and instructions and are not reusable code. Although helpful and can solve many problems they are not usefull in every case and can hinder you from finding the