What is an Antipattern?
An antipattern is any activity that gets repeated despite being counterproductive. Although the term originated and gained widespread use in the field of computer programming, it can apply to any form of routine behavior. Identifying and describing antipatterns can improve overall rationality by making common mistakes in reasoning easier to spot. In this sense, the antipattern is to general rationality as the fallacy is to deductive logic.
For a batch of code or a set of behaviors to constitute an antipattern, it must occur repeatedly. It must also, for some observer, be contrasted with a known pattern that would almost certainly work better. Isolated mistakes can thus not be antipatterns, and neither can failed attempts to solve a problem for which no solution yet exists. This definition still leaves room for a large range of faulty processes.
Even within the original category of software design, there are many different types of antipattern. Some involve failures to anticipate user reactions. "Interface bloat" and "Creeping Featuritis"—almost all antipatterns have been given cute names—refer to a program with a user interface so complicated it becomes unmanageable.
Other antipatterns involve typical programming mistakes. "Copy and Paste Programming" and "Cargo Cult Programming" describe situations in which programmers rely too heavily on pre-existing material instead of tailoring their code to the program they are currently developing. "God Class" is a set of objects within a program that have become too powerful; the whole thing is vulnerable because everything relies on these elements.
Many antipatterns have also been identified within the corporate world, particularly as a context for software development. "Specify Nothing" and "Vietnam War" involve failures of clarity in the management's instructions to their employees. "We Are Idiots" involves making the assumption that customers, and not programmers, must make every decision about how a particular item is developed.
Other antipatterns can apply to many types of organizational sociology. "Groupthink" is taking place whenever a set of people are able to sustain a collective delusion by insulating themselves from outside input. A "Death March" occurs when everyone working on a particular project knows that failure is inevitable but does not or cannot communicate this information to a powerful leader. "If It Ain't Broke, Don't Fix It" is a piece of conventional wisdom that may be an antipattern in contexts where an eventual breakdown would be unacceptable.
Discuss this Article
Post your comments