La programación de culto al cargo es un estilo de programación informática que se caracteriza por la inclusión ritual de código o estructuras de programa que no tienen ningún propósito real. La programación de culto al cargo es sintomática de un programador que no entiende ni el error que intentaba resolver ni la solución aparente (compárese con la depuración de escopeta , la magia profunda ). [1] El término programador de culto al cargo puede aplicarse cuando alguien sin experiencia con el problema en cuestión copia algún código de programa de un lugar a otro con poca comprensión de cómo funciona o si es necesario.
La programación de culto a la carga también puede referirse a la práctica de aplicar un patrón de diseño o un estilo de codificación a ciegas sin comprender las razones detrás de ese principio de diseño. Algunos ejemplos son agregar comentarios innecesarios a un código que se explica por sí solo, adherirse de manera excesiva a las convenciones de un paradigma de programación o agregar código de eliminación para objetos que la recolección de basura recolecta automáticamente.
Los cultos a los cargamentos son movimientos milenarios que surgieron en Melanesia bajo el régimen colonial y que inspiraron a Richard Feynman a acuñar la expresión ciencia del culto a los cargamentos . Según la descripción de Feynman, tras el final de la Segunda Guerra Mundial, los practicantes creían que el transporte aéreo de cargamentos se reanudaría si llevaban a cabo los rituales adecuados, como construir pistas de aterrizaje, encender hogueras junto a ellas y llevar auriculares tallados en madera mientras estaban sentados en torres de control fabricadas. "La forma es perfecta. Parece exactamente como antes. Pero no funciona".
El término se empezó a utilizar más ampliamente como metáfora de rituales vacíos. El término "programación de culto de carga" apareció en la versión 2.5.1 del Jargon File , un glosario de jerga informática, publicado en enero de 1991. Mientras tanto, el término "culto de carga" en antropología se evita cada vez más por no representar la complejidad de las creencias melanesias. [2] [3]
Un término relacionado con la programación de culto de carga en ingeniería de software es ingeniería de software de culto de carga , acuñado por Steve McConnell . [4] : 23-26
McConnell describe a las organizaciones de desarrollo de software que intentan emular a las casas de desarrollo más exitosas, ya sea siguiendo servilmente un proceso de desarrollo de software sin comprender el razonamiento detrás de él, o intentando emular un enfoque de desarrollo orientado al compromiso (en el que los desarrolladores de software dedican grandes cantidades de tiempo y energía a ver que sus proyectos tengan éxito) al exigir largas horas y horas extras no remuneradas, mientras que en las empresas exitosas estas podrían ser en cambio consecuencias de una alta motivación en lugar de causas del éxito.
En ambos casos, McConnell sostiene que la competencia determina en última instancia si un proyecto tiene éxito o fracasa, independientemente del enfoque de desarrollo adoptado; además, afirma que las "organizaciones impostoras" incompetentes (que simplemente imitan la forma de las organizaciones de desarrollo de software exitosas) de hecho están participando en lo que él llama ingeniería de software de culto a la carga . [5] : 11–13