Программирование карго-культа — это стиль компьютерного программирования, характеризующийся ритуальным включением кода или программных структур, которые не служат никакой реальной цели. Программирование карго-культа является симптомом того, что программист не понимает ни ошибку, которую он пытается исправить, ни очевидное решение (сравните отладку дробовиком , глубокую магию ). [1] Термин «программист карго-культа» может применяться, когда кто-либо, не имеющий опыта решения проблемы, копирует некоторый программный код из одного места в другое, не имея достаточного представления о том, как он работает или требуется ли он.
Программирование с культом карго может также относиться к практике слепого применения шаблона проектирования или стиля кодирования без понимания причин, лежащих в основе этого принципа проектирования. Некоторые примеры — добавление ненужных комментариев к самоочевидному коду, чрезмерное следование соглашениям парадигмы программирования или добавление кода удаления для объектов, которые автоматически собирает сборщик мусора .
Культы грузов — это милленаристские движения, возникшие в Меланезии во времена колониального правления и вдохновившие Ричарда Фейнмана на создание выражения «наука о грузовом культе» . По описанию Фейнмана, после окончания Второй мировой войны практикующие верили, что доставка грузов по воздуху возобновится, если они будут выполнять надлежащие ритуалы, такие как строительство взлетно-посадочных полос, разжигание костров рядом с ними и ношение наушников, вырезанных из дерева, сидя в изготовленных контрольных вышках. «Форма идеальна. Она выглядит точно так же, как и раньше. Но она не работает».
Термин затем стал использоваться более широко как метафора пустых ритуалов. Термин «программирование карго-культа» появился в версии 2.5.1 Jargon File , глоссария компьютерного сленга, выпущенного в январе 1991 года. Термин «карго-культ» в антропологии, тем временем, все чаще избегают из-за того, что он не отражает сложность меланезийских верований. [2] [3]
Термин, связанный с программированием культа груза в программной инженерии, — программная инженерия культа груза , придуманная Стивом Макконнеллом . [4] : 23-26
Макконнелл описывает организации по разработке программного обеспечения, которые пытаются подражать более успешным компаниям-разработчикам, либо слепо следуя процессу разработки программного обеспечения, не понимая его обоснований, либо пытаясь подражать подходу к разработке, ориентированному на приверженность делу (при котором разработчики программного обеспечения тратят много времени и энергии на то, чтобы добиться успеха своих проектов), требуя долгих рабочих часов и неоплачиваемых сверхурочных, в то время как в успешных компаниях это может быть следствием высокой мотивации, а не причиной успеха.
В обоих случаях Макконнелл утверждает, что компетентность в конечном итоге определяет, будет ли проект успешным или нет, независимо от принятого подхода к разработке; более того, он утверждает, что некомпетентные «организации-самозванцы» (которые просто имитируют форму успешных организаций по разработке программного обеспечения) на самом деле занимаются тем, что он называет разработкой программного обеспечения с культом карго . [5] : 11–13