Cargo cult programming

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Cargo cult programming is a style of computer programming characterized by the ritual inclusion of code or program structures that serve no real purpose. Cargo cult programming is typically symptomatic of a programmer not understanding either a bug they were attempting to solve or the apparent solution (compare shotgun debugging, deep magic).[1] The term cargo cult programmer may apply when an unskilled or novice computer programmer (or one inexperienced with the problem at hand) copies some program code from one place and pastes it into another place, with little or no understanding of how the code works, or whether it is required in its new position.

Overview[edit]

Cargo cult programming can also refer to the results of applying a design pattern or coding style blindly without understanding the reasons behind that design principle. Examples are adding unnecessary comments to self-explanatory code, adding deletion code for objects that garbage collection would have collected automatically with no problem, and creating factory objects to build simple objects. It often happens when programmers are inexperienced with the programming language, or simply overzealous.

Origin[edit]

The term cargo cult, as an idiom, originally referred to aboriginal religions that grew up in the South Pacific after World War II. The practices of these groups centered on building elaborate mock-ups of airplanes and military landing strips in the hope of summoning the god-like airplanes that had brought marvelous cargo during the war.[2][3] Use of the term in computer programming probably derives from Richard Feynman's characterization of certain practices as cargo cult science.[3][4]

Cargo cult software engineering[edit]

A related term in software engineering is cargo cult software engineering, coined by Steve McConnell.[5]

McConnell describes software development organizations that attempt to emulate more successful development houses, either by slavishly following a software development process without understanding the reasoning behind it, or by attempting to emulate a commitment-oriented development approach (in which software developers devote large amounts of time and energy toward seeing their projects succeed) by mandating the long hours and unpaid overtime, when in successful companies these are side-effects of high motivation and not requirements.

In both cases, McConnell contends that competence ultimately determines whether a project succeeds or fails, regardless of the development approach taken; furthermore, he claims that incompetent "impostor organizations" (which merely imitate the form of successful software development organizations) are in fact engaging in what he calls Cargo cult software engineering.[3]

See also[edit]

References[edit]

Notes

  1. ^ Raymond, Eric S. (1996). "The New Hacker's Dictionary". MIT Press. ISBN 0-262-68092-0. 
  2. ^ Bezroukov, Nikolai. "Cargo Cult Programming article". Softpanorama (slightly skeptical) Open Source Software Education Society. Retrieved March 25, 2008. 
  3. ^ a b c "From the Editor". "Cargo Cult Software Engineering". IEEE Software. March–April 2000. Retrieved May 24, 2008. 
  4. ^ "Definition of cargo cult programming". Jargon File at jargon.net. Retrieved March 25, 2008. 
  5. ^ McConnell (2003), pp. 23–26.

Bibliography

Further reading[edit]