Foolish consistency is the hobgoblin of small minds. -- RalphWaldoEmerson Far too many practitioners, who ought to know better, have a tendency to fall in love with a particular technology, architecture, or implementation technique--and then loudly insist that it is the only appropriate solution to a wide range of problems. Other solutions may be permissible in this world-view, but ''only if they can be implemented in terms of the "preferred" solution.''--even when it's a clear AbstractionInversion. Competing paradigms are regarded as demons to be cast out. '''Uniformity''' is trumpeted as a comprehensive and all-encompassing requirement in any system that could ever be built--thus hybrid or multiparadigm systems are also despised. * In some cases, competing technologies may be tolerated in limited circumstances or niches, where their advantage is obvious. However, the advocate of UniformityUberAlles will regard those cases as the exceptions that prove the rule; and frequently take the position that the advocated solution should be presumed to be the default solution, unless proven otherwise. (And insist that the burden of proof is very high; the advantages of uniformity outweight the disadvantages of a sub-optimal solution in most cases.) When the preferred technology is shown to have shortcomings--they are dismissed as implementation details, to be solved later, even if the solution is years of research from being practical--if possible at all (see SufficientlySmartCompiler). Any failing of a competing technology, OTOH, is derided as a fatal flaw which cannot be worked around (i.e. the only solution is to abandon the "flawed" technology), even if it can be plainly shown that this is not the case. Often, the technology being advocated is new (and its flaws and limitations have yet to be discovered), whereas the technology being castigated is mature and its limitations well-chronicled. The technology being advocated doesn't matter, really, for purposes of discussing this particular AntiPattern. For some, it's objects and OO; any solution that isn't sufficiently "OO" is deemed inferior. For others, it's relational. Or FunctionalProgramming. Or SmalltalkLanguage/LispLanguage. StaticTyping or DynamicTyping. Capabilities, ExoKernel''''''s, global uniform namespaces, etc. Or ExtremeProgramming. This is an AntiPattern simply because ''none'' of the above technologies/methodologies/etc. has ever been shown to be clearly superior to all others, in all circumstances. Many are still being actively researched, and are simply too immature for such sweeping generalizations to be made. Others are clearly advantageous in particular areas (such as RelationalDatabase''''''s for OLTP and OLAP), but have consistently failed miserably in other areas (despite numerous attempts to make a relational filesystem--including years of research into the problem at Microsoft--no such critter has been developed that users have found satisfactory). ''Don't be silly; everyone knows that they are '''all''' superior to each other.'' The smart practitioner will, of course, have many tools in her toolbox; and use them as appropriate. Nobody would listen to a carpenter who suggests that we should build houses with nothing but hammers; yet much attention still gets paid to software professionals who make analogous suggestions in our discipline. ---- Notes on the quote at the top of the page: ''Ralph Waldo Emerson, "Self Reliance": "'''A foolish consistency is the hobgoblin of little minds, adored by little statesmen and philosophers and divines.''' With consistency a great soul has simply nothing to do. He may as well concern himself with his shadow on the wall. Speak what you think now in hard words, and to-morrow speak what to-morrow thinks in hard words again, though it contradict every thing you said to-day. 'Ah, so you shall be sure to be misunderstood.' Is it so bad, then, to be misunderstood? Pythagoras was misunderstood, and Socrates, and Jesus, and Luther, and Copernicus, and Galileo, and Newton, and every pure and wise spirit that ever took flesh. To be great is to be misunderstood."'' ---- See also: EverythingIsa, WhenAreStandardsRestrictive, LetsBlowUpTheUniverse