AUTOHAMMER






Jo treballo per projectes (com al montessori).

El que vull dir amb aixo, es que les llargues temporades en que ningu sap exactament que estic fent i perque es divideixen en paquets discrets de temps amb objectius en particular. No tinc "hobbies", com molta gent perceb, i soc bastant alergic normalment a aquesta noció; que sembla portar a pensar que el que faig es una especie de combinació de activitats ocioses encaminades únicament a passar l'estona o amb l'unic o principal fi de passar el temps. Tampoc son passions, necessariament. El que son (un cop mes) es projectes.

Els objectius dels meus projectes acostumen a estar bastant definits d'entrada (fer un video sobre aixo, fer unes fotos sobre allò) pero la seva grandaria i "scope" tendeixen a anar mutant amb el temps. De vegades molt violenta. Aixo em permet, entre altres coses, navegar les gran quantitats de temps en el que estic fent alguna cosa, i posar metes en algun lloc del procés per convencrem (a qui sigui en el meu cervell que secreta dosis homeopatiques de serotonina) de que estic aconseguint alguna cosa. Ho he fet així desde que tinc memoria. En cert sentit, l'objectiu (essencial en la seva presencia) no es de fet gaire important; aquesta manera de treballar no es tant una metodologia com un petit esquema mental que faig servir per posar una mica d'ordre als meu temps i la meva vida. Fins i tot aquests escrits es poden entendre com projectes en si mateixos, el mateix amb els videos, o amb els albums de fotos. Es el que ho manté mes o menys fresc, després de tot, cada un d'ells (si be no un "objectiu" en l'estricte sentit de la paraula) conté el seu propi univers i context bastant independent dels altres. Menys clar es "on" neixen exactament els projectes en els que decideixo embarcarme, i perque son aquests i no altres. De vegades venen d'una activitat o cosa sobre la que sento interés, de vegades son maneres de empaquetar coses que ja faig, de vegades formen part d'altres plans mes grans i abstractes que son impossibles d'aconseguir, i de vegades desafien tota possible explicació. El que ens ocupa avui es una combinació de totes aquestes. 

AUTOHAMMER es el nom (provisional) d'un joc d'ordinador en el que vaig estar treballant durant aproximadament un mes, i aquest escrit es el postmortem d'aquest projecte; amb l'esperança de tancar aixi un capítol que sembla resistir-se en sortir del tot de la meva ment. Tot i que si he de ser sincer, com a génere litarari s'aproxima molt mes a una tragicomedia que no pas a un document técnic sobre desenvolupament indie de software.

Primer, una mica de context.

Fa uns mesos vaig escriure un article sobre tot aixo de vibe coding, en el que vaig fer servir una IA per programar una especie de generador de efectes de glitch a imatges per una festa techno a la que vaig anar a fer fotos. El resultat va ser... millor de l'esperat. Ho vaig fer copiant i enganxant codi desde el navegador a un bloc de notes de windows; i no nomes vaig aconseguir que funcionés sino que el resultat va superar les meves expectatives. El que em va portar a la obvia pregunta de: com de lluny puc portar aixo?

En el moment, ho vaig deixar de banda, sense res clar en el que aplicar-ho. Pero poc després vaig recordar un altre projecte que molts anys endarrera havia començat i deixat per una altre vida. Després d'escriure el meu llibre, vaig decidir que en lloc d'escriure mes histories el que volia era crear mons, i que si be una historia es una forma d'explicar despres aquest mon (i aixo no deixa de ser escriure) també n'hi havien d'altres. Vaig inventar el lore i faccions i personatges i mapes i races i mecaniques d'un mon inventat que havia de servir com a transfons del que imaginava com un joc similar a warhammer fantasy, i armat amb quantitats ingents de ingenuitat vaig decidir arrastrar-lo a la realitat.

Només un problema.

No se programar.

Aixi que em vaig baixar Unity, un parell de coses que no tinc ni idea de que son, i em vaig posar a aprendre'n. Un parell de mesos despres vaig emergir victoriós, havent completat un programa d'ordinador de unes mil linees de codi que aconseguia que dos personatges tiressin daus i es piquessin entre si com al joc de taula. Per desgracia, aquell codi original (en C#) s'ha perdut en el temps, sino probablement podriem riure tots una estona. Crec recordar que era tot una barreja de loops, col·leccions d'arrays i poca cosa mes. Que funcionés era poc mes que un miracle. La magia de "fer que un grapat de cables" facin les coses que tu vols es brutal, pero igualment brutal es la corba d'aprenentatge relacionada amb aquests actes d'arcanisme. Va ser fascinant, pero tambe extremadament esgotador. Un amic programador li va fer una ullada i va pronunciar les seguents paraules "funciona, pero no es escalable". Imagino que amb el que ell no comptava era amb el fet de que jo no tenia ni idea de que significava aixo.

He de recalcar, tantes vegades com sigui possible, l'extensió de la meva ignorancia sobre el tema.

Només el vocabulari relacionat amb fer coses simples es equiparable a aprendre xinés, i si be la meva ment és bastant apte per manejar termes lógics, abstraccions i resoldre sudokus i funcions, la traducció necessaria en llenguatge d'ordinador i la meva total ignorancia a principis i estructures basiques feia la feina aprop de impossible. Eventualment, vaig decidir fer el meu projecte de "explicar un món a través d'altres mitjans" en forma d'una edició de cartes de màgic, i vaig deixar el projecte de fer un joc d'ordinador per una altre década o una altre vida. 

Imagino que ja veieu on ens porta tot això. No va acabar de passar una decada, pero sens dubte dona la sensació que desde llavors ha passat una vida (o dos).

No vull que us penseu pero, que em vaig tirar en aquesta faraonica aventura sense tenir ni idea del que estava fent. Aquesta no es una historia mes sobre un projecte que comença petit i se m'envà de les mans, en el que em trobo de sobte degut a la meva inicial ignorancia en una feina sense final mes semblant a les grans tareas de hercules que no pas al que algú faria un dissabte per la tarda. Es a dir, si que va ser una mica aixi, pero aquesta no es la historia. Sabia on m'estava ficant. Com a proba, per saber si realment es podia fer alguna cosa o l'ho de les fotos havia sigut sort, vaig apartar una setmana per treballar en un prototip basic del joc que contingues els seus elements principals. El vaig fer en una tarda. Em vaig quedar de pedra. Un cop mes, igual que amb el meu joc de dos combatents que tiren daus, vaig sentir la magia de "no em puc creure que això estigui funcionant". Estava clar. Havia de pensar en mes gran. Molt mes gran. Ara aixo anava en serio.




La primera cosa a tenir en compte era que les LLM (que faria servir per escriure el codi en si) tenen les seves limitacions. La mes important es que el seu "context" es finit; aixo es, la quantitat de text que son capaces de absorbir per donar una resposta. Aixó es entre altres coses el que els impedeix contruir coses realment grans. El meu pla era construir aquest "joc" d'una manera que cada area de desenvolupament pogues operar sense saber tot el que esta passant a tot el projecte. La meva solució va ser adoptar una arquitectura de "black box" (on cada sistema del joc funciona per separat) unides per una base de dades en comú que tots els diferents sistemes llegeixen i actualitzen.

La segona limitació important es la integracio i dependencies amb altres coses. Si volgues fer un programa que llegeix d'altres programes externs (o un game engine) i n'ha de interpretar els resultats, les LLM tenen tendencia a alucinar els continguts de llibreries externes i no saber que coi esta passant en pantalla. Es per això que vaig decidir que el meu joc seria practicament "back-end" sense grafics, amb python, intentant evitar el millor possible recursos i llibreries externes. Més un simulació d'una població i de batalles que no pas un joc interactiu de construcció i maneig d'exercits a temps real.

La tercera limitació es la tendencia d'aquestes inteligencies artificials a fer una mica el que els hi dona la gana, inventar-se coses, escriure tests que passen sols amb molts de emojis, declarar victoria i donarte la rao quan els pilles infraganti nomes per fer el mateix una vegada i una altre. La meva solució a aquest problema era portarla amb ma de ferro, donar cancha quan la necessita, i generar comprensius documents de disseny que anar-li passant quan els necessiti.



Un GDD es un document de disseny per un videojoc. Normalment es un document de centenars de pagines que detalla totes les decisions de disseny d'un joc i serveix com a punt de referencia per totes les parts implicades. Pero com que estem limitats per el context, el que jo faria es un conjunt de documents mes petits detallant els diferents sistemes involucrats en el nostre "joc/simulació", que combinarien els elements de disseny d'alt nivell d'abstracció amb especificacions técniques, arquitectoniques, prompt engineering, intruccions i un "full de ruta" clarament definit i delimitat amb seccions, subseccions i subsubseccions. Aquest document llavors portaria a altres documents de disseny, més espeficics, que farien el mateix amb els subsistemes que contenen. D'aquesta manera també, qualsevol part del disseny pot ser expandida per contenir les seves propies parts. 

El codi funcionaria de forma similar. Un "loop" sencer del joc constitueix de cinc anys, al finals dels quals hi ha una batalla. Cada any, hi ha una simulació completa de la població. Cada simulació passa per un sistema (o fase) de governança, progressió, vida social, activitat economica, desenvolupament. Cada fase de governança consistueix de... i aixi anar fent. Cada una d'elles dividida en el seu propi arxiu, actualitant la base de dades mare quan ha estat completada, i estiguent disponible per ser "modularitzada" mes si convé. Després corres un arxiu que fa anar totes les fases de forma sequencial i aquí tens el teu joc, sense que el sistema de hobbies (tenim sistema de hobbies) i per tant la inteligencia artificial que s'encarrega d'escriure el codi hagi de saber res sobre com un habitant de la població compra mobles de importació o no. Formalment no se exactament com definir el sistema, es una barreja de programació basada a en objectes (perque els habitants son dataclasses) pero bastant base-de-dades centric. Així doncs, a l'hora d'escriure una part del codi o desenvolupar una fase o funció, tot el context que la màquina necessita es:


-Els documents de disseny rellevants.

-L'esquema de la base de dades.

-L'estructura de carpetes i arxius.

-Les instruccions immediates del que sigui que s'ha de fer ara.


No vaig inventar res, amb tot això. Molts d'aquests problemes (si be el seu origen exacte son diferents) son molt semblants als desafiaments i problemes que es presenten intentant escriure codi o fent qualsevol cosa amb grups de persones; i les solucions son inquietantment igualment semblants.

Molt aviat es va fer obvi que la meva feina seria no tant directament relacionada amb codi, sino mes aviat una gran tasca d'organització entre idees, màquines, "persones" i documents. Una per la que necessitaria aprendre una quantitat de conceptes i tecniques que abarquen desde conceptes tecnics sobre coses d'aixo dels ordinadors que no tenia ni idea que volien dir, com tecniques avançades de respiració per no perdre l'oremus havent de lidiar amb cervells positronics. La meva feina seria preservar la visió orginal i intentar evitar entrar massa de ple en el que ve a ser "fer el joc" en si mateix.

No vull donar, de totes maneres, la falsa impressió de que soc una "persona d'idees". Aixo es, una persona que aporta idees, creu que valen el seu pes en or, i assumeix que portarles a compleció es només un petit tràmit. Les bones idees valen molt, pero son nomes idees. He fet prou coses a la meva vida per saber que, en realitat, la idea o visió fundacional per un projecte es una petita part d'aquest; i que la gran majoria "d'idees" que acaben definint allo que una cosa que estas construint acaba siguent passen durant la propia creació de la cosa. Son la miriada de petites i grans decisions i compromisos que separen algo que només existeix en forma perfecte en la imaginació d'una persona en algo que existeix en el món real. Es una gran, poc celebrada tasca de "fer la cosa en sí", algo del que fa molt de temps em queixo la gent sembla ser cada cop mes incapaç de fer, perque comporta abandonar la seguretat de la perfecció de la idea originaria per embarcar-se en la cració d'algo tangible de la que els teus amics es puguin riure lliurement. Era perfectament conscient de tot això, pero alhora les eines disponibles permetien (i fins i tot semblaven demanar) una mica d'aquesta actitud. Sense saber com de molt exactament hauria d'estar implicat en petites decisions com la definició de l'atribut d'una dataclasse, o com de conscient hauria de ser el funcionament exacte del codi.






Aixi doncs, em vaig posar a treballar (en el meu cas, es casi sempre una frase feta) en els documents de disseny. També vaig decidir fer un upgrade important a tot el tema de "copiar i enganxar del navegador a un bloc de notes de windows" i em vaig descarregar el VSCode i suspendre la meva habitual frugalitat i subscriure'm a copilot per poder fer servir claude sonnet com a agentic coder. No faig res que no pogues fer sense aquestes coses, i de fet puc accedir a models millors de gratis, pero vaig pagar per la comoditat. Després de tot, un mes de subscripció, tinguent en compte que em passaria tot el mes fent-ho servir vora de deu hores al dia, sortía a céntims la hora el que va resultar ser una massiva millora en conveniencia. Qualsevol diria que per això la gent no programa en un editor de text normal (i menys encara en una llibreta). Continuaria fent servir les ias habituals per discutir idees, formalitzar els documents de disseny i demanar segones opinions en errors i optimització; pero la gran majoria del codi va ser creat d'aquesta manera. 

Em vaig decidir per fer servir python, perque és practicament com l'anglés, sembla fàcil, i altres raons igualment superficials. El prototip va ser apartat (en lloc de refactoritzarlo). Vaig posar musiqueta, fer un café i vaig començar de zero.

Tres setmanes més tard.

Em trobava davant de milers i milers de linees de codi. La meva població feia, any rere any, coses com tenir vida social, trobar parella casarse i tenir fills, cluster analisis de faccions polítiques, comprar materials, importar i exportar bens, fer-se gran, alistar-se a l'exercit, jubilar-se, negociar salaris basant-se en la seva personalitat, acumular riqueses, gastar-ho tot, tenir deutes, recordar el passat, escollir alcaldes i ministres, queixar-se de la corrupció, contruir i mantenir edificis i un llarg etcetera. La simulació, a grans trets, estava funcionant.

La meva idea de "joc" era inspirada, en part (com ja he mencionat) en una especie de warhammer automatic, un sistema de combat completament automatitzat que tu influeixes manejant aspectes de la població en el seu cicle anual que contribueixen a crear millors o pitjor exercits que llavors s'han de periodicament enfrontar a enemics. En aquest sentit, era mes un city builder o simulador que cap altre cosa. Si no en un "turret defense game" especialment elaborat. Llavors, la idea era que aquesta massa de persones i soldats, visquessin en un sistema suficientment detallat i granular com per a que petites coses puguin ser contabilitades, i permeti que "outliers" sorgeixin en diferents aspectes de la vida sense haver-ho de forçar, com a simples anomalies estadístiques. Un ferrer especialment bo que forja una espasa de qualitats estratosferiques, un mediocre acrquer que resulta que va tenir el dia fa doscents anys i com que va encertar cinc fletxes seguides es va convertir en una llegenda. En aquest sentit el joc era mes semblat al dwarf fortress. El jugador podria escollir com de molt intervenia en la simulació, o be fent micromanagment de tot el que passa a la ciutat, escollint a ma tots els oficials i que fa cada persona, o be deixant que la naturalesa segueixi el seu curs i simplement observant el resultat. Entremitg de les dues opcions, tot el posssible, deixant que el jugador esculli el seu nivell de involucrament. En aquest sentit, el joc era casi un football manager.

Mai vaig arribar a aquest punt. Un cop passades les tres setmanes, estava satisfet, m'ho havia passat be, havia aprés moltes paraules divertides, pero era el moment de fer algo molt alié a la meva naturalesa quan treballant amb aquests projectes que m'acaben consumint durant mesos i anys: era el moment de deixar-ho estar.

Perque?

El motius son diversos.

Realment fent el joc, van anar sortint a la superficie una variada collecció de problemes. Alguns d'ells eren problemes que ja vaig anticipar preparant-me per fer aixo pero van resultar mes persistents o problematics de l'esperat, altres els podria haver previst si hagues tingut mes experiencia desenvolupant codi o hagues sabut en general mes el que estava fent, altres res em pogués haver preparat per el que havia de venir. Aquí una llista no exhaustiva, tot i que en relitat molts d'ells estan relacionats, ja parlarem d'aixo d'aquí una estona.


- Context

- Sycophancy

- Overcorrection

- Lazyness

- Underimplementation

- Overimplementation

- Testing

- Emergence


El problema del context ja l'he mencionat, les LLM tenen un context limitat (depen del model) i no tenen memoria fora d'això. El que intenta fer el model agentic (que encara estàn mes limitats en aixo) es que quan has arribat al limit, resumeixen la "conversació" que heu tingut fins ara i continuen treballant pensant que saben del que estan parlant. El problema es que, en programació, o be saps quin nom te una variable o com cridar una funció, no el saps. El que no es un problema molt greu, simplement ho busques (com aquests models saben fer) i ja està. El problema es quan creus que saps com es diuen i com funcionen les coses perque te n'han presentat un resum abstracte al respecte, i passes de realment llegir ni combrobar res perque creus que ja saps del que estas parlant. Poc a poc les coses es van perdent en el context, i petites comprobacions son oblidades o obligades a ser repetides una vegada i un altre. Intentant incorporar problemes recurrents va fent els documents que tens preparat per la IA cada cop mes i més grans -i potser encara mes important- mes derivatus: en lloc d'un organitzat document acabes tinguent enormes llistes d'intruccions que poc o res tenen a veure les unes amb les altres.

Aquesta paraula, que he vist mes vegades mencionada en el context de inteligencies artificials en els ultims mesos mes que durant la resta de la meva vida, resumeix el fer de que aquestes "et diuen el que creuen que vols escoltar". El que es especialment problematic quan son incriblement cortoplacistes en aquesta feina. Perque el que realment vull escoltar/llegir quan programant es veure'ls pensar, treballar i llegir, no "you're absolutely right!" una vegada i un altre. Es molt dificil llavors realment discutir i buscar bones idees treballant amb elles, ja que si fins i tot els hi dius que no simplement et donguin la rao, llavors el que buscaran es contradirte en alguna cosa tot i que el que hagis exposat sigui totalment vàlid. Sembla ser un cortcircuit en el que, en lloc de realment intentar entendre el que esta passant, fan un default a excursar-se i dir que tens raò per, acte seguit, continuant fent la mateixa cosa malament una vegada i un altre. 

Relacionat amb aquesta última, es la tendencia que tenen en sobrecorretgir coses. Quan un problema inevitablement surgeix, o quan dones qualsevol instrucció com "hauriem de fer això més d'aquella manera" tenen tantes ganes de fer el que els hi dius de forma immediata que obliden tot el context i instruccions previes (com per exemple, clares guidelines en la infrastructura i disseny) el que porta a que el codi vagi fent "bandazos" d'un costat a un altre sense acabar-se d'estabilitzar mai en el punt que realment vols.

Els agents son uns vagos. El que es raro en realitat, perque no paren de fer coses i escriure centenars de linees de codi i sempre volen fer mes i mes i adelantar feina de la fulla de ruta que els has donat. Amb el que vull dir amb que son uns vagos, es que precisament aquesta voluntat d'anar endavant fa que deixin de fer coses necessaries, com per exemple, llegir el que sigui que sigui necessari per fer-ho. Llegir es un gran problema. La quantitat de vegades que els he hagut d'ordenar que llegeissin (tant codi com ducuments de disseny) i prohibir categoricament cap linea de codi mes sense haber-ho fet es espectacular. Sempre son coleccions de petites coses, que es deixen de fer (en part perque jo també vull tirar endavant) les que enderreixen els projectes fins a casi aturarlos completament. No actualizar allò que es necessari, no remoure codi antic, no actualitzar comentaris, no buscar les coses propiament... En allò que son bons, es precisament en fer el contrari; a ser donats una tasca de mida apropiada amb directrius clares i deixar que obrin la seva màgia.

La paraula "apropiada" de "de la mida apropiada" es aquí la clau. El model intenta complir els seus objectius, i te una certa flexibilitat en com de profundament intentara fer-ho, i a quina llargada apuntarà: pero aquesta no es infinita. Estàn pensats per solucionar coses en entre un, dos i tres contestacions. Despres de cada una, et dirà per continuar. Pero no importa gaire si la tasca que li has donat es algo aixi com "contruieix la torre eiffel" i li diu que te dos anys per completar-ho: ho intentarà fer en un numero limitat de respostes. Per aconseguir que la seva "solució" entri en aquest context, recurrirà a tot tipus de gimnastiques mentals. De vegades es limitarà a fer un pla per fer la cosa, en lloc de fer la cosa. De vegades començara a fer la cosa de manera adequada d'una manera que tardaria efectivament dos anys i de sobte anunciarà que ja està acabat (no està acabat). De vegades començarà a fer algo, despres intentara canviar el que ha de fer, buscarà alguna solució mes general que no funcionarà. De vegades us perdreu en boscos de fer coses i altres coses dins de altres coses i solucionar problemes dins d'aquests, en lloc d'abordar el problema de forma sistemàtica, perque prefereix viure en un llibre de "escull la teva propia aventura" i seguir resolguent puzzles que no importen molt abans que reconeixer que no pot fer allò que li demanes. Altres vegades simplement mentirà com un desgraciat. Dividir allo a fer en paquets de prompts que tardin aproximadament dos o tres preguntes a ser completat ja es algo que vaig planejar, amb tot el rollo del "roadmap". Pero les coses es compliquen sobre la marxa, i es practicament impossible saber quan de temps realment sera necessari per completar una tasca abans d'emprendre la tasca en si (una versió alternativa del problema de la parada en maquines de turing, suposo) i molt menys abans de que el mumbo jumbo tecnic i debit de programació comenci a emplenar el que en el teu plantejament era una arquitectura neta de "anar emplenant els forats amb features". 

Pasa't en aquesta limitació, i et trobaràs que l'agent comença a sobreimplementar. El que es molt mes perillós i potencialment catastrofic que el seu contrari, encara que no ho sembli. S'intentarà adelantar a coses, o sobrecomplicar facetes del codi que havien de ser robustes i simples, i acabaràs amb un codi impossible de mantenir ple de coses que no figuren enlloc que hi haurien de ser pero hi son. En el pitjor dels casos, començarà a duplicar codi, implementant diversos sistemes per coses com "pagar als treballadors" que després seràn duplicats quan realment sigui el moment de implementar-ho, i t'hauras de barallar amb una maranya impossible de dependencies internes i funcions i arxius que es diuen practicament igual pero funcionen lleugerament diferent i que serà un malson de desentortolligar.

Que per aixo fem tests, i comprobacions, i debugging, i complicades cridades de terminal. El que estaria be, si no fos perque les LLM semblen estar enganxades a això. Es un amor intens, violent i cruel. Del que en pots veure fins i tot de vegades sindromes d'abstinencia. L'agent farà els seus propis tests, una vegada i un altre. Multiples variants d'ells. Tests de tests. I després farà tot el possible perque el software els passi, fent totes les trampes possibles, tant al programa com al tests en si. Fentlo completament inservible, i si tot falla i el test continua sense correr correctament, anunciarà que ho fa amb gran celebració i pompositat. No es infrequent trobar desenes i desenes de tests creats a la main folder cada parell d'hora, cada un mes inutil que l'anterior, que haver de borrar manualment. Imagino que aquesta tendencia malaltissa es una forma que te de compensar el fet de que no te "ground truth". No pot veure realment el que està passant, i fins i tot quan pot, la seva tendencia a voler tancar les coses i progressar pero alhora quedar be i profesional el porten a, per donar algo per acabat, fer un test estupid com si fos un llaçet. I quan les coses no funcionen, sembla algo responsable a fer, en tot cas molt preferible a admetre que ha comés un error. La meva solució a aquesta estúpida solució, es tenir, en lloc de tests, una demo. Un script que fa correr els verdaders sistemes del joc tal i com eren planejats per ser implementats i imprimeix coses a la terminal. Un script que la IA no te permés tocar i soc jo i només jo qui executo, passant els resultats si ho crec apropiat. El que te cert éxit.

"Emergence" es una d'aquelles altres paraules que s'han posat de moda els ultims anys. El problema que tenen les inteligencies artificials amb "l'emergencia" (no en els sentit catala de la paraula, que denota una situació de risc) es que l'entenen pero no l'entenen. Simple, veritat? El que resulta ser, curiosament, exactament el mateix problema que hi tenim els humans. Veiem una gota d'aigua i com incapaços d'imaginar un riu a no ser que ens el posin davant dels nostres nassos. Per a aquest problema posare un exemple molt particular que crec que ilustra molt be la situació:

-En el sistema de cases, volem fer un sistema d'incendis. Cada casa tindrà una probabilitat petita de prendre foc. Cada casa, llavors tindrà una petita probabilitat d'extendre el foc a una casa veina. D'aquesta manera, haurem creat un sistema en el que hi ha la possibilitat de incendis que començen com no gran cosa, que de tant en tant, per pura estadistica, esdevindran grans catastrofes.

I donades aquestes intruccions, probablement l'agent procedirà a implementar una probabilitat base de incendi... i un complicat sistema de probabilitat d'incendis en cadena catastrofics. Despres del que li haura de dir que aturi inmediatament el que està fent i haure de començar a parlar sobre que el sistema que l'hi acabo d'explicar naturalment ja origina aquesta possibilitat, que l'elegancia del disseny es que els "grans incendis" son emergents del simple sistema de contagi, i no necessiten un sistema en si mateix que... i així tot el dia. Els humans no som gaires millors en això, per cert. Pero tot i aixì es sorprenent la falta de "visió" que es pot arribar a tenir. I com de necessaries son tot tipus de habilitats que donem per sentades en areas de enteniment pero tambe imaginació i creativitat en allò que sempre es imaginat com arees tecniques de coneixement com programar un estupid joc d'ordinador. 






Tots aquests problemes i molts mes, semblen tenir una tensió en el seu centre.

Molts d'ells a simple vista podrien ser solucionats amb mes direcció, mes micromanagment, actuar com una policia que mira amb lupa tot moviment de l'inteligencia artificial. El que porta al problema original: jo no se programar. Jo no vull programar. Per poder manejar aquest sistema en permanent mutació, em vaig trobar que això demanava mes i mes de mi, estar cada cop mes involucrat, entendre mes, debugejar mes, optimitzar mes, buscar mes, dirigir mes, el que tornava el procés cada cop mes lent, cada cop mes fexuig, cada cop haver de prendre exponencialment mes decisions que en la meva humil opinió no hauria d'estar prenent jo. Si la solució als problemes palesos de traballar amb inteligencies artificials es convertir-me a mi mateix en una màquina que tot i aixi ha d'entendre tot el que està passant i intentar esbrinar amb coneixements limitats que fa un codi que no he escrit jo, quin sentit te delegar aquesta feina a una maquina en primer lloc?

El que es una pregunta mitg retorica, super soposat, la resposta obvia siguent: doncs que tot i aixi vas molt mes rapid i estas fent una feina que normalment equips sencers de treballadors qualificats amb experiencia tarden setmanes a realitzar en un parell de tardes, pallús. Pero l'altre meitat de la pregunta no es retórica, i sobre la velocitat, el problema més gran va ser que tots aquests problemes particulars van convertir el que al principi era un progrés a velocitat de concord desde una comode cabina en arrastrar-se per el fang amb una maleta de turista i flip-flops. No vaig arribar al punt al que encara no podia avançar, pero si en un punt on era clara la naturalesa exponencial del que acabaria en un inevitable impass. Estava satisfet, i també estava cansat. Molt cansat. La velocitat de treball en el que aquestes eines havien convertit un simple projecte demanava d'una quantitat i velocitat d'accions i decisions en pantalla i en ment (DPM) insostenible. Començava a pensar en sistemes i en workflows només de decidir on posar una tassa de té, L'estat de focus necessari per fer-ho funcionar tot a la velocitat que la propia feina et demanava era massa. Treballar a mitg gas et fa ser deu cops menys productiu. Aixì que després de dos dies de barallarme amb el sistema de negociació de salaris, i veient com la filosofia de separació de concerns es molt maca pero en realitat tot depen de tot de maneres invisibles (per molt agnostic que sigui el teu codi, va anar a la concertada) vaig dir: prou. 

I aixi va ser el final d'Autohammer, durant el que espero sigui una llarga temporada.

Aquest postmortem presenta la seguent obvia pregunta: que podria haver fet diferent?

Podria haver fet diferent moltes coses, la mes obvia probablement es que em vaig passar tres pobles amb l'scope del joc que volia crear. En la meva imaginació, no importava la granularitat exacta en que cap dels sistemes funcionés, perque aprofundir en un en teoria no havia d'afectar els altres. Si el sistema de governança es increiblement complex, aixo en principi no afecta per res la funcionalitat de tots els altres sistemes un cop reben el que necessiten (qui governa que, quin es el preosupost) d'aquest. A la pràctica pero, la bola de complexitat i invisibles remificacions qual tentacles sempre ho acaben complicant tot, i deixant molt malament els sistemes que no arriben al mateix punt de complexitat. El codi, a la seva manera, demana de harmonia. I per assolir-la, com a qualsevol monstruositat lovecraftiana, s'han de fer sacrificis que no estava disposat a fer. Més encara, quan anant fent, un es va engrescant a afegir més i més coses. L'altre cosa a millorar, obviament, es a mi mateix. No estava ni de lluny preparat per una tasca d'aquesta magnitud en un mitjà que m'era (i encara es) absolutament alien als meus coneixements i capacitats. També va això per el model d'inteligencia artificial. Claude va ser una gran part d'aquest projecte, i per el que he vist probant altres models, mai haguessim arribat ni a la meitat fent servir qualsevol altre. A la pregunta de si les inteligencies artificials en general estan llestes per projectes d'aquesta escala, la resposta es un ferm "no". La intuició em porta a pensar que fins i tot anticipant tots els problemes que m'he anat trobant, si hagués de començar de zero amb perfecte planificació, el resultat seria molt similar. Millor prompting, millor arquitectura, millor pla farien la feina més fàcil, sense cap mena de dubte, pero no seria suficient. Encara. Pero no estem molt i molt lluny. Després de tot, fer un joc no es cap tonteria, i com vaig llegir a un llibre sobre desenvolupament de videojocs a casa un amic "que qualsevol joc s'acabi realitzant, donades les circumpstancies i dificultats que presenta tot i cada un dels seus processos de desenvolupament, es poc mes que un miracle."

Vaig agafar la setmana que em quedava de subscripció a copilot i vaig aprofitar (ja que ho tenia per ma) per fer el prototip d'un autobattler (semblant al TFT) amb musica i coses i waifus. A estones lliures, en una setmana, vaig tenir el que va ser el resultat d'una breu conversació de matinada llest per ser jugat. Era mes per riure que cap altre cosa, pero em va seguir maravellant el fet de que ara les idees fossin realitzables -si be en un estat cru- en lloc de quedar-se simplement en idees, quan tenen a veure amb tot aixo de fer programes d'ordinador.





He tardat unes bones setmanes en recuperar-me de l'esforç. M'he hagut de racionalitzar a mi mateix passarmeles jugant a jocs d'estrategia assegurant que "estava fent recerca i mirant com funcionen" amb els meus dos nous ulls de expert super master hacker desenvolupador independent. Algun dia hi tornaré, a intentar fer alguna altre cosa d'aquestes, pero mentrestant, crec que prefereixo jugar.

Fins llavors, estaré per aquí. Fent ves a saber que.

No hay comentarios:

Publicar un comentario