La IA t'ajuda a digerir informació i et pot inspirar autosuficiència i motivació.
- Introducció
- Programadors novells
- Aprendre a pensar en un món amb IA
- Utilitza la IA per aprendre a programar
- Referències
Introducció
PENDENT S’ha de revisar tot el document i integrar de manera pràctica amb CoPilot
La majoria d’experts esperen que la IA ampliï els futurs llocs de treball en programació, no pas que els substitueixi. Tot i que el codi generat per IA és cada vegada més prevalent, encara cal que persones qualificades el revisin, el depurin i n’assumeixin la responsabilitat de la qualitat.
El consens general és que els desenvolupadors cada vegada més validaran, depuraran i comunicaran sobre codi generat per IA. Això requerirà una base de coneixements profunda, perquè és difícil depurar de manera eficient codi que no hauries pogut escriure tu mateix.
En aquest moment, els models d’IA tenen dificultats amb problemes d’abast ampli, com identificar com els canvis en una part d’un codi gran poden afectar altres parts interconnectades. També rendeixen malament amb frameworks i eines de nínxol, manquen de creativitat constant i d’expertesa profunda en dominis específics, i realment només funcionen si qui escriu el prompt dona instruccions clares i detallades, cosa que és una [habilitat en si mateixa](Prompting to debug and fix AI-generated code).
Amb el temps, és cert que moltes d’aquestes mancances milloraran, però és difícil dir quines i fins a quin punt. Si hi ha una cosa que sabem, és que l’automatització no és nova en la programació, i la IA n’és només una altra forma. La feina de “programador” ha evolucionat des de fer matemàtiques complicades a mà a perforar codi màquina en targetes, escriure llenguatges d’assemblador i després llenguatges d’alt nivell — sense oblidar l’adaptació a nous IDEs i eines generals com Git. Si aprenem de la història, veiem que les eines sempre canvien, però les oportunitats per a persones amb coneixement tècnic i capacitat d’argumentació d’alt nivell continuen florint.
Mirant cap al futur, podem esperar la mateixa dinàmica: els robots s’utilitzen millor per a la feina repetitiva i previsible, i la resta la faran les persones. Dit clarament, han passat els temps de l’abundància de feines de programació amb responsabilitats relativament simples, repetitives i mundanes.
Si bé és cert que els rols i deures poden canviar més ràpidament per a programadors amb poca experiència que per a la resta, això és perquè més (però no totes) de les seves responsabilitats impliquen lluitar amb codi boilerplate que la IA pot generar de manera fiable. Això no vol dir que els júniors seran substituïts per la IA — només vol dir que potser passaran una mica menys de temps escrivint codi i més temps pensant-lo.
Programadors novells
Els programadors novells sovint tenen dificultats en la resolució de problemes de programació per manca de consciència i estratègies metacognitives.
Els novells poden trobar múltiples dificultats metacognitives mentre programen, com ara formar models conceptuals incorrectes del problema o tenir una falsa sensació de progrés després de provar la seva solució. Normalment, no són conscients de com aquestes dificultats frenen el seu progrés.
Un estudiant s’inscriu a un curs introductori de ciències de la computació. No té experiència prèvia en programació i no es considera gaire bo en matemàtiques o matèries tècniques. En aquest curs, el professor permet l’ús de models de llenguatge grans com ChatGPT i programari de completat de codi amb IA per ajudar amb la feina.
En completar una tasca, l’estudiant llegeix atentament l’enunciat i comença a programar. Gairebé immediatament, una eina de suggeriments de codi amb IA genera una funció llarga que l’aclapara, i això el porta a recórrer a ChatGPT. Creient que és millor usar la IA com a tutor que no pas com una màquina de respostes, demana guiatge pas a pas. No obstant això, després de llegir el primer consell, passa per alt l’explicació buscant una solució més ràpida i copia el codi generat. Aquest codi, però, no s’ajusta completament al problema i conté sintaxi desconeguda, cosa que genera confusió. Després d’anar passant el codi amunt i avall entre l’IDE i ChatGPT, finalment produeix una versió que passa els tests, però sense entendre del tot com funciona.
Quan més tard li pregunten com d’útil li ha semblat la IA, respon “molt” i n’aprecia la utilitat com a tutor personal en una assignatura que li costa. Li manca consciència de com realment usa la IA i té una percepció esbiaixada del seu enteniment del material.
Ara imagina una altra estudiant del mateix curs. Va assistir un cop a un campament d’estiu orientat a STEM i coneix la frustració d’aprendre a programar. No ho troba fàcil, però té l’experiència per saber que és capaç de produir resultats que funcionen.
En completar la mateixa tasca, l’estudiant llegeix atentament la descripció del problema i comença a estructurar la seva solució posant noms a variables i afegint comentaris per esbossar l’enfocament. Mentre tecleja, l’eina de suggeriments de codi amb IA ofereix aportacions freqüents, que de tant en tant mira però majoritàriament ignora, preferint seguir el seu propi pla. Quan accepta suggeriments, són petits i deliberats — omplint elements predictibles com tancar claudàtors o condicionals simples. Tot i que comet algunes errades de sintaxi, les corregeix metòdicament i completa l’activitat amb èxit, passant tots els tests en poc temps. Mirant enrere, reconeix que la IA la va ajudar a anar més ràpid, però atribueix el resultat a la seva pròpia manera de pensar estructurada.
L’exemple anterior no és hipotètic. Aquest escenari s’il·lustra en un estudi del 2024 sobre el paper de la IA en l’eixamplament de la bretxa entre estudiants que tenen dificultats i els que no.
Encara que pugui semblar contraintuïtiu, el fet que la IA estigui disponible en qualsevol moment per escriure codi per nosaltres pot implicar un èmfasi més gran en escriure’n més a mà, almenys al principi.
Aprendre a pensar en un món amb IA
Centra’t en la resolució de problemes, no en l’output
Les pauses en programació són útils, encara que se sentin com encallades. Els programadors novells sovint s’estranyen de quant de temps pot arribar a portar una sola funció o fins i tot una sola línia de codi que funcioni. Aquest procés lent i sovint frustrant és necessari per construir els processos cognitius que necessitaràs per esdevenir un millor programador.
Refinar la teva manera de pensar també millorarà la teva capacitat de llegir i entendre ràpidament codi que no has escrit tu. Tot i que això sempre ha estat important per col·laborar, ara que tenim assistents de codi amb IA, els desenvolupadors llegeixen molt més codi que abans. Si un model de llenguatge et completa una funció, has de ser capaç d’acceptar o rebutjar la proposta ràpidament sense encallar-te intentant comprendre’n la lògica.
Hackeja la teva pròpia psicologia
Si hi ha una idea que hauria de sortir del jardí tancat de la recerca i arribar de seguida a les aules, és el concepte de consciència metacognitiva. És cert que el terme potser no és gaire atractiu — però la idea és senzilla: es tracta de la capacitat de reconèixer “trampes de pensament” i resoldre problemes de manera efectiva per sortir-ne.
La recerca ha demostrat que ensenyar als principiants aquests reptes produeix canvis immediats i duradors en la productivitat, la independència i la confiança dels estudiants. Donat això, pot ser una bona idea dedicar temps a aprendre’ls!
Aquí tens algunes dificultats metacognitives o “trampes de pensament” comunes en programació:
-
Right question, wrong answer (Forming) — Entens el problema, però utilitzes l’enfocament equivocat per resoldre’l.
-
Stuck in a Rut (Dislodging) — Fins i tot quan t’adones que l’enfocament no funciona, et costa canviar-lo.
-
Wrong question, right answer (Assumption) — Resol perfectament un problema… però no el que tocava.
-
So close, but so far (Location) — Pases pels passos massa ràpid, pensant que ja quasi ho tens, i descobreixes que t’has saltat quelcom crucial.
-
Band-aid on a broken bone (Achievement) — Vas fent petites correccions esperant que el codi comenci a funcionar, però en realitat caldria refer-lo de dalt a baix.
Curiosament, els investigadors van trobar que, en lloc d’ajudar amb aquests reptes, la IA en va introduir de nous per als principiants. Concretament:
-
Falling Behind Without Noticing (Progression) — Creus que segueixes el ritme del curs, però com que l’assistència de la IA pot generar codi funcional que supera la teva comprensió actual, et quedes enrere sense adonar-te’n.
-
Distracting Pop-Ups (Interruption) — Cada cop que intentes concentrar-te, una eina de completat de codi amb IA et llença una proposta i et trenca el fil de pensament.
-
Following bad advice (Mislead) — Confies en un suggeriment (d’una IA, d’un tutorial o fins i tot d’una intuïció pròpia) que sembla correcte però en realitat et porta en la direcció equivocada.
En aquest moment, la majoria d’eines d’IA no estan pensades tenint en compte aquests reptes. I encara que ho estiguessin, tu ets l’únic expert de la teva pròpia ment, i hi ha un límit al que pot fer un recurs extern per veure les trampes en el teu pensament.
No t’afanyis cap a codi mal concebut
Tot i que queda bé a les pel·lícules, programar a tota velocitat no és productiu per aprendre. Bona part de superar les primeres tasques de programació implica dedicar temps a entendre el problema i després dissenyar bé l’estratègia de solució. Ambdues són fases mentals i s’han de fer abans de començar a escriure codi! Encara que satisfaci generar molt codi molt ràpid, a la pràctica com més de pressa l’escriguis més temps hauràs de dedicar a depurar-lo.
No cometis l’error clàssic de picar pedra amb una idea vaga fins que et quedes amb un bon munt d’errors de sintaxi i semàntica que fa cinc hores que intentes depurar i estàs massa implicat per refer-ho bé. Molt d’aquest temps seria millor invertir-lo en treballar les estructures de dades i l’arquitectura del programa abans d’escriure ni una línia. Un cop la lògica del programa estigui clara al cap, implementar-la esdevé més una qüestió de sintaxi.
Evita la il·lusió de competència
Molts programadors novells en l’estudi esmentat creien amb confiança que havien resolt un problema de programació utilitzant eines d’IA, però van passar per alt la lliçó central de l’activitat. Aquesta confiança injustificada, descrita com a il·lusió de competència, s’accentuava pel fet que l’ús excessiu de suggeriments d’IA contribuïa a una manca de consciència sobre què els frenava.
La recerca utilitza el terme autoeficàcia per descriure la confiança en la pròpia capacitat de completar tasques concretes. Un nivell saludable d’autoeficàcia afavoreix la persistència i el compromís, però si sobreestimes les teves habilitats, pots menystenir la reflexió crítica i no abordar llacunes de coneixement.
Encara que la il·lusió de competència pot aparèixer amb qualsevol eina, la IA la pot amplificar. En proporcionar suggeriments o solucions preparades, la IA pot donar-te la falsa impressió que has dominat un concepte, tot i que et costi aplicar-lo de manera independent.
Alguns suggeriments per evitar aquesta il·lusió en el teu aprenentatge:
-
Prioritza l’aprenentatge actiu per damunt de tot: Escriure codi, depurar i descompondre problemes activa el cervell més que llegir o copiar solucions. Aquest estat actiu és clau per activar els circuits neurals necessaris per aprendre.
-
Prova el rubber duck debugging: En lloc d’anar a un assistent d’IA quan t’encallis, prova la tècnica clàssica del “ànec de goma”, explicant en veu alta pas a pas què fa el codi defectuós. Tradueix una intuïció vaga en frases concretes i gairebé sempre ajuda a veure què s’ha de canviar.
-
Ensenya a un principiant allò que estàs aprenent: Fins i tot si només en saps la base, ensenyar a algú altre a programar és una de les tàctiques educatives més infravalorades. Els novells solen fer preguntes que revelen idees més grans que potser t’has perdut.
-
Revisions i crítica de codi: Allò que val la pena fer, val la pena fer-ho bé. Cerca revisions entre iguals, feedback de professorat, o fins i tot eines automàtiques que ofereixin crítiques detallades per destacar àrees d’incomprensió. Aquest pas extra paga la pena.
-
Reformula els errors com a “expertesa negativa”: Encara que el teu codi casolà estigui ple de bugs i enfocaments erronis, aprendre a ser bon programador és tant saber que no funciona com saber que sí.
-
Construeix confiança sense eines sofisticades: Repta’t a resoldre la pròxima tasca sense un LLM ni [Stack Overflow](https://stackoverflow.com/questions=. En privar-te de respostes fàcils, enforteixes els músculs de programació. Potser després tornaràs a les eines, però aquestes sessions ajudaran a construir confiança i consciència del teu enteniment.
Entén les emocions d’aprendre
Tots els programadors saben que la ment d’un programador sovint oscil·la entre dos extrems: l’eufòria d’implementar codi que funciona perfectament o la confusió i frustració aclaparadores. Tant si portes una setmana com una vida programant, l’experiència emocional és molt semblant. El truc és aprendre a treballar amb i a través d’aquestes experiències, no en contra.
Per sostenir de veritat la pràctica de programar, cal cultivar una confiança autèntica, desenvolupar una resposta productiva a la frustració, permetre’t jugar i ser creatiu, i sentir satisfacció i orgull de la teva feina. Entén que això és gairebé més important que la informació que estudies, perquè determina la teva actitud davant la programació. Desenvolupar i mantenir la creença que tu ets algú a qui li agrada programar et servirà molt més enllà de poder resoldre cada pas d’un algorisme d’ordenació a mà.
Utilitza la IA per aprendre a programar
Hauries d’utilitzar IA quan aprens a programar?
Com més principiant siguis, menys hauries d’utilitzar la IA per generar codi per a tu.
Principiant | Utilitza la IA per ajudar a digerir informació i inspirar autosuficiència i motivació |
Avançat | Utilitza la IA com a revisor de codi i tutor per aprofundir el coneixement |
Expert | Utilitza la IA com a assistent de codi, centra’t en l’arquitectura del codi i els requisits |
Hi ha molts motius:
- Saltar-se la base fa que sigui més difícil entendre conceptes més complexos.
- Acceptes més males propostes perquè les teves habilitats de lectura de codi no estan desenvolupades.
- Et fa anar més de pressa, cosa bona per a la productivitat però dolenta per a la retenció del coneixement.
- Et sents amb menys propietat sobre la feina, cosa que disminueix la motivació.
- L’experiència de programar es torna “més plana” — una solució donada és menys satisfactòria que una per la qual has treballat.
- Distorsiona la percepció de quant saps de les maneres següents:
- Perds autoconfiança i sents que no pots programar sense assistència de la IA.
- Desenvolupes una autoconfiança exageradament alta, on et sents un gran programador tot i que la IA fa la major part de la feina i amb prou feines entens com funciona un bucle for.
Això no vol dir que no puguis usar la IA per seguir la teva curiositat i augmentar la motivació per aprendre pel teu compte. Pots demanar que generi metàfores per a conceptes abstractes, fer preguntes si no tens un professor disponible, aclarir termes que et confonguin, i fins i tot demanar consells sobre un projecte personal que et quedi una mica gran.
Així i tot, en general recomanem prudència quan interactues amb LLMs que no estan dissenyats específicament per a l’educació: a les persones ens costa adonar-nos-en quan la IA està substituint el nostre pensament en lloc d’ampliar-lo.
Triar entre no fer servir IA, usar una IA enfocada a l’aprenentatge, o anar-hi a fons és difícil.
Materials i tutors sense IA
Els materials sense IA ens obliguen a comprometre’ns amb el procés actiu de buscar respostes en llibres, documentació i fòrums. Pot trigar més que fer un prompt a un LLM, però el benefici és que ens implica plenament en el nostre propi aprenentatge (sempre que no desmotivi perquè sigui massa avorrit). El nostre cervell interpreta el temps extra com un senyal d’importància, cosa que millora la memòria del que hem après. A més, podem topar amb joies inesperades d’una manera difícil d’aconseguir amb respostes generades per IA.
Tampoc no hem d’oblidar l’element humà: un bon professor pot oferir una perspectiva personal que supera de llarg la conveniència de la IA. A través de bons docents aprenem a estimar una matèria i a creure en nosaltres, impactant profundament l’experiència d’aprendre i la motivació a llarg termini.
Tutors amb IA
Els tutors amb IA poden ajudar a encendre la curiositat si et costa connectar amb el material.
Sovint, quan interactuem amb IA, busquem una resposta ràpida i fàcil. Fins i tot quan està dissenyada per esperonar-nos a pensar per nosaltres mateixos, tendim inconscientment a saltar-nos aquestes preguntes i anar directament a la solució. Cal molta força de voluntat per alentir-nos i digerir de debò la informació que ens dona la IA, sense oblidar reflexionar, relacionar-la amb allò après prèviament i, finalment, entendre com aplicar-la a la pràctica.
Si ets bo fent-te frenar i pensar, endavant amb el tutor! Però, si et trobes passant la major part del temps fent prompts, repassant per sobre i corrent cap a l’output — saltant-te les parts de pensament d’alt nivell — aleshores et recomanem fer una pausa de la IA i buscar maneres d’introduir més reflexió en la teva pràctica.
Assistents amb IA
Genials per fer coses, menys bons per aprendre’n; per usar-los bé cal una base sòlida
Hi ha tantes opinions sobre la millor manera d’usar un assistent d’IA com desenvolupadors. Alguns l’utilitzen sempre que programen i altres prefereixen una pissarra i un ànec de goma. Amb el temps aprendràs el teu estil i preferència. L’important és trobar com escriure codi de qualitat ràpidament i d’una manera que se senti bé.