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 developers knew what the Factory pattern was and utilized it without having any purpose to do so. Instead they created additional worthless code. This use of a programming pattern without the need of the pattern is known as Cargo Cult Programming
Cargo Cult Programming
The Cargo Cult Programming anti-pattern is the use of patterns, structures, or code in a project because you either always do or simply because you don’t know what it is doing but are copying it from another project or programmer. This style of programming causes unnecessary abstraction, code bloat and increases the difficulty of maintaining the project over its life span.
Want to be a better programmer? Then understand your code, don’t blindly copy/paste or use a pattern just because you can. Take your time and think is this needed, does it provide a useful functionality or enhancement to my project? or does it simply add additional code and size to the project. Don’t fall pray to becoming a Cargo Cult Programmer
Resources
Anti-Patterns, Cargo Cult Programming, Design Patterns, Java, Tips & Tricks
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.
Anti-Patterns