Home »

Pensamiento irracional también en Ingeniería de Software

El pasado viernes 12 de mayo un puñado de afortunados tuvimos la suerte de disfrutar de la compañía de James Randi “The Amazing Randi” y de DJ Grothe, ambos de la James Randi Educational Foundation. Estos dos caballeros están de viaje por Europa para asistir a diferentes congresos y aceptaron hacer una parada más larga de lo habitual para una sesión especial de Escépticos en el Pub en Madrid.

La JREF es una fundación que promueve el pensamiento crítico y dedica sus esfuerzos a llegar a los medios de comunicación y público en general para proporcionar información fiable sobre sucesos paranormales o sobrenaturales tan “comunes” en la sociedad de hoy.

[

James Randi](http://en.wikipedia.org/wiki/James_Randi), mago, ilusionista y escapista de profesión, ha sido un adalid frente a los fraudes paranormales toda su vida. A sus 83 años sigue activo en la defensa del pensamiento racional y contra las elucubraciones provenientes de todo tipo de charlatanes y magufos.

Me encantaría afirmar que en el ámbito tecnológico el pensamiento reflexivo es sistemáticamente el que predomina, pero debo reconocer que a menudo nos encontramos con saltos lógicos; y voy a poner varios ejemplos:

  • Cada vez que un informático dice “la funcionalidad X está terminada“ está realizando una afirmación extraordinaria. Puede parecer exagerado pero ¿por qué creerlo sin más? Se requiere un contraste y para ello existen las pruebas. Si él mismo es el que ha hecho las pruebas y nadie es capaz de ver los resultados, la afirmación sigue siendo muy frágil. No difiere mucho de un frutero que nos diera una bolsa cerrada tras pedirle un kilo de peras y dijera “ahí dentro va un kilo de peras, yo mismo lo he comprobado en la trastienda”. ¿Cuál es la reacción instintiva? Fiarse. Aceptar lo dicho sin cuestionarlo. Es trabajoso molestarse en poner en duda una afirmación de un compañero o un vendedor del barrio. No lo es tanto, curiosamente, si el compañero pertenece a una empresa rival o si el vendedor suele colar producto en mal estado.
  • En ocasiones celebramos debates sobre alguna tecnología y surgen las llamadas “flame wars”. Dejando aparte las que confieren exclusivamente a los gustos personales (vim vs Emacs, etc), lo cierto es que muchas veces no somos capaces de realizar comparaciones objetivas. A menudo, dos productos rivales lo son sólo tangencialmente y las comparativas son en realidad un ejercicio futil y una pérdida de tiempo. Cuando sí hay solapamiento funcional, los argumentos pasan rápidamente a abrazar el yo-centrismo (a mí me parece mejor, a mí me parece más sencillo) que son síntoma claro de que conocemos razonablemente bien un producto y poco el contrario aunque no estemos muy dispuestos a admitirlo.
  • Sucede en el día a día que, tras un esfuerzo continuado, conseguimos que una aplicación o un sistema funcione como era deseado pero no somos capaces de determinar cómo nosotros mismos hemos llegado a esa feliz circunstancia. Es como pasar del supersticioso “si funciona no lo toques“ al irracional “si funciona no te preguntes cómo lo has conseguido“. El efecto negativo de esta vagancia aparece cuando el sistema debe evolucionar y resolver escenarios más complejos. Es entonces cuando nuestro desaire al “cómo se hizo” vuelve para vengarse cruelmente.

Sin embargo, la gran paradoja que gobierna la actividad en la Ingeniería de Software, estando basada como está, en último término, en la aplicación pura y rigurosa de la lógica, es el gran número de falacias lógicas que los informáticos cometemos constantemente. Las falacias lógicas surgen de un pensamiento irracional cuando se cometen inconscientemente y de un pensamiento muy racional (léase manipulador) cuando se cometen de forma deliberada. En ambos casos, el resultado es una conversación “que no compila“.

  • Argumento de autoridad: “Si lo dice fulano tiene que estar bien“. Por ejemplo, “Linus Torvalds odia GNOME y Linus Torvalds es un hacker de tomo y lomo, luego no puede estar equivocado, de modo que GNOME es un mal entorno de escritorio“ (puede serlo independientemente de lo que diga Linus Torvalds). Su contrapartida suele ser el Ataque ad hominem; “Si lo dice fulano, que es una mala hierba, debe ser falso”. Por ejemplo, “Steve Jobs era un egocéntrico y megalómano y trataba mal a sus colegas, por tanto, los productos de Apple son perniciosos“ (pueden serlo independientemente de como fuera Steve Jobs en vida).
  • Argumento naturalista (o tradicionalista): “Lo auténtico y tradicional es mejor porque sí“. Por ejemplo, “Los buenos programadores son aquéllos que dominan los lenguajes de programación de bajo nivel“ (aka “… cuando los hombres eran hombres y escribían sus propios drivers…“ por Linus Torvalds). Este argumento jerarquiza tecnologías o talentos en función de su apego a los viejos tiempos. A veces contiene tintes “macho”. También se suele caer en “Aquí siempre hemos hecho las cosas así“ cuando se proponen cambios en metodologías de desarrollo o herramientas de apoyo.
  • Evidencia anecdótica: “Sucede una vez, ergo puedo generalizar“. Por ejemplo, “En mi máquina funciona“. Sin dejar de ser cierto que en la máquina de uno funcione un software, no lo es menos que en otra máquina no lo hace correctamente. De “En mi máquina funciona“ a “Funciona“ hay un salto gigantesco. Es muy poco profesional ampararse en esta excusa y demuestra poco pensamiento crítico no considerar que una experiencia personal no es extrapolable a toda una población de usuarios o técnicos. Se requiere reproducibilidad. Por cierto, que una colección de evidencias anecdóticas siguen sin equivaler a un resultado generalizado.
  • Crítica contra crítica: “Y tú más“. Por ejemplo “Tú dices que Linux no es seguro pero MacOSX tiene ahora mismo 4 zero-days“. Un clásico de las discusiones de café entre informáticos en donde nadie rebate nada, sólo avanzan en criticar puntos débiles del contrario. Usado en política, usado a la hora del café.
  • Apelo a la popularidad: “Que mucha gente apoye algo hace que ese algo sea válido“. Por ejemplo “En el último año el uso de la licencia BSD ha crecido mucho con respecto a la familia GPL, luego la licencia BSD es mejor licencia que la GPL“ o “MySQL es usado por mucha más gente que PostgreSQL, luego…“. Este tipo de argumento a veces se emplea en sentido inverso “Si mucha gente apoya algo lo más probable que ese algo sea inválido“ (aka “A mí no me va lo mainstream, sea lo que sea“). Es igual de pernicioso.

En resumen. El pensamiento crítico y la aplicación de la razón no se reducen sólo a reírse de las supersticiones o sucesos paranormales. Se aplica en el día a día con rigor. No critico el uso coloquial de expresiones como “No conseguimos saber dónde falla este software, tenemos un poltergeist“ o el reflejo de “tocar madera” antes de un primer paso a producción, sino la pereza intelectual de afrontar debates o sucesos relacionados con una ciencia o ingeniería, facilitadoras de conocimiento objetivable, con poco interés por un resultado contrastable y, si me lo permitís, “on topic”.

James Randi, en su charla del viernes, inistió mucho en ir a los colegios y dar charlas sobre pensamiento crítico como vacuna contra el pensamiento irracional. La realidad es que incluso en los lugares menos sospechosos de flirtear con el pensamiento mágico o simplemente irracional, tenemos buenos ejemplos para ponernos sobreaviso y tratar de ser más cuidadosos. La buena noticia es que todos estamos razonablemente bien equipados para ello.

Para terminar, os propongo un juego y es hacer una especie de tarjeta de bingo con sólo una línea y poner, en lugar de números, tipos de pensamiento irracional que habéis detectado en vuestro entorno (podéis coger los de este artículo). Veamos cuánto tiempo tardáis en cantar línea bien alto.