Карго-культ програмування — це стиль комп'ютерного програмування, що характеризується ритуальним включенням коду або програмних структур, які не мають ніякої реальної мети. Карго-культ програмування зазвичай притаманний програмісту, який не розуміє помилку, яку необхідно виправити чи очевидне рішення (порівняйте зі зневадження навмання[en], складною магією). Термін карго-культ програміст може застосовуватися, коли некваліфікований програміст (або недосвідчений програміст з наявною проблемою) копіює частину програмного коду з одного місця в інше з недостатнім або відсутнім розумінням того, як він працює або чи він взагалі потрібний у новому місці.
Карго-культ програмування може також відноситися до прийняття шаблону проектування програмного забезпечення або стилю кодування наосліп, не розуміючи причини вибору саме цього шаблону. Прикладами слугують додані непотрібні коментарі до очевидного коду, надмірне дотримання конвенцій конкретної парадигми програмування, або додавання коду видалення для об'єктів, які збирання сміття видалило б автоматично.
Походження
Термін карго-культ, як ідіома, зазвичай належить до аборигенних релігій, які з'явилися у південній частині Тихого океану після Другої Світової війни. Основна мета цих груп полягала у будівництві складних макетів літаків і злітно-посадкових військових смуг, з надією призвати «богоподібні літаки», які приносили чудовий вантаж під час війни. Використання терміну в комп'ютерному програмуванні, скоріше за все, походить від характеризації певних практик як науки карго-культу, зробленої Річардом Фейнманом.
Карго-культ програмної інженерії
Споріднений термін у програмній інженерії — карго-культ програмної інженерії був придуманий Стівом Макконнеллом[en].
Так Макконнел описує організації, спеціалізовані на програмних розробках, що намагаються наслідувати більш успішні компанії в цій сфері, дотримуючись процесу розробки програмного забезпечення без його розуміння, або намагаючись наслідувати прихильно-орієнтований підхід до розробки, (у якому розробники програмного забезпечення присвячують багато часу і сил до того, як бачать успіх своїх проектів) доручаючи працювати додатковий, неоплачуваний час, коли у успішних компаніях це — побічний ефект доброї мотивації, а не вимога.
В обох випадках Макконнел стверджує, що компетентність у кінцевому випадку визначає, чи матиме проект успіх, чи навпаки провалиться, незалежно від обраного підходу до розробки; крім того, він стверджує, що некомпетентні «організації-самозванці» (які просто імітують форму успішних організацій-розробників) фактично беруть участь у тому, що він називає карго-культ програмної інженерії.
Див. також
Література
- Ви, певно, жартуєте, містере Фейнман!, Richard Feynman, W. W. Norton & Co, New York, 1985, ISBN 0-393-01921-7. Одна з глав — це розшифровка його робіт 1974 року, яка містила згадку терміну «наука карго-культу».
- Cargo Cult Science, by Richard P. Feynman [Архівовано 4 березня 2009 у Wayback Machine.]. Стаття базована на його роботі 1974 року з картинками, зберегла оригінальне тлумачення з журналу Engineering and Science, номер випуску 37:7, червень 1974. Оцифрована 20 червня, 2007 року.