Pantallazo de un tuit. El autor es Alex Blechnan @AlexBlechnan. El tuit fue publicado el 25 de noviembre de 2022 a la 1:28 AM. El texto dice: Programming is chaotic magic. There are no rules. You ask a game dev
Lo del demonio y la bufanda
Publicado el 12 de noviembre de 2024
Un chiste que me he encontrado ya varias veces por internet es el que se cuenta en el tuit que encabeza este artículo. El chiste se basa en la intuición de que saber qué cosas son fáciles de programar y cuáles son difíciles es difícil para un profano. Una de las iteraciones más famosas de este chiste es
este xkcd
. Si este chiste se repite tanto es porque a nivel superficial resuena con experiencias que hemos tenido. Sin embargo, creo que puede ser interesante darle otra vuelta de tuerca. Tal vez la intuición del diseñador sobre cuánto trabajo lleva algo no está tan errada y es la respuesta del programador la que se está dejando cosas.
Cómic de Xkcd. A la izquierda vemos a un hombre de pie. Entendemos que es el diseñador del producto. A la derecha vemos a una mujer sentada en el ordenador. Entendemos que es la programadora.
Diseñador: When a user takes a photo, the app should check whether they're in a national park...
Programadora: Sure, easy GIS lookup. Gimme a few hours.
Diseñador: ...and check whether the photo is of a bird.
Programadora: I'll need a research team and five years.
Pie de imagen: In CS, it can be hard to explain the difference between the easy and the virtually impossible.
Vamos a centrarnos en la versión concreta del tuit con el demonio y la bufanda. Y vamos a hacer una de las cosas menos graciosas que existen en este planeta: explicar un chiste. Asumiendo un oyente programador, la gracia está en que el oyente reconoce que la tarea del demonio consiste en un script de gameplay bastante simple en el que se crea el objeto bajo tierra, se crean un par de objetos más para las partículas y y efectos de sonido de la explosión de lava y se reproduce la animación del demonio de salir de bajo tierra mientras se eleva su posición hasta dejarlo sobre el suelo. Por otro lado, se reconoce que el código necesario para la bufanda consiste en una compleja simulación física en la que la bufanda se dobla, sigue los movimientos del personaje y ondea al viento sin atravesar otros objetos. Esto crea una disonancia con lo vistosas que son ambas tareas y el trabajo que lleva programarlas. La del demonio sería un momento espectacular y memorable del juego mientras que seguramente muchos jugadores ni se den cuenta de que el jugador lleva bufanda. En esa disonancia entre percepción y cantidad de trabajo está la gracia.
Esto es cierto, hasta cierto punto. Es verdad que la tarea del demonio requiere mucho menos trabajo.
Para el programador
. Si miramos las dos tareas desde la cantidad de trabajo
de programación
que requieren, la del demonio es, efectivamente, muy fácil. Ahora bien, eso requeriría ignorar todo el trabajo que conlleva hacer el modelo, las texturas, las animaciones, los efectos de partículas, de luces, de sonido y de cámara, los scripts de inteligencia artificial y en general todo el resto del trabajo necesario para que en el juego haya un demonio de lava. Todas estas cosas, que son el grueso del trabajo, sí que contribuyen a formar esa intuición que tiene el diseñador de cuánto esfuerzo va a llevar la tarea. Cuanto el programador dice que la primera tarea es fácil, lo es
para él
, si ignora todo el trabajo que el resto del equipo tiene que hacer para llevarla a cabo. Cuando se queja de la segunda, lo hace porque requiere mucho esfuerzo
de él
.
Si cogemos la versión del xkcd, sucede algo ligeramente distinto pero similar. La tarea de saber si el usuario de la app está en un parque nacional es fácil porque solamente hay que mirar la ubicación de GPS del teléfono y compararla con la ubicación de los distintos parques nacionales de Estados Unidos. La tarea de saber si en la foto hay un pájaro es difícil porque requiere de complicada tecnología de redes neuronales para analizar y clasificar la imagen, un campo que sigue en desarrollo activo y en el que todavía no hay soluciones definitivas establecidas. Si miramos un poco, la primera tarea no es inherentemente fácil. Sólo es fácil porque otra persona ya ha resuelto gran parte antes, y al personaje del cómic sólo le falta unir los puntos. GPS es un enorme proyecto logístico del ejército de los Estados Unidos que fue muy costoso de crear y requiere mucho trabajo y dinero para mantenerlo. La parte difícil de responder a "¿estoy en un parque nacional?" es responder a la pregunta "¿dónde estoy?", uno de los retos más antiguos y duraderos de la historia de la tecnología y al que se han dedicado miles de horas para desarrollar multitud de soluciones distintas a lo largo de la historia. Convenientemente, hoy en día ese problema, la parte difícil y cara, ya ha sido resuelto por otros, por lo que la tarea es fácil. La otra pregunta difícil es "¿dónde están los parques nacionales?". El mundo no vino con mapas. La cartografía ha sido una importantísima rama de la ciencia durante siglos, especialmente en el siglo XVI. Que hoy en día ya haya sido resuelto por otros no significa que haya sido un problema fácil.
Comparando con la parte del análisis de imagen, éste es todavía un campo bastante jóven en el que la mayoría de progreso ha sucedido en los últimos 10 años y en el que para muchos problemas todavía no hay soluciones hechas que uno pueda simplemente descargarse de GitHub y usar, por lo que la tarea consiste en hacer el trabajo de verdad y no reusar el trabajo de otro. Esto la hace, efectivamente, bastante más difícil, pero tampoco cuesta tanto imaginar un futuro no tan lejano en el que una biblioteca open source sea capaz de decir con mucha fiabilidad si una imagen contiene o no un pájaro.
Logo of RSS.