Tenía unos 20 años y frecuentaba canales de IRC en el irc-hispano -el discord de antes, de cuando internet no estaba optimizado- de programación de videojuegos y 3D. Uno de los chavales allí me mandó una demo, era un patito de juguete modelado en 3D girando con iluminación “por pixel”. A día de hoy eso te lo programas en 10 minutos con cualquier motor 3D y chatGPT, pero en aquel momento era bastante impresionante, teniendo en cuenta que por aquella época no tenía tarjeta gráfica. Agradezco enormemente que Unai aguantase mis gilipolleces de novato y tuviese la paciencia para hacerme algo de caso.
Algo en mi interior me empujó a ponerme a trabajar para aprender a hacer tal maravilla y me metí en la programación de videojuegos y 3D de lleno. Desde pequeño me encantaron los videojuegos, al nivel de que mi primera gran “travesura” fue gastarme 13 mil pesetas (unos 300€ hoy) en una Master System sin decir nada a mis padres. No fue sencillo, en mi pueblo no podías comprarla, así que me tocó engañar a una persona para que me la comprase en “la gran ciudad”. Nunca más he vuelto a ser tan bueno engañando a alguien, ni siendo comercial como ahora. Los incentivos, bien diseñados, son maravillosos.
Perdonad, no me lio más. Cuando programas un videojuego la pantalla se tiene que actualizar unas 60 veces cada segundo para que parezca fluido, es decir, cada 16.6 milisegundos tienes que hacer los cálculos para que todo lo que está en la pantalla se mueva y se dibuje.
En términos absolutos, para una CPU actual, 16 milisegundos es la enternidad, pero la realidad es que a día de hoy la mayoría de desarrolladores no son capaces de devolver una respuesta a una llamada sencilla de un navegador web en 10 veces ese tiempo, cosa que es un órden de magnitud más sencillo (y estoy siento generoso para que los desarrolladores web no se sientan heridos)
El hecho de tener esa restricción pone el listón muy alto desde el principio. No puedes pensar en solo resolver algo además, por defecto, tiene que ser rápido o no va a funcionar. Eso hace que aprender a programar sea especialmente difícil, es el campo de entrenamiento más duro posible. Seguramente la gente que haga High Frequency Trading esté en una situación similar, pero dudo que nadie se ponga de niño a programar HFT por gusto.
Terminé haciendo 3D y videojuegos durante los primeros años de mi carrera. No me pagaban mucho, pero me daba igual, era mi sueño y cada uno pone a sus sueños el precio que quiere. Bueno, no solo eso, además hacía videojuegos y demos (algunas de ellos, además, con una restricción de 4kb de tamaño total) en mi tiempo libre, que seguramente debería haber invertido en hacer deporte y conocer gente (*)
Al cabo de los años, cuando la vida te lleva a otras industrias y ves que la gente no se ha formado con esa restricción, que nunca han tenido que hacer alto con limitaciones de tiempo, no te encaja su forma de plantear las soluciones, todo es un desperdicio. Cuesta entender el porqué esa gente hace las cosas sin pensar en que tiene que estar dentro de esos 16ms. En realidad ves como la mayoría de gente ha vivido la mayor parte de su vida laboral en vacas gordas que es de las peores cosas que te pueden pasar a nivel profesional. La industria del software está un par de órdenes de magnitud en eficiencia de donde debería estar, incluso después de 20 años de locura.
Lógicamente al cabo de los años uno se acostumbra a la buena vida y te olvidas de ser eficiente alegremente. La parte buena es que has vivido en el infierno, sabes como llegar y que puedes quedarte allí a vivir cómodamente. Así que si tienes la oportunidad, búscate tus “16 milisegundos” particular.
* iba a poner otra cosa, pero me ha parecido poco apropiado
Me has recordado al 'Software Disenchantment': https://tonsky.me/blog/disenchantment
Totalmente de acuerdo. Yo también empecé en esto hace la tira de años y te recuerdo de los canales de #c de IRC jaja