*
„Fiți precauți la dez-calificare (digitală)”[3]
Săptămîna trecută, Boris Cherny, creatorul și șeful de la popularul agent Claude Code al Anthropic, a pornit un fir de discuție pe X despre cum folosește el unealta numită AI în munca sa. Firul a tulburat apele. „A început ca o simplă discuție în care omul își arăta bancul de lucru, și s-a viralizat într-un adevărat manifesto despre viitorul dezvoltării de software” – explică un articol VentureBeat pe tema incidentului.
După cum a explicat Cherny: el rulează dintr-o singură consolă cinci agenți, fiecare în cutiuța lui[4]: „Un agent rulează un set de teste, în paralel alt agent lucrează la bucăți vechi de cod și le aduce la zi[5], al treilea tot în paralel scrie documentație. Omul doar comută între agenți, adăugînd instrucțiuni sau dîndu-le cîte un ghiont în direcția bună, după nevoi; le verifică munca și-i trimite înapoi să-și îmbunătățească rezultatele.
Un utilizator a descris procesul ca o analogie la Starcraft (joc la care ritmul este rapid). Articolul de pe VentureBeat l-a descris pe Cherny ca pe un „comandant de flote”. Totul pare o adevărată distracție.
Dar: eu unul dac-aș fi programator, aș fi precaut la așa demonstrații.
În cartea „Munca și Capitalul-Monopol” publicată în 1974, influentul economist politic (și marxist) Harry Braveman argumentează că extinderea „revoluției tehno-științifice” era exploatată de companii pentru a dez-califica muncitorimea; pentru a-i lăsa în „ignoranță, incapacitate, și deci într-o poziție de a servi mașinăriile”. Cu cît angajații își mută meșteșugul lor înspre mașinării, cu atîta devin mai controlabili.
Este dificil să nu regăsim ecourile argumentului lui Braverman despre dez-calificare în demonstrațiile lui Cherny despre programarea făcută cu AI. O lume în care dezvoltarea de software se reduce la un ersatz, la managementul unor agenți digitali, energici dar care produc și mult gunoi – aceea este o lume în care un sector economic ce era cîndva important devine oase și piele, rămînînd din el mai puține slujbe, mai prost plătite, asta deoarece a jongla cu agenți AI cere mai puțină știință decît să produci cod elegant cu capul propriu. Iar consumatorul n-ar fi nici el în vreo poziție mai bună, întrucît programele ieșite de acolo ar fi mai puțin stabile, iar ritmul inovației ar încetini.
Singurul grup care trage indiscutabil beneficii din dez-calificarea programatorilor sunt companiile însele, care astfel își pot reduce unul din cele mai mari costuri, cele cu angajații.
Boris Cherny este șef de echipă senior la Anthropic, are în grijă o echipă mare, și foarte probabil deține un număr semnificativ de acțiuni și opțiuni[6] la companie. Desigur că el juisează de-a dreptul, gîndindu-se la agenți ce pot înlocui programatorii, dar asta nu înseamnă că trebuie și noi să fim la fel de entuziaști.
P.S. Nu vreau prin asta să neg valoarea uneltelor AI pentru programatori. Mulți programatori mi-au spus că AI-ul le este foarte util, ajutînd (cel puțin aparent) la creșterea vitezei de lucru. Lucrul care mă face pe mine suspicios este pretenția că următorul pas firesc este trecerea la o lume în care doar le trasăm instrucțiuni de muncă agenților. Poate părea foarte mișto pe moment, însă ceva mai profund (și întunecat) s-ar putea să se ascundă sub suprafața apelor, sub demontrațiile șmechere.
----------- Ca de obicei, traduc liber, nu cu scopul fidelității complete, ci cu cel al „să înțelegem cam ce-a vrut să spună autorul”[↩]
- As per my usual: I’m not going for full mapping of the original article, but a lax translation that let the Romanian reader get the point with sufficient accuracy.[↩]
- Deskilling e greu de tradus, dar facem pe bucăți. Skilling nu-i neapărat cuvînt, dar ar veni cumva ca o calificare, pregătire în muncă, îmbunătățirea îndemînărilor unui muncitor. Inversul este deskilling, a-ți pierde îndemînările și calificările. Cum face asta în română? A descalifica este deja ocupat semantic să facă alte sensuri. Dar prefixul dez- pare a fi ce trebuie, prin analogie cu dez-aburire, dez-brăcare etc[↩]
- „Each in its own tab” – încă nu avem o traducere pentru tabs. Încercasem eu să traduc cu „filă”, dar nu-s convins că a prins. Deci mai bine folosim termeni ocolitori.[↩]
- Desfid pe oricine să traducă „refactors a legacy module” într-un mod care-i transparent pentru non-programatori.[↩]
- „Stock options”, diverse beneficii care pot fi fructificate după o vreme. Opțiunea de a cumpăra acțiuni la preț preferințial.[↩]
Note personale:
Indiferent de părerile pro- sau contra-, tehnologia AI a apărut și pare că livrează ceva rezultate.
Pe vechiul principiu din economie „dacă se poate (face mai ieftin, mai rapid etc), atunci trebuie”, faptul că a apărut AI în peisaj este fapt imposibil de schimbat. E ca și cum ai încerca să bagi înapoi duhul în sticla de unde-a ieșit, sau mai plastic vorbind, să bagi înapoi cîcatul în cur. Nu merge. Sau cere operațiuni mult mai costisitoare decît procesul original, deci nu merită s-o faci.
Cal Newport observă binișor că obișnuirea cu AI duce la o dezcalificare a muncitorimii pe de cîmpiile digitale. Pe de altă parte, argumentul mi se pare calp, dintr-un simplu motiv: însăși definiția calificării se va schimba. Însăși noțiunea de „a fi programator” nu va mai însemna doar „să știi să scrii cod pur 100% folosind capul propriu”.
Hai s-o luăm așa: poate că în 1980 noțiunea de „a fi programator” însemna doar „să știi limbajul de programare și să citești manualul oficial”. Ba chiar și atunci, am putea argumenta, vorbeau oamenii între ei pe BBS-uri (bulletin board services și ce mai exista înainte de internetul-pe-scară-largă, adică Toamna Eternă).
Dar ia să privim mai aproape de viitorul anterior recent, ce-ți trebuia ca să fii programator mediocru spre decent acum 5-10 ani, pînă prin 2022? Păi, păcatele mele, îți trebuie minima calificare să știi cum să cauți pe Google. Asta pentru că fără Google nu aveai acces la Stack Overflow și alte forumuri obscure, unde oamenii discutau între ei și publicau răspunsuri la întrebări de programare mai comune sau mai ezoterice. Mai știe cineva glumele că „dacă ar pica saitul StackOverflow timp de o zi, am vedea din avion pierderea de productivitate”?
Cu alte cuvinte, chiar recent, meseriașul în programare era deja stăpîn pe îndemînări care nu țineau 100% de munca lui, ci de modul cum interacționa cu uneltele aflate la dispoziție, și mai ales de capacitatea lui de înțelegere & adaptare a ceea ce citea. Degeaba scrie online că a făcut Cutărescu următoarea incantație magică în contextul lui, dacă de fapt în contextul tău ai niște franjuri și niște variabile în plus, care modifică de fapt ce trebuie tu să faci.
Mno, AI pare a fi doar pasul următor, cel puțin pentru programatorul mediu. Un AI macină la datele ce le are la dispoziție, le tot potrivește pe-acolo, pînă îi dă ceva ce pare să aibă coerență. Și are și limitări, setări din fabrică, tot felul de chestii de care trebuie să iei seamă înainte să iei de bun ce produce el acolo. Cu alte cuvinte: nu doar că trebuie să știi bazele în continuare, dar trebuie să știi ce să bibilești la discuția cu AI-ul pentru a-l coordona să producă ceva util. De-aia zic, însăși înțelegerea comună asupra noțiunii de programator se va modifica pentru a îngloba tacit și această calificare, de-a ști cum să discuți cu AI-ul. Cam asta.
De văzut și articolul despre legea abstractizărilor care au scurgeri, al lui Joel Spolsky: https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/
editare:
Mai voisem să adaug un exemplu la muncitorimea „dezcalificată”. Să luăm exemplul unui mecanic auto.
Un mecanic auto în 1950 ar fi trebuit să știe .. pur, strict mecanică, eventual ceva chimie aplicată, cît să regleze debit de carburant și alte marafeturi.
Un mecanic în 2026 trebuie să știe mecanică, clar, dar aia este cumva doar fondul pe care construim restul de chestii; se consideră de-la-sine-înțeles că știi să schimbi discuri de frînă (asta o face și omul acasă, cu ceva efort) sau o distribuție. Suplimentar însă … trebuie să știi să citești manualele de diagnoză (musai în engleză), să te legi la sistemul de diagnoză, să emiți comenzi și să interpretezi răspunsurile, ba chiar să știi și rudinemte de electronică. Și să ai o bună idee despre cum gîndesc programatorii acestor aparaturi controlate electronic.
No, cum o fi, s-au dezcalificat mecanicii care-au învățat să repare mașini prin anii 80? Sau a rămas doar că ăia buni știu și varianta veche a meseriei, dar s-au adaptat și la cea nouă?
Așadar, ești optimist vizavi de MLM-uri? (Prefer să folosesc acronimul românesc pentru LLM.)
Prima problemă a acestor modele este că uneori „halucinează”, ceea ce în informatică implică riscul introducerii unor erori subtile și obscure în cod (cod pe care uneori programatorii nu-l înțeleg, dar pare că funcționează), iar în domenii sensibile implică necesitatea supervizării umane.
A doua problemă este consumul imens de resurse, care le face foarte scumpe. Cu un model energofag pe care ai cheltuit miliarde ca să-l antrenezi și cheltuiești miliarde ca să-l ții în priză creezi eseuri și articole de presă de 12$ bucata. Sau, dacă vrei să-l folosești la sarcini serioase, unde nu se tolerează erori (medicină, programare, industrie, mașini inteligente etc), e nevoie să angajezi supervizor pentru el, așa că de fapt te costă mai mult decât doar medicul, programatorul, operatorul etc inițial singur.
Este o bulă.
A treia problemă e legată de datele de antrenament. Sub aspect cultural, Google acceptă și indexează texte scrise de IA, redacțiile de presă folosesc deja IA la greu, iar internetul începe să fie populat cu tot mai mult conținut produs de IA. Doar că aceste modele sunt antrenate pe conținut original, creat de oameni. Noile generații de IA o să se antreneze inclusiv pe texte produse de IA. Și, treptat, o să se imbecilizeze.
Bine, nu-i ca și cum în prezent ar fi foarte deștepte. Citez din prima mea conversație cu Meta AI:
A patra problemă este legea compensației.
Și poate mai sunt.
Că tot mi-am adus aminte: ai cumva niște sugestii de întrebări pentru aici? Pot fi inclusiv pasaje dificil de tradus, dar și orice altceva.
Întrebi dacă-s optimist legat de … care aspect anume?
Orice chestie făcută de omenire consumă mai mult sau mai puțină energie. Tot ce contează este dacă per total consumă mai mult sau mai puțin decît echivalentul uman, agregat.
Mi-e egal dacă dispare mîine tot ce înseamnă AI, sau să se restrînge aria de activitate doar la acele sub-domenii unde produce suficientă valoare adăugată încît să merite. Vorba ta, momentan nu-i clar că merită să ții în priză reactoru’ nuclear doar ca să aibă Gigel Menegeriel cu ce unealtă să-și (re)scrie e-mailurile. Dar pentru sarcini suficient de complexe, unde pot înlocui 10 angajați mediocri cu 2 angajați buni + AI, acolo s-ar putea să aibă viitor. Treaba asta chiar se vede în programare, fix pentru că întreg domeniul a fost pe creștere în ultimii … minim 10 ani, așa că s-au angajat foarte multe persoane care nu pricep foarte bine subtilitățile limbajelor de programare, nu pricep ce fac acolo, nu au competența să învețe singuri și să descopere pe cont propriu cum să-și îmbunătățească viteza de muncă etc șamd.
Și da, evident că există și limite „hard”, domeniile unde există standarde foarte înalte. Dar și standardele alea .. cît pot să acopere? Nu scrie niciunde ”nu folosiți AI”, și nici nu poți reglementa la acest nivel de granularitate.
Pot să-ți zic că la software-ul pentru automobile ai clasificări (ASIL A,B,C sau D). Chiar și pentru ASIL D, cu cel mai mare risc de pagube în vieți omenești, totuși standardul te poate duce doar pînă la un punct. Dacă AI-ul ți-a generat codul, AI-ul ți-a scris testele și apoi le-ai rulat, apoi cineva semnează pe produsul ăla că a fost verificat și documentat corespunzător .. el va intra în producție. Sigur, cu verificările umane de rigoare (măcar mimate), dar dacă procesul poate fi făcut de 5 oameni + AI, în loc de 20 de oameni, tot este mai ieftin. Iar dacă se poate, trebuie.
Cert este că în toate domeniile unde va fi valid economic să folosești AI (corectarea halucinațiilor este și ea un cost, în fond), definiția meseriilor respective se va schimba încet-încet să înglobeze și abilitatea respectivă. Cum ziceam, ca la mecanicii auto; vrei, nu vrei, să fii mecanic înseamnă să folosești testere de diagnoză și să folosești uneltele moderne aflate la dispoziția ta.
re: al doilea comentariu:
Nu am întrebări. Pur și simplu ce dorești tu este un soi de Turing test pe steroizi, iar eu nu cred că am vreo întrebare suficient de complexă și interesantă încît să particip.
Dacă ești optimist legat de evoluția IA și îmbunătățirile pe care ni le va aduce.
Probabil că modelele generative n-o să dispară, că reprezintă un progres în domeniul IA. (Deși avem cazul curios al tehnologiei Intel Optane, care, cu toate că avea performanțe peste SSD-uri, a fost retrasă de pe piață din cauza costului ridicat.) Dar sunt și o bulă. Consumă enorm de multă energie (incomparabil peste consumnul uman) și oferă mult mai puțină plus-valoare decât e hype-ul. Momentan știu că toate companiile de IA rulează pe minus și bagă bani cu nemiluita. Dar cât timp poți băga bani fără să faci profit? Și de unde profitul? Cât de mult poți să te bazezi într-un domeniu critic pe niște mașini care doar emuleză inteligența?
Ca fapt divers, Sam Altman spunea că mulțumesc și te rog frumos adresate lui ChatGPT îl costă zeci de milioane de dolari.
Nu toți care au recurs la vibe coding sunt încântați. Unii au ajuns la concluzia că-i o capcană și au renunțat. În principiu, cred că programatorii buni.
Erorile programatorilor de azi care nu pricep ce fac se vor regăsi în erorile codului produs de IA mâine, care cine știe când vor ieși la suprafață.
Ideea că poți verifica ceva făcut de altul (sau de o mașină) este alunecoasă și înșelătoare, pentru că dacă nu faci tu lucrul ăla, o să ajungi treptat să-ți pierzi dexteritatea și priceperea.
Dă-mi un exemplu de proces care ar putea fi făcut cu 5 oameni + IA în loc de 20 de oameni, obținându-se astfel profit. Pentru că nu-i așa de simplu. Dacă IA face munca a 15 oameni, s-ar putea să ai nevoie de 15 oameni care să verifice munca aia, nu doar de 5. Și ține cont că profitul ăsta e al firmei B care folosește IA, nu al companiei A care produce acel IA. La data curentă A rulează în pierdere. Ca să poți susține modelul ăsta, ar trebui ca și A să devină profitabilă. Asta înseamnă abonamente mult mai scumpe la IA, deci costuri mult mai mari pentru B ca să folosească acel IA decât le are în prezent.
Aia cu „dexteritatea și îndemînarea” poate fi o marotă foarte dubioasă. S-o luăm așa: în afara cazului că nu lucrezi la ceva perfect automatizabil și repetabil, dacă natura muncii este variată (nu doar produsele) .. atunci o sumă de îndemînări vor deveni perimate foarte rapid. Asta-i și natura tehnologiei, avansează, prin asta înțelegînd că și sculele pe care le folosești astăzi nu e neapărat că le vei mai folosi peste 5 ani.
(Și, ca paranteză, nici firmele nu-s foarte interesate să investească în personal, să le acorde timp de autoperfecționare; ai Problema Cutare, o rezolvi achiziționînd minimul de cunoștințe necesar ca să faci asta – dar nu ești plătit să înveți tu în adîncime ceva, ăla va fi maxim un efect secundar al contactului prelungit cu tehnologia)
Cu exemple: dacă ai învățat JQuery pe vremuri, framework pentru JavaScript, astăzi ești cam pielea pulii. Pentru că lumea a avansat, a trecut la alte framework-uri, au venit la modă alte chestii (React, VueJS, Angular). Dacă ai învățat JQuery doar cît să-ți rezolvi problemele, ești per total mai cîștigat decît unul care-a stat să studieze în profunzime; măcar tu ești mai odihnit și-ai avut timp pentru activități de relaxare. Idem cu multe alte tehnologii, oricine din IT dacă se uită în spate vede un cimitir de tehnologii care au cam apus deja. Eu unul am compilat de la zero PostgreSQL recent, ghici cînd va mai trebui să repet această faptă de arme? Spoiler alert: nu prea curînd. Iar dacă totuși am nevoie, am avut minimul de bun simț să-mi notez pașii dați de Gemini (cu explicații), astfel încît să pot să refac procesul cu minime deviații.
Aia cu eficiența iarăși e o marotă. Din programatorii de pe piață, vezi că poate 1% din ei sunt cei de elită, care se cacă cod, respiră cod, și scriu lucrări de dizertație *pentru că oricum au făcut respectiva muncă de cercetare de plăcere*. Evident că AI-ul nu-i bun la cercetare și găsit chestii noi, deci nici n-are cu ce să-i ajute. Restul, adică noi ăștia mai aproape de medie, care căutăm pe Google ca să învățăm subtilitățile vreunei tehnologii cu care dăm nasul azi … pentru noi un Google pe steroizi (ceea ce AI-ul și este, la drept vorbind), cuplat cu un minim analizor de cod, oferă o viteză mai mare de producție, fără prea multe downsides. Și codul scris de mine, și cel scris de AI poate conține greșeli sau presupuneri eronate, doar în cazul al doilea am mai mult timp pentru a testa respectivul cod.
De aia zic – aspectul financiar mă depășește, și sincer nici nu-mi pasă de el. Ce să fac, să stau să sparg semințe pe margine, „poate se sparge bula mîine, poate nu”? N-are sens. I have no skin in that game. Eu ce fac în calitate de utilizator de AI este să constat că 1) poate să îi ajute pe unii, 2) dacă va rezista, atunci ne reconfigurăm așteptările legat de folosirea lui, și deci 3) se prefigurează schimbări de paradigmă. Dacă nu vin schimbările alea, pagubă-n ciuperci, vom reveni fix la status-quo-ul anterior.
Ah, că pe unii care-s astăzi juniori o să-i înghită valul, și vor rata să învețe bazele. Ghinion, dacă se sparge bula AI ăștia vor avea mari dificultăți să mai livreze ceva. Așa-i lumea tocmită, și n-o s-o schimbăm noi. Tot ce putem face este să ne menținem sulițele (mintea) ascuțite, în contextul nou.
Cred că ai interpretat greșit perspectiva din care comentez. Eu nu zic să nu folosim IA, nu propun abstinența, nu sunt purist, nu sunt împotriva utilizării. Dimpotrivă, sunt cel mai mare entuziast pe frontul ăsta. Dar sunt sceptic cu privire la impactul și utilitatea reală la scară macro și pe termen lung ale acestor modele inteligente (care, printre altele, încep să prostească lumea, pe baza legii compensației). Și asta te întrebam, cum vezi tu evoluția generală, nu că hai să ne poziționăm în Gigă Contra și să-i înjurăm pe cei care folosesc IA.
Programezi în Javascript. Limbajul evoluează, apar elemente și librării noi, cu care trebuie să fii la zi. Înveți 20% din JQuery, că mai mult nu-ți trebuie la ce faci tu, apoi strictul necesar din React șamd. Dar tu ești cel care scrie codul. Scriind, exersezi. Îți poți reciti și corecta sau optimiza codul, știi ce-ai făcut acolo, că acel cod nu-i decât ultima etapă sau expresia finală a unui proces intelectual al tău (apropo de articolul lui Paul Graham). Dar, la un moment dat firma recurge la agenți IA și te pune doar să verifici cod scris de ei. Cum o să evolueze situația? Eu cred că mai nasol, dintr-un șir de motive. Unu: nu e codul tău. E mai greu să verifici codul scris de alții, pentru că nu e stilul tău și pentru că în esență nu e procesul tău de gândire. Ți se prezintă doar etapa finală a procesului de gândire al altcuiva. Doi. Nescriind cod, după o vreme îți ieși din mână. Trei: dacă nu cunoști decât 20% din JQuery, iar agentul IA folosește mai mult decât acel 20%, nu vei avea habar ce-a scris acolo. Așa că vei face o verificare de mântuială. Dacă pare să meargă, îi dai drumul în producție. Eu cred că modelul ăsta prezintă riscuri mai mari pe termen lung. E mai ieftin, dar mai prost sau cu potențial mai mare de dezastru. Gândește-te numa’ câte erori greu de depistat pot fi introduse așa, că un agent IA nu este un agent rațional, ca un om, ci doar un agent care mimează rațiunea, așa că nu are o perspectivă de ansamblu asupra a ceea ce face, ci doar însăilează acolo niște chestii care probabilistic s-ar potrivi, iar fluxul de scriere și verificare a aplicației pe care o dezvolți este segmentat și mai mult decât era înainte. Dacă unii cred că ăsta e viitorul, mă rog, dar eu nu văd un viitor promițător în asta. Eu văd mai degrabă întreținerea unui hype pe considerente de marketing.
Și eu mi-am făcut excerpt automat pe „O Poziție” cu ajutorul lui CharGPT, că nu știu WordPress, iar tema mea afișa implicit tot articolul. Sigur că pentru aplicații din astea simple și personale, de genul să bibilim ceva la blog, să facem un progrămel pentru noi, merge să folosim IA. Dacă nu cunoaștem limbajul/mediul/framework-ul dar avem minime afinități tehnice, ne scoatem rapid cu IA, economisind timp. Dar asta e la nivel de diletant. Că fără să avem acele cunoștințe, nici nu putem activa profesional în domeniul ăla. Chestii simple și ușoare da, dar Windows 12 programat de IA? Următorul Linux cu contribuții din partea IA? Noi doi suntem mai câștigați pe persoană fizică, dar firma care face softul pentru o bancă sau pentru o rețea națională oarecare nu știu dacă va fi mai câștigată. Acolo e ceva critic.
AI coding tools make developers slower but they think they’re faster, study finds
Mnu e chiar așa. S-o luăm pe puncte:
> Înveți 20% din JQuery, că mai mult nu-ți trebuie la ce faci tu, [..]. Dar tu ești cel care scrie codul. Scriind, exersezi. Îți poți reciti și corecta sau optimiza codul
Primul punct discutabil. Orice programator îți poate spune că există o tensiune între „tot ce-am scris acum, privit la cald, este perfecțiunea întruchipată” și „am revenit după 2 săptămîni, ce mama dracu am vrut să fac eu aici?!”. Iar problema asta a apărut cu mult înainte să știm de AI, inclusiv apare la cod scris 100% de tine din capul propriu, darmite la cod cior… găsit pe StackOverflow.
Pur și simplu lucrăm cu obiecte suficient de complexe încît la re-vederea codului să avem nevoie de o perioadă de re-acomodare cu el, să ne în-magazinăm în memoria de scurtă durată modelul mental al codului. Ca o hartă digitală, la prima citire vezi structura „zoomed out”, apoi pe bucățele re-înțelegi în detaliu, pas cu pas, ce-ai vrut să faci acolo („zoomed in”).
Nimeni nu te împiedică să pui AI-ul să îți explice pas cu pas ce face în codul generat. Nimeni nu te împiedică să-l pui să-ți dea bucată cu bucată, să digerezi ce se întîmplă acolo, și abia apoi să pui în operă producția. Ah, că hype-ioții (sunt mîndru de acest cuvînt) ar dori să ne vîndă iluzia că vom manipula codebase-uri de milioane de linii de cod dintr-o suflare … hai să vorbim de la firul ierbii.
În experiența mea, dacă cer AI-ului nu doar să scrie cod ci și să-l explice, pierderea de timp este cam egală cu ce aș fi obținut dacă căutam eu. Nivelul de înțelegere tot pe-acolo este, la aceeași unitate de timp. Să zicem că am o oră de cheltuit pe un task micuț: în timpul ăsta îi zic AI-ului să îmi genereze cod, apoi iterativ să explice ce-a făcut acolo, să studiez ce-a produs, și să-l pun să explice ce nu-mi e clar. Dacă copiez cod de pe StackOverflow, iau ceva bucățele disparate, încerc să citesc documentație, documentația mă ajută doar parțial, apoi trebuie să încerc variante pînă se „pupă” piesele din puzzle. Ce s-a explicat pe StackOverflow pricepe și AI-ul, și-mi sumarizează.
> Dacă pare să meargă, îi dai drumul în producție.
Greșeală de proces, codul trebuie testat. Să iei cod (cu copy-paste de pe SO, sau dintr-un chat AI) este la fel de nociv, cu efecte imprevizibile, da.
Lipsa testării nu e vina AI-ului, ci a managerilor. Foarte bine, să facă greșeala asta cît mai mulți, restul cu sulițele pregătite și ascuțite (adică ăștia care înțeleg(em) limitările codului netestat).
> un agent IA nu este un agent rațional, ca un om, ci doar un agent care mimează rațiunea, așa că nu are o perspectivă de ansamblu asupra a ceea ce face
Dacă ai vedea în ce hal de proști/limitați sunt unii programatori (și IT-iști în general), n-ai mai zice asta. I-am dat unui AI un set de 10 surse, scheletul unui proiect început de mine, și în cîteva secunde mi-a analizat codul, a listat care-s „piesele” principale și cum se îmbină ele. Unui programator (mediu) care încerca să-și construiască același model mental i-ar fi luat vreo 10-15 minute.
S-au făcut mulți pași pe direcția deterministică, adică efectiv să ia AI-ul notițe și să lucreze cu conceptele așa-cum-sunt-ele. Dacă are un context window suficient de mare, și token-izează suficiente noțiuni din ce vorbești cu el, poate să fie foarte coerent.
(ca paranteză: Eu sunt unul din aceia care scriu texte lungi cînd cer ceva unui AI. Pentru că explic context, ce am în minte, ce vreau, ce cerințe subînțelese am pe-acolo, care-s limitele datelor de intrare și ale rezultatelor. Sigur că mașinăria se descurcă mai prost dacă îi spui doar „fă-mi un pod peste Bega” și abia după încerci să rafinezi – decît dacă îi zici din prima „fă-mi un pod de lungime X metri, din ce materiale ar fi ok să susțină 4 benzi auto pe care este restricție de tonaj la 10 tone, și pe care traficul la orele de vîrf este estimat să fie Y mii de vehicule; menține costurile la nivelul Cutare, și spune-mi explicit ce presupuneri faci în aceste calcule”.)
Pot să-ți spun că am continuat conversația [pe codul inițial] cu cerințe punctuale (modifică-mi aia acolo, modifică aialaltă dincolo etc) – și a continuat să fie coerent pe intervale destul de lungi de timp. Unde i se rupe firul lui Gemini este dacă facem multe iterații, încercăm una sau alta, și la un moment dat nu mai face diferența între ce s-a propus doar, și ce s-a implementat concret.
Pe de altă parte, același lucru l-am pățit cu colegi în carne și oase. Fac pair programming, vorbim de la început că încercăm 3 variante să rezolvăm problema N. Varianta 1 nu merge, 2 nu merge, 3 merge cumva. Dup-aia, la dificultatea următoare (problema N+1 de pe listă), vine omul și zice senin că își imaginează o continuare bazată pe Varianta 1 (care n-a mers, și de care trebuia să și uităm deja).
Pe scurt, nu cred că-ți reprezinți cîtă foame de programatori a fost și este, și cîți au ajuns în domeniu deși rețin mai puține decît o face ChatGPT în zilele proaste.
> Chestii simple și ușoare da, dar Windows 12 programat de IA? Următorul Linux cu contribuții din partea IA?
Orice sistem mare este descompus în părticele mai micuțe. Dacă descompui suficient de granulos (?), ajungi la sarcini pe care le poate ataca și un AI.
Poate n-o să scrie Gemini următorul kernel cap-coadă. Dar îți poate scrie rutina care desenează bucățele de interfață grafică!
> AI coding tools make developers slower but they think they’re faster, study finds
Chiar aș măsura și eu chestia asta, dacă aș avea cum. Dar nu prea ai cum, și sincer asta îmi pare o problemă a studiului: nu poți estima dinainte decît aproximativ cît îți va lua să rezolvi problema cutare. Este problemă notorie a domeniului, crezi că durează X, dar de fapt dai de o problemuță aparent minoră, și brusc durează X+n, sau chiar 2X.
Ca să verific, ar trebui să rezolv fix aceeași problemă de două ori, o dată solo și o dată cu AI, și să comparăm rezultatele. Doar la a doua încercare, aș ști deja ce-i de făcut, și aș fi mai rapid.
> Și asta te întrebam, cum vezi tu evoluția generală
Și asta îți tot cînt aici, că nu putem estima. Pentru că nu știm ce modele de monetizare au uneltele astea în spate, și nu știm cîtă plusvaloare aduc de fapt, plus că se schimbă de la o lună la alta nivelul de calitate (uneori în sus, uneori în jos).
Nu uita că algoritmii de AI nu trebuie să fie precum ChatGPT, antrenați pe întreaga știință a umanității. Există algoritmi antrenabili și antrenați doar pe un subset de date, care pot să dea răspunsuri precise pe un set îngust de date. Ăștia costă mai puțin să fie antrenați, și costă mai puțin să fie ținuți în priză.
De-aia singurul meu răspuns este „ceva formă de AI va exista probabil și în viitor, chiar dacă nu modelele la scară largă ce le vedem astăzi”. Iar de acolo, ai deja restul răspunsului. Dacă se poate, trebuie.
În prima parte, vorbești din perspectiva unui programator care nu stăpânește prea bine limbajul sau domeniul de activitate și apelează des la Google, Stack Overflow etc pentru a-și rezolva sarcinile. Sunt de acord că pe un astfel de programator IA îl poate ajuta, pentru că IA e ca un compilator rapid de Google + Stack Overflow: ce mi-e una, ce mi-e alta. Dar eu vorbeam din perspectiva unui programator care cunoaște foarte bine instrumentele pe care le folosește și nu are nevoie să apeleze la Stack Overflow – decât, eventual, rarisim. Iar dacă o firmă de software se bazează pe programatori din prima categorie, care copiază cod de pe Stack Overflow, sau dintre cei pe care îi dai tu drept exemplu, atunci să avem pardon, dar firma aia deja este într-o situație foarte precară, iar codul scris de ea este nesigur.
Chiar dacă nu înțelegi codul scris de tine acum 10 ani, tot îți este mai ușor să-ți amintești de el decât să înțelegi codul scris de altcineva. Însă îți acord un punct la partea în care spui că îl poți pune ChatGPT să-ți explice ce face codul ăla. Dar, chiar și așa: l-ai putea pune să-ți explice ce face codul tău.
Când am scris „pare să meargă”, fix la teste mă refeream. Deci, îl testezi în prealabil și pare să meargă. Dar poate codul ăla conține o eroare care nu-i evidentă și nu apare la testele uzuale. E foarte greu să-ți dai seama cum poți să testezi un cod pentru toate cazurile, configurațiile etc. Poate codul scris are o logică care-l expune unor erori doar în anumite condiții, pe care sistemul tău de testare nu le întrunește. De exemplu, poate codul conține o funcție random care, prin felul cum e făcută, va da chix în fiecare zi de vineri la o anumită oră, ca are la bază un seed care citește ora curentă. Iar tu nu testezi codul ăla vineri, așa că nu-ți dai seama că are un bug. Îl testezi sumar și-l dai mai departe. Și după un timp bulește toată aplicația, și nimeni nu își mai dă seama, într-un soft complex, cu mii de dependențe și sute de mii de linii de cod, unde-i problema. Și tipul ăsta de erori e mai ușor să apară când ai o problemă complexă și iei cod scris de IA pe care nu-l înțelegi. La chestii simple nu apare, dar la softuri foarte complexe poate să apară. Ideea cheie aici este că nu înțelegi codul. Sau poate doar ți se pare că-l înțelegi.
IA seamănă cu un papagal. Ce-mi spui tu este că Gemini poate să fie coerent pe durate lungi de timp. Asta-i ca și cum ai spune că papagalul poate să fie coerent pe durate lungi de timp. De acord, dar papagalul nu înțelege nimic din ce spune. Și nici IA. Așa că doar pare coerent. Adică, reușește să mimeze coerența pe durate mai lungi de timp. Aici e buba. Nefiind coerent pentru că înțelege ce-i spui tu, ci doar pentru că algoritmul lui predictiv reușește să se plieze mai mult timp pe cerințele tale, nu poți pune bază pe el.
IA este o mașină predictivă. Răspunde la următoarea întrebare: care este cea mai probabilă secvență de cuvinte care să continue discuția de până acum, pe baza tonelor de texte pe care le-am îngurgitat în cursul procesului de antrenare și fără să am habar de ce înseamnă nici măcar un singur cuvânt? Faptul că, în aceste condiții, reușește să îți producă răspunsuri care sunt coerente cu ce-l întrebi și reușește să mențină această coerență timp îndelungat, cu toate că nu înțelege o iotă din ce-i spui tu sau ce-ți răspunde el, este într-adevăr uimitor.
Și eu cred că IA va supraviețui într-o formă sau alta. Dar mai cred că este o bulă. Subscriu la ce zicea Linus Torvalds răspunzând la întrebarea dacă IA este o bulă sau o revoluție în programare:
Deci, cred că suntem pe aceeași linie. Dar eu comentez oarecum critic la adresa IA în contrapondere la hype-ul de care beneficiază. Și pentru că în esență, IA is pretty dumb.