
Azi și acum vreo 2-3 zile am citit niște articole interesante privind „inteligența artificială” și viitorul programatorilor și, în linii mari nu sunt de acord cu pesimismul. Adică o să fie greu, dar nu pentru toți la fel. Unul era legat de piața locală de IT, celălalt comenta afirmațiile CEO de la SoftBank care prezicea dispariția completă a acestei specii. De vreo 6 luni folosesc și eu AI la programare, iar cum în ultimele 2 săptămâni, fiind o perioadă mai lejeră la întreprindere am putut recupera pe partea aceasta (de vreun an de zile lucrez la o aplicație încercând să integrez diverse „aplicații” care inițial erau separate într-o structură modulară și care probabil la un moment dat o voi scoate și în variantă comercială, cele mai multe module fiind deja testate de vreo 2-3 ani în cadrul firmei noastre, o parte și de către alte firme). Revenim.
Din ianuarie folosesc ca mediu de programare VSCode care are integrat GithubCopilot, denumit „inteligență artificială”, o denumire greșită, deoarece acestea sunt LLM – Large Language Models. Asta înseamnă că ele nu gândesc, deși „vorbesc” coerent, nu înțeleg ce zic, nici ce le zici tu (ok, asta „înțeleg”, dar nu la modul uman). Ele practic prezic cuvântul următor din conversație pe baza acumulărilor. Sunt un fel de „mama Omida” cu o rată mai mare de succes. De aia uneori bat câmpii bine de tot, de aia uneori amestecă informații. Prin anii 70 era la modă o formă artă, „colajul”. Se creau tablouri din fragmente de poze, se creau texte din decupaje din cărți. În linii mari, cam asta face acum inteligența artificială. Colează mai mult sau mai puțin corect informații. De aceea au o sferă de aplicare destul de vastă pentru că pot identifica modele, tipare, pot procesa cantități mari de date, dar nu te poți baza pe ele pentru chestii de nuanță, acolo unde sursele de bază (legi, standarde) sunt importante. Revenim (a doua oară).
În cele 6 luni de când „lucrăm” împreună, Copilot a devenit mai bun la predicție. Gradul de acuratețe este acum undeva la 60%. Mi-a învățat funcțiile și mi le servește pe ale mele nu pe cele generice, îmi „scrie” bucăți de cod care mie mi-ar lua probabil juma de oră să le găsesc, prin codul meu sau prin cine știe ce biblioteci, că practic e un LetMeGoogleThatForYou. De exemplu, unul din modulele aplicației este o platformă de elearning, iar codul secțiunii de teste este scris acum douăzeci de ani, când am lansat cursurionline.ro (2002), o platformă de elearning lansată mult prea devreme pentru piață (ok, nu codul în sine, că ăla inițial era scris în asp, acum e php, ci algoritmul).
Un alt ajutor important este că îmi subliniază erorile. Evident nu toate, nu cele de compilare, dar chiar și prin eliminarea erorilor de „ortografie” gen un ; uitat, o paranteză sau o acoladă neînchisă și tot e un ajutor important. Per total, aș zice o creștere de productivitate de 30, poate chiar 40%, în doar 6 luni, în condițiile în care eu sunt „programator de duminică”. Probabil că în mâinile unui profesionist lucrurile pot sta chiar mai bine.
Dar există un dar important. Asta nu e programare, asta e dactilografiere de cod. Este partea cea mai puțin time consuming. Construirea unei aplicații înseamnă să gândești fluxul logic al activităților utilizatorului, să gândești funcțiile logice ale aplicației, structura datelor, măsuri de protecție, management utilizatori etc. Or asta nu o poate face, nu foarte curând. Pentru asta are nevoie de „memorie”, are nevoie de context cultural ori chestiile astea mi se par foarte departe.
Încă o paranteză. Întâmplarea face ca doi furnizori să-și schimbe platformele de management clienți. Ambii lideri de piață pe domeniul lor. Ambii au gândit aplicațiile cu… fundul, fără nici o treabă cu utilizatorii. Care trebuie să-și instaleze aplicații 3rd party ca să acceseze aplicațiile lor. Noi suntem o firmă mică, avem vreo 20-30 de furnizori. dacă fiecăruia îi trece prin cap asta, ar însemna să instalez 20-30 de aplicații doar ca să… accesez alte aplicații. Și lumea critică digitalizarea statului. Revenim (a treia oară, dacă nu v-ați plictisit).
Spuneam că la mine câștigul de productivitate a fost de 30-40%. În funcție de context, cam acesta este și procentul general de programatori care va fi eliminat. Evident, în principal juniorii. La noi va fi un pic mai mare fiindcă distorsiunile pieței a făcut ca IT-ul să întrerupă cariere promițătoare de herstiliști, croitori și croitorese sau chefi, deoarece ani de zile s-a angajat în exces în acest domeniu fiindcă la momentul respectiv dădea mai bine în excel să ai numere mari, chit că stăteai cu sute de oameni „pe bench”. Și cum cea mai mare parte din ei au confundat salariile pe care le primeau cu valoarea lor „de piață” vor avea nevoie de dușuri reci pentru a se trezi la realitate. Piața noastră de IT trece acum prin ce au trecut firmele de confecții în primul deceniu din anii 2000. Doar că la vremea respectivă doamnele croitorese s-au recalificat ca badante prin Italia, nu știu ce vor face „valoroșii” pentru că nici afară nu e mai bine.
Dacă pe zona de IT – cu mențiunile de mai sus – nu va fi foarte complicat, un adevărat tsunami va lovi zona de middle management, zona funcțiilor suport – analiști de tot felul, contabilitate, resurse umane, marketing. Aici va fi un măcel, fiindcă vor dispărea între 50 și 70% din joburi în următorii 3 și 5 ani. Ce vor face oamenii ăștia? Nu am nici o idee, va deveni o problemă complicată pentru omenire.
La nivel de industrie in acest moment sunt mai multe pariuri lansate, de niste entitati care spera sa faca ceva profit sau macar sa-si regleze investitiile. Sigur este extrem de mult zgomot si ai nevoie de un pic de simt critic pentru a le putea observa, dar pana acum eu am identificat urmatoarele asa-zise pariuri/scoli de gandire:
1. Oamenii care vor sa optimizeze costurile companiilor si care manati de timpuri sunt de parere ca daca vor investi in nu stiu ce serviciu, vor putea face o reducere de cheltuieli cu forta de munca prin concediere. Pariu foarte seducator, iar daca mai vine de la vreo firma de consultanta care a fost angajata pentru asta cu greu poate fi omis. Initial lucrurile par ca se misca, in fond scapi de o cheltuiala cu personalul si platesti o suma infinit mai mica pentru serviciu plus taxa de consultanta pe care oricum o dadeai, daca esti listata pe bursa mai cresc actiunile upper managementul isi incaseaza bonusul frumos de quarter. Problemele apar peste cateva luni hai un an cand descoperi ca orice chestie pe care vrei s-o faci nu este foarte usor si in final fie ajungi sa angajezi alti consultanti platiti bine si foarte bine, iar daca lucrurile nu se misca prea bine vezi daca aia care i-ai dat afara vor sa se intoarca sau nu s-au bagat ca si consultanti.
2. Oameni care vor sa sporeasca productivitatea angajatilor in chestiile pe care le fac de zi cu zi. Aici nu e prea mult de spus ci mai degraba vorbim de companii care au observat ca anumite servicii sunt convergente cu ceea ce fac si daca sunt folosite bine cresterea de productivitate e mare. Exemplul dat de tine in articol este foarte elocvent si sunt nenumarati giganti din industrie care au observat asta si care observa ca o sa fie o nevoie si mai mare de oameni care gandesc si stiu ce fac.
La ora actuala nebunia este foarte mult pe cei din zona de optimizari de cheltuieli intrucat odata ce ai inlocuit oamenii cu un asa-zis serviciu AI, nimeni nu-ti poate garanta ca acel serviciu va mai costa suma pe care tu ai platit-o initial. Este un joc in care compania care vrea sa-ti vanda serviciu, vrea sa te tina prizionier pe tine ca si companie. Si spun asta pentru ca majoritatea abonamentelor acestor servicii nu se vand la un pret din care compania care-l vinde sa faca un real profit. In cel mai bun caz sunt pe 0 sau aproape de 0, date fiind costurile operationale al serviciilor AI. Iar asta o spun dupa ce cursor(un serviciu AI care ofera un vscode mai special in care apelezi chatbotul lor de AI) doar ce a facut o marire de pret de 10 ori mai mare, iar toti entuziastii au redescoperit GithubCopilot in VsCode. Asa ca toata batalia in esenta se da pe capturarea unei piete si apoi pe mentinerea ei, chestii veche de cand lumea si nimic inovativa.
Acum revenind la ceea ce fac aceste LLM-uri „inteligente” lucrurile sunt impartite. Daca vorbim strict de programare depinde cu ce limbaj lucrezi. Eu de exemplu mi-am petrecut o buna parte din cariera profesionala lucrand in C# un limbaj compilat cu tipuri si in care erai oarecum constrans sa gandesti intr-o paradigma OOP(orientata spre obiect). Cand foloseam C#(acum am trecut pe NodeJS ca se plateste mai bine) aveam nenumarate unelte cu care imi puteam incropi un LLM extrem de rudimentar daca imi doream. Vorbim de snippeturi, de anumite unelte ce analizau codul si-mi propuneau chestii(gen Resharper). Mai mult primeam diverse informatii cu privire la ceea ce se putea intampla cu schimbarile facute in cod. Toate chestiile astea erau disponibile din 2011 daca nu ma insel, ulterior cu evolutia timpului, anumite chestii s-au putut automatiza si experienta s-ar fi imbunatatit si mai mult.
Chestia asta in zona scripting(JavaScript, Python) nu a existat vreodata ci s-au tot creat diverse unelte care sa faca ca aceste limbaje sa se comporte ca unul compilat si cu tipuri. Nu de alta, dar cele mai mari erori aici nu sunt de concepere a programului, ci de greseli de sintaxa sau de denumiri. Clar aici un LLM este wow te da pe spate, iar daca ne ducem in zona de operatiunii unde yaml-ul e la putere un LLM poate face minuni. Insa vorbim doar de un amarat de intelissens mai destept decat ala clasic din VsCode, pe care il ai deja disponibil in Visual Studio daca lucrezi cu C# sau VB. De ce toata lumea se entuziasmeaza pe asta?