Dilema juniorului
Cei mai mulți juniori, fie că vorbim de studenți, elevi, sau oameni la început de carieră în IT în general se lovesc de dilema folosirii inteligenței artificiale.
Apropo, o să folosesc termenul de “inteligență” pentru că sub denumirea asta sunt cunoscute modelele de limbaj (large language models), dar în realitate nu e vorba de nicio inteligență, e doar probabilistică aplicată pe un set de date. Un sistem de predicție, nu inteligență.
Dilema la care mă refer și pe care probabil ai sesizat-o și tu într-o oarecare măsură, e cea a folosirii/nefolosirii inteligenței artificiale în procesul de dezvoltare software.
Din ce se poate observa, cea mai mare parte din oamenii începători aleg să folosească inteligența artificială pentru a scrie cod fără să se gândească la impactul acestei decizii pe termen lung pentru cariera lor.
Dar mai mult decât atât, se învârt într-un cerc vicios: dezvoltă aplicații cu AI până la un punct la care modelul se lovește de o eroare pe care nu o mai poate corecta. Din lipsă de cunoștințe, nici autorul nu poate repara problema, iar în cele din urmă, fie abandonează proiectul, fie devine neutilizabil din cauza problemelor în lanț apărute prin tentativele modelului AI de a fixa o problemă și e abandonat oricum.
Ulterior, autorul trece la o altă idee, își spune că de data asta nu va mai lăsa AI de capul lui și va folosi doar pentru lucruri punctuale, dar tentația e mare, mirajul productivității e de asemenea destul de accentuat și cade din nou în aceeași plasă. Iar acest ciclu se repetă de foarte multe ori.
Când ajunge să intre în contact prima dată cu procesul de angajare constată că cerințele sunt mai mari ca niciodată și concurența la fel.
“Proiectele” de portofoliu, cele făcute cu AI, arată foarte bine din punct de vedere al interfeței grafice, dar arhitectura și design-ul codului lasă de dorit, au tot felul de defecte și crapă în cele mai neașteptate momente.
Frica de a nu “rămâne în urmă”
Există această frică printre cei aflați la început de drum, cum că vor rămâne în urmă dacă nu folosesc AI.
Sigur că asta vine dintr-un motiv destul de întemeiat, asta scriu pe rețelele sociale toți care vor să profite de hype-ul AI sau care au un interes direct în creșterea domeniului inteligenței artificiale, cum este Jensen Huang, CEO-ul Nvidia. Sunt mulți alții ca el, dar consider că este cel mai evident exemplu.
De ce nu ar trebui să te lași influențat de ceea ce spun oameni ca Jensen Huang? Pentru că Nvidia are un interes direct în vânzarea de plăci video către cât mai multe companii de tehnologie care dezvoltă produse AI.
Lui Jensen Huang nu-i pasă de AI, putea să fie blockchain tehnologia care i-ar fi propulsat compania și atunci ar fi vorbit doar despre asta.
Îi pasă doar să crească vânzările cât mai mult posibil, indiferent de consecințe.
Uite o diagramă care evidențiază într-un mod simplificat tranzacțiile dintre marile companii AI și Nvidia. O să te facă să înțelegi mai bine fenomenul și discursul lui Jensen.
Și nu e vorba doar de el, sunt pline rețelele sociale oameni de genul, fie orbiți de propriul interes, fie de propria ignoranță pentru că nu au habar ce presupune domeniul ingineriei software.
Oameni care reciclează aceleași mesaje dramatice pentru a genera frică și implicit a crește utilizarea produselor pe bază de AI, chiar dacă de multe ori dezvoltarea unor astfel de produse nu se justifică.
Această frică se propagă bineînțeles preponderent asupra persoanelor care nu înțeleg încă foarte bine domeniul și se aruncă în decizia de a utiliza tot ce pare nou și shiny, pentru a da impresia că țin pasul cu direcția în care se îndreaptă domeniul.
Problema cu proiectele de portofoliu
Cercul vicios despre care ți-am vorbit la începutul articolului se extinde și asupra proiectelor personale.
Cred că o mare parte din oamenii începători au una din următoarele două probleme când vine vorba de proiectele personale la care lucrează:
- Fac proiecte cu AI și habar nu au ce au făcut acolo și de ce
- Fac proiecte fără AI dar mult prea simple pentru a fi luate în seamă de cineva
Se întâmplă din ce în ce mai des să îmi scrie oameni în privat care nu își pot găsi job-uri după finalizarea studiilor în domeniu pentru că toată facultatea au tratat-o cu superficialitate, iar toate proiectele și temele le-au făcut cu AI.
Se întâmplă, de asemenea, să-mi trimită și link-uri către proiecte pe care le-au făcut și de care sunt într-o oarecare măsură mândri. Că doar de-asta îi spune portofoliu, se presupune că acolo expui cea mai bună muncă a ta, cele mai bune rezultate.
În momentul în care merg pe link și văd proiectele, fie că e ceva de tip front-end, cu interfață grafică, fie că e vorba doar de cod, îmi dau seama în maxim 5 secunde dacă proiectul e făcut cu AI.
La fel de repede și-ar fi dat seama și cei cărora le-ar fi trimis proiectele drept portofoliu pentru a aplica la un job.
Asta te descalifică din start și foarte probabil nici măcar nu vei primi șansa la un interviu.
Iar apoi sunt ceilalți în extrema cealaltă, care nu au folosit AI, sau au folosit, dar într-un mod mai puțin invaziv, să spunem. Dar ale căror proiecte sunt fie prea simple, fie neterminate.
Butoane nefuncționale, elemente care ar trebui să facă ceva când interacționezi cu ele, dar nu fac, layout-uri inadecvate pentru alte tipuri de ecran decât cel desktop, ca să enumăr câteva din zona front-end.
Dacă vorbim de back-end, aici sunt probleme și mai grave:
- Codul nu are structură, sunt de toate peste tot
- Denumiri prescurtate și uneori chiar “codificate”, în sensul că nu se înțelege intenția, decât de către cel care a scris codul (sper)
- Logică supracomplicată inutil
- Funcționalități incomplete, iar cele complete sunt simple operațiuni CRUD (Create, Read, Update, Delete)
Pe scurt, se simte și se vede că toate proiectele astea nu au fost făcute din pasiune sau curiozitate, ci doar să fie făcute pentru a bifa cerința.
Soluția: scrie cod “manual”
Soluția la problemele astea e una evidentă, să eviți pe cât posibil scrisul de cod cu AI și să scrii de mână.
Folosește AI dacă ai nevoie, dar pentru probleme punctuale, încearcă să înveți de la AI, nu să facă treaba pentru tine.
Dar nu te opri la lucruri simple, CRUD, ci construiește aplicații reale care rezolvă cu adevărat o problemă și funcționează.
Toate marile platforme de dezvoltare au zeci de pagini de documentație despre cum funcționează infrastructura și motoarele pe care se construiesc aplicațiile: React, Angular, Next.js, .NET, Spring Boot, indiferent ce folosești, există documentație extrem de bună și detaliată despre cum să faci absolut orice pe platformele astea.
Citește cod open-source, ca să-ți faci o idee despre cum se construiesc cu adevărat aplicațiile enterprise.
Citește articole, pe Medium și alte bloguri tehnice dedicate tehnologiei cu care lucrezi.
Și nu în ultimul rând, construiește. Fără AI, scrie tu codul, că doar așa înțelegi exact impactul și efectele propriilor decizii tehnice.
Nu face greșeala de a crede că în 2 ani tot codul va fi scris de AI și tot procesul va fi automatizat și alte bazaconii. Da, viteza cu care se scrie cod acum e mai mare ca niciodată, dar viteză nu înseamnă inginerie.
Inginerii software care sunt capabili să scrie sisteme reziliente, care pot să scaleze pentru milioane de utilizatori simultan, care înțeleg importanța securității și a integrității datelor nu vor fi cei care azi scriu cod cu AI. Vor fi cei care au înțeles ingineria din spate și care folosesc AI doar acolo unde codul are impact și valoare mică.
Dacă aspirația ta e să fii inginer software, dar azi nu poți să scrii o buclă fără ChatGPT, e cazul să iei atitudine.
Atât pentru azi, pe data viitoare.
