'''Classification: ''' AntiPattern (CategoryAntiPattern) '''Problem: ''' A project needs to use something nobody understands. '''Context: ''' Something new and exciting has been discovered, and a project has been launched to "do the same". The project is often highly visible. The culture is often highly "results-oriented" and not supportive of "theoretical bullshit". '''Examples: ''' Several "screen-scraper" programs, which convert the character streams to and from existing mainframe applications into behaviorally equivalent Windows95 screens, are described as "object oriented", because they show icons, menus, and palettes to the user. They are examples of TemporaryCargoCult because they have no relationship to the attributes that make something truly object-oriented. Non-technical industry pundits often use the TemporaryCargoCult pattern in constructing "recommendations" about "distributed system architecture". They are examples of TemporaryCargoCult because they use the jargon and notation of the technical community without understanding the behavior of the corresponding system. Another example was the United States steel industry during the late seventies and early eighties (culminating in the Pittsburgh area in 1982), who attempted to emulate the techniques of their competitors (especially the Japanese), without pursuing the underlying technical, cultural and economic factors that made those techniques viable within the cultures that produced them. Many steel industry uses of such techniques as "Quality Circle Management", "Consensus Management", and "Total Quality Management" from that time were examples. '''Forces: ''' * The result of success is highly beneficial. * Other, often competitive, organizations have already demonstrated success. * Genuine success requires sustained and intense effort, often with little immediate gain. * The very ''existence'' of the new and exciting thing often reveals deep and threatening characteristics of the existing organization. * The new and exciting thing usually accomplishes something that the existing organization or its leadership have steadfastly and prominently declared to be impossible. '''Solution: '''Create, using any means possible, something (anything) that exhibits external behavior that appears to emulate the superficial characteristics of the new and exciting thing. Chastise, fire, or reprimand any "non-team player" who advocates actually ''understanding'' the new and exciting thing. '''Resulting Context: '''The organization can now say "See -- We have it too!". The pressure and stress on the project organization are now increased, because not only does nobody really understand what they're doing, but they also have to now expend effort to sustain the illusion that they've created. '''Rationale: ''' The short-term gains that appear to result from application of TemporaryCargoCult (even though its usually unconscious) are generally viewed as being a way to "buy time" needed to "truly understand" the phenomenon. Sometimes this even seems to work, at least for awhile. The name CargoCult is drawn from the phenomenon of certain South Sea islanders who believed that by building mockups of airplanes and constructing runways that they could bring back the planes and all the wealth that accompanied them during World War II, when advance U.S. bases in the Pacific used the islands as staging areas. In other words, by reconstructing or simulating the artifacts of a situation, they could effect its recurrence. '''Known uses:''' See "examples", above. TemporaryCargoCult is usually used when a struggling organization finds itself under extreme competitive pressure. It is especially prevalent when a weak or challenged culture finds itself immersed in a fundamentally and rapidly changing technical and commercial environment. '''Moral: ''' Deep and significant change usually requires sustained and intense effort. Shortcuts usually don't exist (or everyone would see them). '''Related Patterns:''' To be supplied '''Author: ''' TomStambaugh, 9-Jan-98 ---- A related pattern might be NoGoArea (I've not checked whether this is already known under a different name). This occurs when you have a pile of code in your system that nobody understands. It was written by some hacker who left the company many years ago. It works, more or less. You would like to make some minor changes, but whenever you try, it (or something else perhaps only distantly related) stops working. You'd like to junk it and replace it with something simpler, but you are not sure what effect that would have on backwards compatibility. NoGoArea(s) sometimes show up as incredibly stable modules. Nobody dares change them. -- DaveHarris This pattern of NoGoArea is referred to as LavaFlow in the AntiPatternsBook. These are chunks of code that have hardened into a basaltic rock that no one can penetrate. -- GeorgeDinwiddie ---- Or, in the case of a few software megaliths, one NoGoArea may be a chunk code written by one of the company's founders. -- DaveSmith ---- I suppose people who jump on the JavaBandwagon and start ThrowingWorkOverTheFence are experiencing the TemporaryCargoCult... ---- I reckon Quality Assurance Accreditation is nothing but a CargoCult. Being quality assured doesn't make your product any better, it just means that you followed a prescribed formula to create a mediocre product, and if you didn't you wrote it down. I am so glad to have found the words for what I have always thought about quality. -- JohnFarrell ---- Reminds me of the demand to port an app to the web for no good reason since the app is only used on internally networked computers. So there's a huge development drive and the result is lost functionality because web UI's aren't as rich as fat client UI's.