Программирование по культу карго.
Ритуальное включение ненужного компьютерного кода
Программирование по культу карго — это стиль программирования, характеризующийся ритуальным включением кода или программных структур, которые не служат никакой реальной цели. Программирование по культу карго — симптом того, что программист не понимает ни ошибку, которую пытался решить, ни видимое решение (сравните отладку наугад и глубокую магию). Термин программист культа карго применим, когда кто-то, не имеющий опыта в решаемой задаче, копирует некий программный код из одного места в другое, мало понимая, как он работает и нужен ли он вообще.
Программирование по культу карго также может означать практику слепого применения паттерна проектирования или стиля кодирования без понимания причин, стоящих за этим принципом проектирования. Примеры — добавление ненужных комментариев к самоочевидному коду, чрезмерно ревностное следование соглашениям парадигмы программирования или добавление кода удаления объектов, которые автоматически очищаются сборщиком мусора.
Этимология
Культы карго — это милленаристские движения, возникшие в Меланезии при колониальном правлении и вдохновившие Ричарда Фейнмана ввести выражение наука культа карго. По описанию Фейнмана, после окончания Второй мировой войны последователи верили, что воздушная доставка грузов возобновится, если они проведут надлежащие ритуалы, такие как строительство взлётно-посадочных полос, разведение рядом с ними костров и ношение наушников, вырезанных из дерева, сидя в построенных диспетчерских вышках. «Форма безупречна. Выглядит точно так же, как выглядело раньше. Но оно не работает».
Затем термин стал использоваться шире как метафора пустых ритуалов. Термин «программирование по культу карго» появился в версии 2.5.1 Jargon File — глоссария компьютерного сленга, выпущенного в январе 1991 года. Между тем самого термина «культ карго» в антропологии всё чаще избегают, поскольку он не отражает сложности меланезийских верований.
Разработка ПО по культу карго
Родственным программированию по культу карго термином в программной инженерии является разработка ПО по культу карго, введённый Стивом Макконнеллом.
Макконнелл описывает организации по разработке ПО, которые пытаются подражать более успешным компаниям-разработчикам — либо рабски следуя процессу разработки ПО без понимания стоящих за ним причин, либо пытаясь воспроизвести подход, ориентированный на самоотдачу (при котором разработчики ПО посвящают массу времени и сил тому, чтобы их проекты увенчались успехом), предписывая долгие рабочие часы и неоплачиваемые переработки, тогда как в успешных компаниях это могло бы быть скорее следствием высокой мотивации, чем причиной успеха.
В обоих случаях Макконнелл утверждает, что в конечном счёте именно компетентность определяет, удастся проект или провалится, независимо от выбранного подхода к разработке; более того, он заявляет, что некомпетентные «организации-самозванцы» (которые лишь имитируют форму успешных организаций по разработке ПО) на самом деле занимаются тем, что он называет разработкой ПО по культу карго.