---
title: "Programação cargo cult"
type: "antipattern"
slug: "cargo-cult-programming"
url: "http://localhost:3000/pt-br/antipatterns/cargo-cult-programming.md"
description: "Inclusão ritualística de código de computador desnecessário"
---
# Programação cargo cult

> Inclusão ritualística de código de computador desnecessário

A **programação cargo cult** é um estilo de [programação de computadores](https://en.wikipedia.org/wiki/Computer%5Fprogramming "Computer programming") caracterizado pela inclusão ritualística de código ou estruturas de programa que não servem a nenhum propósito real. A programação cargo cult é sintomática de um programador que não compreende nem o bug que estava tentando resolver nem a aparente solução (compare com [shotgun debugging](https://en.wikipedia.org/wiki/Shotgun%5Fdebugging "Shotgun debugging"), [deep magic](https://en.wikipedia.org/wiki/Magic%5F%28programming%29 "Magic (programming)")). O termo _programador cargo cult_ pode se aplicar quando alguém inexperiente no problema em questão [copia algum código de programa](https://en.wikipedia.org/wiki/Copy%5Fand%5Fpaste%5Fprogramming "Copy and paste programming") de um lugar para outro com pouca compreensão de como ele funciona ou se é necessário.

A programação cargo cult também pode se referir à prática de aplicar um [padrão de projeto](https://en.wikipedia.org/wiki/Software%5Fdesign%5Fpattern "Software design pattern") ou estilo de codificação cegamente, sem entender as razões por trás daquele princípio de design. Alguns exemplos são adicionar comentários desnecessários a código autoexplicativo, aderir de forma exagerada às convenções de um [paradigma de programação](https://en.wikipedia.org/wiki/Programming%5Fparadigm "Programming paradigm") ou adicionar código de remoção para objetos que o [coletor de lixo](https://en.wikipedia.org/wiki/Garbage%5Fcollection%5F%28computer%5Fscience%29 "Garbage collection (computer science)") coleta automaticamente.

## Etimologia

Os [cultos à carga](https://en.wikipedia.org/wiki/Cargo%5Fcult "Cargo cult") são movimentos [milenaristas](https://en.wikipedia.org/wiki/Millenarian "Millenarian") que surgiram na [Melanésia](https://en.wikipedia.org/wiki/Melanesia "Melanesia") sob o domínio colonial e inspiraram [Richard Feynman](https://en.wikipedia.org/wiki/Richard%5FFeynman "Richard Feynman") a cunhar a expressão [ciência cargo cult](https://en.wikipedia.org/wiki/Cargo%5Fcult%5Fscience "Cargo cult science"). Na descrição de Feynman, após o fim da Segunda Guerra Mundial os praticantes acreditavam que a entrega aérea de cargas seria retomada se realizassem os rituais adequados, como construir pistas de pouso, acender fogueiras ao lado delas e usar fones de ouvido esculpidos em madeira enquanto se sentavam em torres de controle improvisadas. "A forma é perfeita. Parece exatamente como parecia antes. Mas não funciona."

O termo passou então a ser usado de forma mais ampla como uma metáfora para rituais vazios. O termo "cargo-cult programming" apareceu na versão 2.5.1 do [Jargon File](https://en.wikipedia.org/wiki/Jargon%5FFile "Jargon File"), um glossário de gírias da computação, lançado em janeiro de 1991\. O termo "cargo cult", por sua vez, na antropologia é cada vez mais evitado por não representar a complexidade das crenças melanésias.

## Engenharia de software cargo cult

Um termo relacionado à programação cargo cult na [engenharia de software](https://en.wikipedia.org/wiki/Software%5Fengineering "Software engineering") é _engenharia de software cargo cult_, cunhado por [Steve McConnell](https://en.wikipedia.org/wiki/Steve%5FMcConnell "Steve McConnell").

McConnell descreve organizações de desenvolvimento de software que tentam imitar empresas de desenvolvimento mais bem-sucedidas, seja seguindo servilmente um [processo de desenvolvimento de software](https://en.wikipedia.org/wiki/Software%5Fdevelopment%5Fprocess "Software development process") sem entender o raciocínio por trás dele, seja tentando imitar uma abordagem de desenvolvimento orientada ao comprometimento (na qual os desenvolvedores de software dedicam grandes quantidades de tempo e energia para ver seus projetos terem sucesso) ao impor longas jornadas e horas extras não remuneradas, enquanto, nas empresas bem-sucedidas, isso talvez seja, em vez disso, uma consequência da alta motivação em vez de uma causa do sucesso.

Em ambos os casos, McConnell sustenta que, em última análise, é a competência que determina se um projeto terá sucesso ou fracassará, independentemente da abordagem de desenvolvimento adotada; além disso, ele afirma que "organizações impostoras" incompetentes (que apenas imitam a _forma_ de organizações de desenvolvimento de software bem-sucedidas) estão, na verdade, praticando o que ele chama de _engenharia de software cargo cult_.
