Modul în care scriem software, cultura noastră, provocările și bineînțeles optimizarea acestuia au fost principalele subiecte dezbătute la Expert Panelul de luna trecută. Alături de noi au fost:
Adelina Burnete - Java Software Developer @ BoatyardX,
Radu Moldovan - Senior Software Engineer @ BoatyardX,
Darius Haș - Java Software Engineer @ Accesa,
Ovidiu Mățan: Vă invit să vă realizați o scurtă introducere personală
Radu Moldovan: Lucrez de aproximativ douăzeci de ani în domeniu. Am intrat în Software Development de pe poziția de Quality Engineer. Am terminat profil tehnologic, dar nu neapărat orientat înspre domeniul development. După un an de QA, am început să cochetez cu partea de development. Am avut ghizi destul de buni care să îmi stârnească interesul.
Crezi că vom lucra până murim sau ne vom opri la un moment dat?
Radu Moldovan: Depinde foarte mult de nivelul de stres la care ești supus. Am observat că lumea se așteaptă să fii din ce în ce mai distribuit, pe măsură ce înaintezi în vârstă și experiență. De fapt, vârsta aduce câteva minusuri - puterea de concentrare mai scăzută, zgomotul ambiental care nu te lasă să te concentrezi. De exemplu, în ceea ce mă privește, am constatat că o dată cu trecerea timpului, eu am nevoie de mai multă liniște în jur ca să mă pot concentra mai mult.
Adelina, ești printre puținele fete care prezintă Java și care scrie articole.
Adelina Burnete: Mereu se spune că sunt mai puține fete în acest domeniu, dar eu nu am avut experiența aceasta. Am terminat mate-info, am făcut licența și masteratul la Politehnică. Mereu am fost 50-50 ca proporție. Lucrez de 8-9 ani în domeniu, iar în BoatyardX sunt angajată din prima zi de când a apărut în Cluj, adică de vreo cinci ani.
Darius Haș: Eu am terminat facultatea anul trecut. Sunt la masterat le Politehnică. Lucrez full-time undeva din anul 3 sau 4 de facultate. Din punctul meu de vedere, contează ce știi, nu ce diplomă ai. Lucrez pe backend, Java + Spring. Am lucrat și pe proiecte Big Data, Scala, Spark, Google Cloud. Am mai făcut și un internship unde am cochetat cu Blockchain.
Când lucram la o anumită firmă, în Java, era o nebunie cu fine tuningul serverelor. Paradigma s-a schimbat. Avem POD-uri și restartăm calculatoare când e nevoie. Mai bine punem cinci instanțe decât să analizăm codul ca să vedem unde sunt problemele de performanță.
Radu Moldovan: Fine tuningul s-a mutat în ecosistemul unde va lucra JVM-ul. Momentan, nu are sens să pui limite în calea unui JVM, deoarece nu știi unde vei rula. Are mai mult sens să faci reglaje acolo unde vei avea toată aplicația. Dai resurse Dockerului. Aplicația trebuie să fie capabilă să ocupe tot ce are la dispoziție, dar cine dictează limitele nu este aplicația în sine, ci containerul în care tu alegi să rulezi o aplicație.
Când scrii cod, cât de mult te gândești la performanță?
Radu Moldovan: Prima preocupare, mai ales în outsourcing este să-l faci să meargă. Uneori, poți face optimizări premature care, în timp, să se întoarcă împotriva ta. Clientul nu este dispus să stea după tine o lună de zile, deoarece tu ai făcut codul optim posibil care, la un moment dat, nu mai este aplicabil.
Adelina Burnete: Aș mai adăuga că nu scriem doar cod peste cod peste cod, ci ținem cont și de anumite procese.
Radu Moldovan: Într-adevăr, unele procese devin instinctive cu vârsta. Decurg de la sine și le faci fără să te gândești. Nu concatenezi stringuri într-un anume fel, deoarece știi că ai fost urecheat ca junior. Toate decurg din a-ți murdări mâinile cât mai mult posibil.
Ca să mă asigur că ceva merge, de multe ori îmi fac un prototip rapid. Voi mai faceți așa ceva?
Adelina Burnete: Dacă timpul îmi permite, abordez și varianta aceasta, deoarece este mult mai ușor să integrezi o funcționalitate despre care ai deja habar. Evident, lucrez doar la nivel local.
Folosești tooluri AI, precum Copilot? Cât de mult te ajută?
Adelina Burnete: Da, am folosit Code Whisperer de la AWS care te ajută cu codul și cu infrastructura. Practic, am folosit acest Code Whisperer ca să îmi ridic toată infrastructura, ca să fac deployment, dar eu mi-am scris codul. Folosind acest AI, am reușit să fac totul într-un timp foarte scurt. Da, este adevărat că un AI îți va genera și cod, dar trebuie să poți verifica ce s-a generat acolo. Aș alege StackOverflow în locul codului generat de AI.
Darius, voi, cei din generațiile noi, ați sărit niște etape. E un lucru bun, deoarece sunteți mult mai practici, dar, pe de altă parte, cât de în profunzime înțelegeți lucrurile pe care le faceți?
Darius Haș: Încerc să nu iau lucrurile ca atare și să le folosesc de-a gata. Eu mereu încerc să înțeleg lucrurile în profunzime, deoarece, altfel, nu investesc în viitorul meu. Mă joc cu multe tehnologii. Nu am programat niciodată în domeniul mobile, dar am început să învăț Flutter. Îmi doresc să fac niște aplicații native de mobile. Partea de AI este total nouă pentru mine și încerc să asimilez cât mai mult. Câtă libertate ai în Flutter?
Darius Haș: Soluțiile native, așa cum este și Flutter, îți dau un boost ca să începi, dar pe termen lung este mai util să folosești o platformă integrată cum este Swift de la AWS.
Ne limitează frameworkurile pe care le folosim?
Radu Moldovan: Este o provocare să alegi frameworkul potrivit. Sunt proiecte care au eșuat după un an de folosit un framework. Proiectul a trebuit transformat, iar transformarea a fost una anevoioasă. Cel mai bun indicator când alegi un framework este cât de mare și coezivă este comunitatea, cât de mult feedback găsești la o simplă căutare. Uneori, sunt atât de multe disensiuni în rândul oamenilor care trebuie să decidă cum va evolua un framework, încât se produce o bifurcație, iar din noile opțiuni timpul și comunitatea arată ce va supraviețui.
În școală, am învățat foarte multe despre algoritmi și metode. Folosești așa ceva în activitatea de zi cu zi?
Radu Moldovan: Foarte puțin. Am avut de câteva ori ocazia să mă lovesc de probleme matematice, după zece ani în care nu mai întâlnisem o astfel de problemă. A fost o provocare care mi-a dat satisfacție în cele din urmă. Trebuia să validez o bază de date de tip navigator cu foarte multe constrângeri. Trebuia să fac un graph pe Europa cu mai multe porțiuni de drumuri care nu erau legate la mai mult de 2-3-5 sectoare. Nu era algoritmică dusă la extrem, dar erau constrângeri care dictau ce fel de hardware să folosești.
Adelina Burnete: Proiectele la care am lucrat nu au avut nevoie de probleme matematice sau algoritmi, dar mi-ar plăcea să mă lovesc de o astfel de situație, deoarece ar fi ceva diferit față de ceea ce facem toată ziua.
Ce cărți de programare citiți și de ce?
Adelina Burnete: Îmi place să citesc cărți de specialitate ori de câte ori permite timpul. Recent, mi-am comandat de pe Amazon cele de clean code, de bune practici în Java, iar acum mă atrage foarte mult partea de AWS.
Faceți code review și ce tipuri de probleme găsiți?
Adelina Burnete: Da, găsim probleme și totul depinde de cât de mare este acel review și cât timp îți aloci. Depinde, de asemenea, de colegul cu care lucrez. Am avut recent o situație în care clientul a dorit să își aducă developerii săi, dar erau foarte multe traininguri de făcut cu ei. Mai mult ne-au încurcat și nu puteam avea încredere că acel cod va fi dus în producție fără să fie verificat.
Darius Haș: Nu am avut de-a face cu foarte multă algoritmică, dar mi-aș dori, deoarece acolo e frumusețea. Citesc multe cărți tehnice. Ultima carte pe care am citit-o și care m-a inspirat să scriu articolul este Reactive Programming in Spring. Am mai citit o carte suport pentru certificarea Java. Am avut nevoie să o citesc deoarece nu e ușoară certificarea. Eu nu sunt o persoană atentă la detalii și cumva certificarea aici încearcă să te prindă.
Cum vezi viitorul programării?
Radu Moldovan: Aș vrea să spun că văd stabilitate, dar, în momentul de față, lumea e foarte orientată înspre fast forward. Hai să mai scoatem încă o variantă de React. Va fi din ce în ce mai greu să alegi direcția bună a unui proiect. Vom avea din ce în ce mai multe frameworkuri din care să alegem fără a fi siguri că este cea mai bună soluție. Estimez că peste vreo cinci ani, această provocare va fi una reală.
Adelina Burnete: Cred că ne vom folosi din ce în ce mai mult de AI-ul care va deveni din ce în ce mai avansat.
Darius Haș: Sper să mă prindă pensia tot pe aici. Toolurile de AI scot toată distracția din joc.