Me cuesta saber cómo empezar este texto porque siempre es difícil darse cuenta de lo malo de alguien a quien se ha admirado. Para los despistados, un poco de contexto. Jonathan Blow es un conocido diseñador y programador de videojuegos, famoso sobre todo por dirigir
Braid
y
The witness
, dos grandes obras del videojuego independiente de puzles. En la actualidad, se encuentra desarrollando su siguiente videojuego, además de su propio lenguaje de programación con el objetivo de crear un lenguaje especialmente diseñado para escribir videojuegos. Blow es también en cierta medida una persona pública, con una gran presencia a través de charlas en conferencias, entrevistas, redes sociales y sus canales de Twitch y YouTube, donde retransmite en directo sesiones de programación o divulga sobre informática en un tono más informal que una conferencia.
Blow siempre ha sido muy vocal en sus opiniones fuertes sobre videojuegos o informática. Sin embargo, recientemente, su discurso se ha ido tornando cada vez más catastrofista, pronosticando un imaginado colapso de la civilización por culpa del estado actual del software. Su tesis esencialmente es que los programadores hoy en día trabajan sobre tantas capas de abstracción que no entienden las máquinas que están programando. Esto, combinado con que esas capas de abstracción son a menudo defectuosas, causa que el software sea defectuoso. Hoy en día, cuando el software está presente en tantos aspectos de nuestras vidas, incluyendo aspectos críticos como salud, transporte o comunicaciones, el alto número de defectos es problemático. La solución que propone es que hay que simplificar, reduciendo el número y tamaño de las abstracciones sobre las que se escriben los programas.
Y esta tesis es razonable, e incluso se puede estar de acuerdo con ella. Lo que me chirría cada vez más es su retórica. Cuando habla, Blow está creando constantemente una distinción entre un “nosotros” y un “ellos”. Nosotros, los programadores de sistemas. Los que usamos lenguajes de programación de bajo nivel. Los que no necesitamos gestión automática de memoria. Los que entendemos el hardware. Los programadores DE VERDAD. Ellos, los programadores de páginas web, y lenguajes que se ejecutan en máquinas virtuales como Java o C#. Los chapuceros. Los que no entienden la máquina y creen que los ordenadores son magia. Los programadores DE MENTIRA. Es bastante impresionante su obcecación con negarse a reconocer los logros o el conocimiento de nadie que no considere de su grupo. Y esto permea constantemente en su comunicación pública. No es raro estar escuchando a Blow hablar sobre un tema y que de vez en cuando meta una puya totalmente innecesaria a alguna tecnología. Otra cosa que acaba llamando la atención a la larga es cómo todas las ideas y referencias positivas vienen de las mismas fuentes, todas muy similares, y nunca parece interesado por querer aprender nada de los lenguajes funcionales o el desarrollo web por poner un par de ejemplos. En su cabeza, los programadores se dividen en un reducido grupo de programadores en posesión de la verdad y la rectitud, y una multitud equivocada, y parece ser necesario mantener la pureza de este grupo reducido para que puedan hacer las cosas bien y mejorar las cosas.
Otro de sus recursos retóricos que más chirrían es su insistencia en que antes bien, ahora mal. Los programadores de antes, la imagen de los señores mayores barbudos que nos evoca gente como Ken Thompson, sí que sabían programar de verdad. Entendían cómo funcionaban las máquinas de verdad y eran realmente productivos. Los programadores de ahora no saben lo que están haciendo, no entienden los ordenadores, no saben escribir código sin llenarlo de bugs y su productividad se aproxima a cero. Aquí hay muchas capas que desenredar porque es un fenómeno complejo y tampoco quiero alargarme mucho, pero lo importante es que no hay ninguna evidencia estadística de que los programadores de antes fueran más capaces o estuvieran mejor formados que los actuales. Este discurso, la idea de que antes las cosas estaban mejor y ahora están decayendo, es muy común en la mayoría de formaciones de extrema derecha, y lo ha sido a lo largo de la historia. El eslogan de Trump “Make America great again” implica que Estados Unidos fue grande en algún momento del pasado, pero ya no lo es, y que su propósito es volver a hacerlo grande. Lo encontramos también en Vox y su añoranza del imperio español del siglo XVI o en los Tories británicos y su añoranza del imperio británico. Históricamente, Franco también hablaba de la decadencia de España y de recuperar el imperio, Mussolini aspiraba a un nuevo imperio romano y Hitler insistía en que la raza aria estaba en peligro por culpa de los judíos. La idea de que las cosas antes estaban bien y ahora no, y que un líder se dispone a recuperar las cosas para que vuelvan a estar bien es muy efectiva a la hora de canalizar un enfado generalizado y crear sentimiento de grupo, dos cosas que Blow hace a menudo, pero rara vez se corresponden con la realidad. Más bien se basan en pintar una imagen idealizada del pasado y contraponerla a una imagen demonizada del presente, lo que es muy efectivo a nivel emocional, pero no muy cierto.
La supuesta solución que propone, “simplificar”, es lo bastante vaga y abstracta como para significar todo y nada a la vez. Ver a Blow acusar a tecnología de demasiado complicada me recuerda un poco a Carlos Ríos llamando “ultraprocesado” a alimentos. Lo que ha creado en realidad es dos términos mágicos que a estas alturas son poco más que sinónimos de bueno y malo, que puede esgrimir en el día a día ante sus seguidores. Lo que no termina uno de ver es cómo este proceso de simplificación llevado a cabo por el reducido grupo de los programadores DE VERDAD va a repercutir en la totalidad del software si la mayoría de los programadores están siendo excluidos de este grupo.
En realidad, lo que Blow está vendiendo, de forma bastante similar al antes mencionado Carlos Ríos o a diversos políticos trumpistas, es un estilo de vida, una guía ética que seguir para alcanzar una hipotética felicidad. Algo bastante estudiado de la estrategia trumpista es que, al ser bastante escasa en argumentos y en proyecto político, lo que vende es un estilo de vida. Hubo un eslogan famoso en las elecciones estadounidenses de 2016 que decía algo del estilo “I just want to grill my steak and drive my car”. Algo tipo “yo sólo quiero comerme un chuletón y conducir mi coche”. Lo que este eslogan está haciendo es pintar un adversario, el malvado ecologista vegano que quiere prohibir los chuletones y los coches, y presentarse a uno mismo como el defensor de ese estilo de vida. Lo cierto es que ninguna figura de relevancia en el debate político actual quiere prohibir ni los chuletones ni los coches, pero el eslogan funciona porque tiene una gran capacidad de apelar a lo identitario. Sucedió algo parecido en las elecciones autonómicas de la Comunidad de Madrid de 2021 y la campaña de Isabel Díaz Ayuso en la que reivindicaba la “libertad” de salir a tomar una caña a pesar de la pandemia. Ante la falta total de proyecto del Partido Popular de Madrid y su incapacidad a la hora de gestionar la pandemia, su campaña consistió en vender un estilo de vida y asociarlo a la palabra libertad. Recordemos que el Partido Popular obtuvo una mayoría absoluta en estas elecciones. De forma similar, Jonathan Blow vende un estilo de vida en cierta manera, una promesa de que si programas como él dice serás más feliz porque serás más productivo y escribirás menos bugs y pasarás más tiempo desarrollando nueva funcionalidad y menos tiempo arreglando problemas o interactuando con cosas que funcionan mal. Bajo el disfraz de discurso político lo que hay es una guía moral para alcanzar la felicidad que tiene como objetivo crear un sentimiento identitario.
El discurso de Blow es claramente político, pero reniega de la política entendida como la negociación entre distintas partes para alcanzar un bien común o un consenso. Esto es bastante habitual en la retórica de la extrema derecha. Dice querer arreglar la situación actual de la informática, pero su supuesta solución excluye a la mayoría de los practicantes del oficio. Esto es porque en realidad Blow no tiene un proyecto para transformar nada. Cada vez más, predica únicamente a los ya convencidos, y su discurso funciona más como reafirmación identitaria que como verdadero diagnóstico de los problemas o soluciones. Otra de las cosas que dejan ver la ausencia de proyecto real es el que nunca hable sobre un plan de migración. ¿Cómo se va a pasar de la situación actual a su futuro ideal soñado? ¿Qué hacemos con los cientos de millones de líneas de código existentes? ¿Qué hacemos con las entidades, empresas, gobiernos, individuos… que dependen de que ese software ya escrito siga funcionando? Jonathan Blow no habla sobre estos problemas porque son difíciles, y cualquier solución que no sea patentemente ridícula requiere reconocer la dificultad del problema y la enorme cantidad de partes a ponerse de acuerdo y colaborar para llegar a algo parecido a una solución. Eso requeriría diálogo, escuchar y tener en cuenta las prioridades e ideas de los programadores DE MENTIRA, y se sale completamente del marco en el que opera el discurso de Jonathan Blow.
Lo que más pena me da de esto es que Jai, el lenguaje de programación antes mencionado que Jonathan Blow está desarrollando, se va a estrellar. Y no va a ser por falta de buenas ideas o por una mala implementación, sino porque todo lo que rodea su desarrollo huele un poco a cerrado. La historia de los lenguajes de programación es una constante de ideas viajando entre distintos paradigmas y entornos. Prácticas que con el tiempo se convierten en estándares en un campo pueden haber surgido originalmente en un campo totalmente distinto. Por ejemplo, hoy en día es una práctica muy común que un lenguaje de programación tenga un repositorio de paquetes y un gestor automático de dependencias. Esta idea ha proliferado incluso en el espacio de los llamados lenguajes “de sistemas”. Rust tiene Cargo, D tiene dub, Zig está trabajando en el suyo, y hasta C++ tiene varios entre los que puedes elegir, siendo Conan y vcpkg los más comunes. El concepto original surge en el mundo web, con npm, el gestor de paquetes de node.js para JavaScript. La negativa constante de Jonathan Blow a reconocer las buenas ideas de nadie que no considere parte de su grupo va a poner a Jai en una clara desventaja ante otros lenguajes. Además, una comunidad que huele a cerrado va a tener menos capacidad de atraer a gente, y sobre todo de atraer a gente de trasfondos diversos que pueda aportar ideas frescas, lo que va a llevar a que el desarrollo se estanque o avance despacio. Y la realidad es que Jonathan Blow no lo sabe todo. Me hace mucha gracia cada vez que en una sesión de preguntas y respuestas alguien le pregunta si Jai tendrá algo para ayudar a escribir código paralelo y él siempre contesta que es un problema muy difícil y no se le ocurre nada, pero que es que nadie tiene soluciones para eso, porque la realidad es que el modelo de propiedad de Rust y los traits de
Sync
y
Send
son un diseño brillante y un gran avance práctico reciente en soluciones sistemáticas a la complejidad del código paralelo. También lo son la
en C++. Y me hace gracia porque Blow está ignorando, deliberadamente o no, avances reales en campos en los que ahora trabaja, como es el diseño de lenguajes de programación, y en los que se podría inspirar para posibles soluciones. En su lugar, comunica ante su audiencia que aquellos temas en los que él tiene lagunas son páramos intelectuales en todas partes. No es que él no sepa del tema. Nadie sabe nada y el problema es muy difícil.
Por ir cerrando un poco esta chapa, pongamos un poco en contexto. Cuando hablo de la fase trumpista de Jonathan Blow no estoy diciendo que él apoye ideas de extrema derecha o el discurso político de Donald Trump. Lo que afirmo es que usa recursos retóricos comúnmente usados por organizaciones políticas de extrema derecha cuando habla como persona pública. Esto ha causado que tenga un seguimiento pequeño de seguidores muy acérrimos, que sienten las ideas de Blow como parte de su identidad. No estoy muy seguro de a dónde va con esto, ni qué quiere conseguir. Si lo hace con algún fin o si le sale solo. Puede que sea simplemente una consecuencia natural de la facilidad con la que internet puede conectar a alguien con tendencia a decir verdades como puños con un corrillo que le conteste “por Zeus que hay verdad en lo que dices”. Lo que sí que siento es que a mí cada vez me interesa menos, y me produce lástima, porque Jonathan Blow es una persona que me ha inspirado bastante en el pasado. Creo que en su divulgación hay conocimiento muy valioso que se puede aprender, y retos técnicos muy chulos para investigar y resolver por uno mismo. Creo que hay algo de verdad en su diagnóstico del estado del desarrollo de software. Desde luego comparto la frustración ante la enorme cantidad de defectos que presentan una y otra vez programas con los que interactuamos cada día. Me siguen gustando mucho sus juegos, y tengo ganas de ver lo que sigue haciendo en el futuro. Y Jai tiene ideas muy guays. Me encanta su sistema de metaprogramación. Es una locura, pero tengo muchas ganas de que exista para poder argumentar desde la experiencia si la ejecución arbitraria de código en el compilador es buena idea o no. Pero cada vez me cuesta más oírle hablar. Llevaba ya tiempo sintiendo que en sus vídeos el discurso era cada vez más identitario y me chirriaba más, pero lo cierto es que no es él el que ha cambiado. Ayer revisité su charla de 2019
, que en su momento me impactó mucho, y me he encontrado en ella todos los elementos retóricos de extrema derecha de los que hablo en este texto.
No quiero decir que no haya que escuchar a Jonathan Blow. Como he dicho antes, se puede aprender mucho de él. Yo he aprendido mucho de él. Pero creo que es conveniente estar alerta para no caer en sus trampas retóricas. No se acerca el colapso de la civilización. No hay técnica mágica para escribir mejor software. No eres un programador DE VERDAD. Tampoco eres un programador DE MENTIRA. El software hoy en día tiene muchos problemas, pero su solución, o lo más parecido a ello, será un proceso larguísimo y caótico con muchas partes involucradas, que no dejará contento del todo a nadie y cuyas verdades serán contingentes. Será, en fin, un proceso político, no técnico. Y cualquiera que intente vender lo contrario estará en el mejor de los casos equivocado, y en el peor mintiendo.