sábado, abril 26, 2008

Cargocultismo

Serie: Los N Pecados Capitales

Durante la Segunda Guerra Mundial, las tropas americanas desembarcaron en muchas islas cuyos habitantes habían tenido poco o ningún contacto con la civilización occidental. Ante los ojos de estos nativos, se desarrollaba un drama sacado de la ciencia ficción: unos seres curiosos, venidos de muy lejos, que realizaban ceremonias incomprensibles, a través de las cuales obtenían un nivel de bienestar material antes desconocido en la zona.
Marcha del Día de John FrummUno de aquellos seres, por ejemplo, pasaba horas hablando con una extraña caja de la que sobresalían cuerdas de metal. Al parecer, aquellas conversaciones con la misteriosa caja conseguían que en la isla se posaran gigantescos pájaros de hierro, procedentes de la tierra de los antepasados, de cuyos vientres se extraían toneladas de comida, armas y otros objetos deslumbrantes y probablemente útiles. No, no se trataba de dioses, pero era evidente que aquella tribu había descubierto cómo contactar con sus antepasados y recibir la correspondiente bendición material.
Llamaba también la atención el que buena parte de estos marines fuesen de piel oscura... como la mayoría de los nativos, pues he olvidado aclarar que mi historia tuvo lugar en la Melanesia. Esto hacía que la idea de contactar con los antepasados para recibir un cargamento resultase más creíble: los negros de aquella tribu lo habían logrado, ¿no? En la mente de estos melanesios comenzó a forjarse la image de un tal John Frumm (¿John from America, quizás?) un marine negro que prometía volver para ayudar a los nativos tras la guerra.
Naturalmente, terminó la guerra y John Frumm no regresó. O si regresó, no lo reconocieron. Ante la ausencia, ¿por qué no intentar seguir el camino de Frumm? Tallaron radios de madera de cocotero, y pintaron líneas con hollín sobre zonas despejadas. Nativos con hojas de palmeras en sus manos imitaban el código de banderas de los norteamericanos, con la esperanza que aquel baile que habían visto ejecutar a John Frumm atrajese el cargamento de los antepasados a las islas.
Aún hoy, "tropas" de melanesios desharrapados desfilan en algunas islas con rifles de madera al hombro. El fenómeno se conoce como cargo cult y, como puede sospechar, ha sufrido algunos cambios en su necesaria evolución. Por ejemplo, para algunas sectas, los blancos se oponen a revelar el secreto del "cargo", y periódicamente estalla la violencia contra los pocos occidentales que tienen a mano. Ha surgido también algún mesías nativo que ha reclamado ser un avatar de John Frumm, y ha propiciado el correspondiente cisma entre los cultocarguistas.

La Informática está llena de cargocultistas: personas que han visto a otras usar con éxito determinada técnica, y que luego se lanzan a repetir la ceremonia sin entender realmente de qué se trata. Por ejemplo, todo el mundo ha leído sobre la maravillosa revolución que se produjo cuando Santa Programación Orientada a Objetos se encarnó entre los mortales, allá por los tiempos de gloria de C++. Por lo tanto, cuando es necesario escribir una aplicación para bases de datos, intentan utilizar eso de los "objetos". Y establecen principios como: "sólo es profesional aquel que define una clase Cliente". O: "tenemos que usar UML, o Java, o servicios Web... aunque no tengamos ni puñetera idea de por qué, pues es lo que hacen los programadores serios". Amén, hermano.
Observe que el cargocultismo es un mal diferente del síndrome del pollo de Skinner. En este último, se cree en la existencia de una relación causa/efecto inexistente, mientras que el cargocultismo se basa en una conexión real, que verdaderamente funciona... excepto que el cargocultista no comprende por qué. ¿Otra diferencia? Nadie confesaría voluntariamente que actúa como un pollo de Skinner, mientras que el cargocultismo tiene cierta aura de respetabilidad a su alrededor. Cuestione a un cargocultista, y parecerá que está cuestionando los principios más básicos de la profesión.
Además, tengo mejor opinión de un pollo de Skinner que de un cultocarguista. En cierto modo, todos hemos sido pollos de Skinner: el aprendizaje y la experiencia son la medicina contra ese estado. Por el contrario, es difícil curar a un cargocultista.
Y es que, en este mundo, mucha gente sigue esperando el regreso de John Frumm.

Etiquetas: ,

15 Comments:

Blogger Pablo Grisafi said...

Muchas veces pienso eso... es decir ¿y si el paradigma orientado a objetos es un error? No creo que sea un error, pero estoy seguro que no es útil en todos los casos. Y que está muy sobreutilizado. A veces me imagino que el paradigma funcional es más acertado, y hoy por hoy está ganando fuerza. Otras veces retrocedo, y pienso en la vieja y querida programación procedural. Es muy útil en muchos casos. No hay que olvidar que el origen de la POO era la simulación, y en ningún caso es más útil que para hacer simulaciones, o juegos.¿Pero para aplicaciones de negocio...?¿No nos estaremos equivocando todos?

lunes, abril 28, 2008 7:37:00 p. m.  
Blogger Alfredo Novoa said...

Un error no es, lo que es un error es usarlo para lo que no sirve.

Yo creo que en lo que más se diferencia la OO de los demás paradigmas es en que es el único que ha sido creado por ingenieros en lugar de por científicos, y por eso es así de práctico pero a la vez así de sucio y chapucero.

Yo creo que la OO debería de ser reformulada y limpiada por científicos, pero como mínimo conservando toda su utilidad.

Por otra parte la programación funcional también tiene sus pegas, y hay muchos que no cometemos el error de usar la OO para bases de datos de negocio.

martes, abril 29, 2008 4:30:00 p. m.  
Blogger PabloNetrix said...

"hay muchos que no cometemos el error de usar la OO para bases de datos de negocio"

Y, señor Alfredo, según su superior criterio, ¿qué paradigma es más apropiado para las aplicaciones de bases de datos de negocio? ¿Existe algo que represente con más exactitud en un sistema informático la "vida real", que no sea la OO y el modelo Entidad/Relación?

Mi jefe (sí, mi jefe, el Jefe de Proyecto de mi empresa) es un hacha de la programación... lineal. 1800000 líneas de código a las que sólo les falta ir numeradas para que parezcan BASIC de los 80 en lugar de Object Pascal. Kernigan y Ritchie eran científicos, ¿propone usted volver a aquellos paradigmas? Al fin y al cabo si nos ponemos técnicos, una CPU es exactamente eso lo que hace: código lineal. No entiende ni siquiera de subrutinas, mire usted.

De verdad que, cuando leo artículos o comentarios de determinadas personas, no entiendo cómo no están trabajando de Ingeniero Jefe en Oracle (por ejemplo) en lugar del inútil que debe de haber allí...

miércoles, abril 30, 2008 12:13:00 a. m.  
Blogger Alfredo Novoa said...

Señor se usa con el apellido y Don con el nombre.

Con bases de datos de negocio lo más apropiado es la programación lógica y declarativa del Modelo Relacional.

Kernighan and Ritchie no tienen mucho que ver con la OO.

Me has entendido al revés. Yo no propongo volver a paradigmas más primitivos que la vieja OO si no a avanzar hacia otros de superior nivel de abstracción y mayor integridad conceptual.

Al fin y al cabo la OO no es más que una pequeña evolución de la programación estructurada clásica que debería haber sido superada hace muchos años.

miércoles, abril 30, 2008 1:02:00 a. m.  
Blogger Unknown said...

Vivimos en un mundo real y las soluciones que necesitamos son aquellas que se dan en el mundo real, es decir soluciones Orientadas a objetos. Todo lo que nos rodea son objetos con lo que no podemos decir que nos equivoquemos al usar la OO. Otra cosa bien distinta es que no usemos la OO cómo se debiera, yo siempre tengo en cuenta los principios fundamentales de la propia OO como son: Encapsulación, Herencia,Polimorfismo...y conozco bien los patrones, etc... Señores, no dudemos a estas alturas de la OO ni de sus allegados (UML, E/R, Grasp...).
Por cierto... a Alfredo Novoa...¿Cómo se podría llegar a otros niveles superiores de abstracción? Para mí, es imposible...

martes, mayo 06, 2008 1:03:00 a. m.  
Blogger Alfredo Novoa said...

Vivimos en un mundo real y las soluciones que necesitamos son aquellas que se dan en el mundo real, es decir soluciones Orientadas a objetos. Todo lo que nos rodea son objetos con lo que no podemos decir que nos equivoquemos al usar la OO.

Esto podría ser un ejemplo muy bueno de cargocultismo.

Por cierto... a Alfredo Novoa...¿Cómo se podría llegar a otros niveles superiores de abstracción? Para mí, es imposible...

Hace mucho que se ha llegado. Como por ejemplo con: SQL, Prolog, Gödel, etc.

martes, mayo 06, 2008 1:13:00 a. m.  
Blogger PabloNetrix said...

SQL es un lenguaje de consultas, no un lenguaje de programación. Con las construcciones "case" o los condicionales puedes hacer algo parecido a un programa, pero sólo parecido. No mezclemos churras con merinas.

En cuanto a Prolog... pues sí, vale... y Lisp, y Haskell... ¿me quieres explicar qué lugar pueden tener en el mundo (empresarial) real lenguajes como éstos? Te respondo yo: ninguno. ¿Utilidad? Tanta como el pintoresco "whitespace" (esotéricos, les llaman). Ahora, para el mundo académico son bonitos de narices. El que más me gusta: "Ook!"

miércoles, mayo 07, 2008 1:37:00 a. m.  
Blogger Alfredo Novoa said...

Sharq, está claro que no se puede hablar de nada de esto contigo.

miércoles, mayo 07, 2008 10:40:00 a. m.  
Blogger PabloNetrix said...

oh... usted disculpe. Pero, si no es mucho pedir y vuecencia tuviese a bien explicar a este pobre ignorante el por qué de esas palabras... Quizás es que estoy lejos de su Superior conocimiento (que no lo dudo), o es que se ha quedado usted sin argumentos (poco probable).

De ahora en adelante procuraré solamente ver oir y callar; no es mi intención el molestar a nadie.

miércoles, mayo 07, 2008 3:53:00 p. m.  
Blogger Unknown said...

Por cierto... a Alfredo Novoa...¿Cómo se podría llegar a otros niveles superiores de abstracción? Para mí, es imposible...

Hace mucho que se ha llegado. Como por ejemplo con: SQL, Prolog, Gödel, etc.


Pues yo por ejemplo no veo al paradigma funcional como lo "más" a la hora de abstraer...pero es que como te decía,siempre que pienso en algo que quiero modelar, pienso en objetos.

Con respecto a SQL pues que decir, que mediante los diagramas de E/R (supongo que te referías a esto) modelamos cosas del Universo del discurso y lo llevamos a Entidades y estas entidades son lo que podemos entender prácticamente como objetos. No sé, quizás soy mu cerrao pero es que como dice Sharq...yo el prolog lo usé en la facultad para ver y entender bien lo que son por ejemplo las podas pero poca cosa más.

Saludos

De ahora en adelante procuraré solamente ver oir y callar; no es mi intención el molestar a nadie.

jeje...parece mi relación con mi novia...a ver quién es más cabezón...Saludos y espero que no moleste sobre todo este último comentario que me pareció gracioso sin más.

jueves, mayo 08, 2008 1:08:00 a. m.  
Blogger Unknown said...

y me había dejado lo más importante...

Vivimos en un mundo real y las soluciones que necesitamos son aquellas que se dan en el mundo real, es decir soluciones Orientadas a objetos. Todo lo que nos rodea son objetos con lo que no podemos decir que nos equivoquemos al usar la OO.

Esto podría ser un ejemplo muy bueno de cargocultismo.


Creo que con lo que he dicho queda claro que si uso los objetos es porque los entiendo y porque me parece la manera más cómoda de buscar soluciones reales a problemas reales.

Saludos

jueves, mayo 08, 2008 1:15:00 a. m.  
Blogger Alfredo Novoa said...

Pues yo por ejemplo no veo al paradigma funcional como lo "más" a la hora de abstraer...

Pues teniendo en cuenta que ninguno de los 3 lenguajes es funcional no se muy bien que pensar.

pero es que como te decía,siempre que pienso en algo que quiero modelar, pienso en objetos.

Ya, y yo también pienso en cosas, pero la técnica se puede afinar un "poco" más.

Con respecto a SQL pues que decir, que mediante los diagramas de E/R (supongo que te referías a esto)

No, para nada.

Creo que con lo que he dicho queda claro que si uso los objetos es porque los entiendo y porque me parece la manera más cómoda de buscar soluciones reales a problemas reales.

Pues es una afirmación tan ingenua como intentar hacer una radio con cocos.

jueves, mayo 08, 2008 12:15:00 p. m.  
Blogger Daniel said...

Que pasa que la pag esta tan quieta? Hace varios dias que no hay ni un comentario. Esta bien que el amigo Ian esta saturado de trabajo, pero los que participamos asiduamente podriamos darle vida iniciando nuevos temas.

Saludos para todos desde el fin del mundo.

martes, mayo 20, 2008 7:20:00 p. m.  
Blogger Al González said...

¡Hola Ian!

Yo no voy a ponerme a discutir con los demás lectores. Sólo a aplaudir la excelente analogía que planteas en tu artículo.

Conozco el fenómeno y lo he detectado tanto en foros Web, como en varias de las empresas de desarrollo a las que he dado consultoría en Delphi.

Es muy triste que alguien con titulo de "master" te muestre un espantoso código de dos mil líneas que podrían reducirse fácilmente a trescientas (organizándolas de una manera menos sanguinaria), si se empleara de forma justa tanto programación procedimental como orientada a objetos. ¡Y qué todavía digan que eso está así porque es «como mandan los cánones»!

La adquisición errónea de conceptos y el fanatismo informáticos son dos de los peores males de esta profesión llamada desarrollo de software, pero combatibles con razonamientos sólidos y enseñanza de calidad como los encontrados en tu blog.

Un abrazo orientado a resultados durables.

Al González. :)

domingo, junio 01, 2008 12:06:00 a. m.  
Blogger Daniel said...

Que pasa que la pag no tiene movimiento? El amigo Ian estará bien?

viernes, agosto 22, 2008 1:55:00 p. m.  

Publicar un comentario

<< Home