Software craftsmanship-ul continuă să existe și într-o nouă era în care codul poate fi generat și de AI. Ce s-a schimbat în programare, ce unelte au apărut și ce se întâmplă cu cei ce intră acum pe câmpul muncii sunt câteva din întrebările la care au răspuns invitații noștri:
Denis Salanța - Head of Communities @ CodeCrafters by BT,
Andrei Marinoiu - Project Delivery Manager @ CodeCrafters by BT,
Anamaria Androne - Head of User Experience @ CodeCrafters by BT,
Ovidiu Mățan: Vă invit să vă faceți o scurtă introducere
Alexandru Cioflică: Sunt Senior Staff Engineer la Betfair Romania Development. Lucrez la brandul FanDuel din SUA. Lucrez în IT din clasa a X-a. Cei mai mulți dintre noi, cei de aici, am intrat în IT din pasiune.
Andrei Marinoiu: Sunt Delivery Manager în CodeCrafters by BT. Lucrez în IT din 2011, momentan pe proiecte din FinTech-Banking. Am trecut prin E-commerce, produs, de toate.
Anamaria Androne: Sunt Head of UX la CodeCrafters. Lucrez în domeniu de 10 ani, iar în domeniul bancar din 2020.
Denis Salanța:Sunt Head of Communities la CodeCrafters. Lucrez în domeniu din 2007. În CodeCrafters, responsabilitatea mea se împarte între comunitățile de development, QA, UX. Ne asigurăm că oferim consistență în cadrul fiecărei comunități. Anul acesta, conduc și o inițiativă de AI.
Ce înseamnă Software Craftsmanship pentru voi?
Denis Salanța: Pentru mine înseamnă să mă pot uita peste 5-6 luni la codul scris azi și să fiu mândru de ceea ce am scris acolo. Este o investiție pentru viitor, un cod ușor de citit și ușor de corectat. Înseamnă a fi exigent cu codul tău, astfel încât dacă acesta ajunge pe o mașină, această mașină să poată pune frână când apeși o pedală. Implică o mare responsabilitate.
Anamaria Androne: Pentru mine înseamnă a crea un produs care realmente răspunde nevoilor utilizatorilor, nu doar constrângerilor tehnice sau tendințelor. Înseamnă a gândi corect un produs, a bifa bunele practici în manieră de usability, dar și a face produsul potrivit pentru contextul potrivit. Ne ghidăm după principii, dar trebuie să ținem cont de scenarii specifice.
Andrei Marinoiu: Eu doresc să dau un răspuns din trei perspective. Prima ar fi perspectiva de business care are ROI și costuri optimizate. A doua ar fi perspectiva de UX, de interacțiune cu utilizatorii. A treia ar fi perspectiva echipei care are timp să livreze cod de calitate și să refactorizeze. La nivelul ierbii, înseamnă că azi sunt mai bun decât ieri, dar sunt mai slab decât voi fi mâine. Are legătură cu abilitatea de a învăța continuu. E nevoie de conlucrarea celor trei factori: businessul, programatorul, utilizatorul final. Fiecare dintre aceștia trebuie să fie mulțumiți că scopurile lor au fost atinse.
Alexandru Cioflică: Colegii au sintetizat bine situația. Într-o firmă mare, nu vei putea schimba totul. Este important să vedem ce componente pot fi schimbate și evaluate corect. Este vorba de cod ce poate fi actualizat și de cod pentru care businessul nu vede valoarea în a fi refactorizat. Pe partea de tooling, trebuie să vedem dacă ce e la modă merită folosit. De exemplu, sunt tehnologii AI cu care am început să lucrăm anul trecut, cu care încă anul acesta încă nu ne-am îndeplinit obiectivul, dar există o mare diferență între ce știam la început și ce știm acum. Trebuie să fim la curent cu noile tehnologii, dar trebui să fii matur pentru a decide echilibrul corect.
Ce este important să știi?
Andrei Marinoiu: Cred că este foarte important să ai bazele. Trebuie să poți explora ce este pe piață, pentru a evalua apoi ce se potrivește mai bine în contextul dat.
Anamaria Androne: La nivel de tooluri, dacă vrei să îți faci meseria cât mai bine, evident că vei opta pentru acelea care îți rezolvă cel mai bine problemele.
Ai un exemplu de proiect de care ești mândră?
Anamaria Androne: A fost un proiect care nu a mers mai departe, dar am fost mândră de perioada premergătoare când am generat un POC la o problemă dificilă și când am aplicat niște pași din procesul de design care, în mod normal nu se aplică, din lipsă de timp și resurse. E o bună practică să iterezi procesele și să devii mai bun la ceea ce faci.
Denis Salanța: M-am gândit acum la un aspect de software craftsmanship care nu ține de calitatea codului, ci de bucuria cu care faci un anumit lucru. În facultate, am avut un curs unde trebuia să convertesc foarte mult în baza 2, în baza 10, în hexa. Am făcut un mic program care mă ajuta la asta, deși erau produse pe piață. Era contribuția mea.
Anamaria Androne: Este bine să ai chestiile tale, dar este bine să nu te atașezi de chestiile tale.
Ați avut juniori în echipă? Dacă da, cum ați reușit să îl creșteți?
Denis Salanța: Da. Am fost acolo pentru ei în întrebările pe care le pot avea. Am fost deschis și abordabil. Ajută exemplul personal, etica muncii.
Anamaria Androne: Este foarte important să poți să fii alături de oameni, dar este la fel de important să fii alături de ei într-un mod de care ei chiar au nevoie. Modul cum ne închipuim noi că vede lucrurile un junior nu este modul în care el chiar le vede. În comunitatea sau departamentul de UX, avem persoane care sunt din toate domeniile, de la nutriție la arhitectură sau psihologie. E nebunesc. Mulți s-au convertit, profesional vorbind. Contează foarte mult cum văd ei lucrurile.
Andrei Marinoiu: Văzusem un interviu cu Ilie Bolojan care zicea că este important să creăm contextul în care oamenii pot să crească. Fiecare trebuie să știe, în primul rând, unde dorește să ajungă, iar apoi să aibă un plan personalizat.
Ce sfat ai da unui junior pentru a deveni un programator mai bun?
Alexandru Cioflică: Să preia de la seniori sarcini de lucru care să îi provoace. Dacă toate taskurile ajung la senior, seniorul intră în burnout, mai ales dacă este pasionat. Este bine când seniorul transmite informația de sus în jos, încurajându-i astfel pe toți să se dezvolte. Seniorul trebuie să anticipe unde va avea juniorul nevoie de ajutor. Foarte mulți programatori sunt axați exclusiv pe taskurile lor și evită să facă ceva mai provocator pentru a crește, ieșind din zona de confort.
Andrei Marinoiu: Un junior ar trebui să aibă o foame de cunoaștere și de înțelegere. Ar trebui să se întrebe de ce face ceea ce face. Dacă înțelegi de unde vine un buton, ți-e mai ușor să dai variante și alternative.
Există Software Craftsmanship la nivel de Vibe Coding? Dacă da, ne puteți da un exemplu?
Denis Salanța: Vorbeam cu colegii de cum este să fii în flow, într-un flow de a scrie cod. Vibe Coding poate fi gândit și folosind asistenți AI sau Copilot cu scopul de a livra cod, dar fiind tot in the zone. Îmi ia timp să scriu un prompt, dar am primit ceea ce am cerut, dar, apoi, rafinând rezultatul, pot scrie următorul prompt. Uneori se strică imersiunea, deoarece pică testele sau ai atins limita de utilizare a Copilot.
Nu mă refer la vibe-ul de a fi creator, ci la calitatea procesului.
Denis Salanța: Toolurile cu AI ajută arhitecții sau programatorii seniori să scrie cod, aderând la standardele de calitate ale firmei sau ale procesului. Este un efort inițial, dar cred că se poate ajunge la un set de instrucțiuni în care să spunem promptului cum să genereze cod. Oricum, tot se vor găsi juniori care poate să nu respect niște instrucțiuni, iar pe aceștia îi putem prinde la partea de pull request.
Sunt două aspecte care ghidează Software Craftsmanship. Sunt aspect similare cu ceea ce face un tâmplar sau un bucătar sushi. Una este că folosesc aceleași unelte zeci de ani și alta este când se lucrează singur. Cum vedeți tensiunea aceasta în programare?
Alexandru Cioflică: Prin definiție, în IT nu lucrezi individual. Lucrăm în echipe, iar craftsmanshipul este creat la nivel de comunitate.
Denis Salanța: Craftsmanship vine de la ideea de bresle unde se foloseau aceleași unelte și unde se creșteau unii pe alții. La nivel de Vibe Coding, să luăm în considerare și scenariile în care vom avea echipe în care oamenii vor lucra cot la cot cu agenții AI.
Andrei Marinoiu: Depinde cum ne uităm. Realitatea este foarte nuanțată. Ce facem cu cei care lucrează remote sau de acasă? Fac parte dintr-o echipă virtuală, dar nu mai au acel contact. Unii, deși lucrează într-o echipă, lucrează, de fapt, singuri.
(întrebare din public): Aș dori să lărgesc perspectiva și să vă vorbesc despre problema ecosistemului. Doresc să vă dau două exemple. Primul exemplu este Murano, în Italia, care în 1500-1600 făceau mulți bani și aveau nevoie de meșteri sticlari pentru decorarea palatelor. Au adus meșteri sticlari din toată lumea. Murano a devenit o mare fabrică. Era o poluare gigantică. Au fost toți mutați pe o insulă. Aflați acolo, au început să fure unii de la alții tehnici, metode. Au dus foarte sus nivelul de realizare a sticlăriei prin colaborare. Un exemplu mai recent este cu oamenii de știință din Sillicon Valley care, până nu demult, publicau articole. Când a început pandemia au constatat că, dacă costul vieții este mai mic în Texas, se vor muta în Texas. Rezultatele lor academice, rankingul lor, după câțiva ani, a fost mult mai jos, deoarece teritoriul în care trăiau și respirau zilnic avea standarde mai mici. Mediul în care ești, ce vorbesc colegii tăi de facultate, ce se discută la cafenea, adică ecosistemul, totul influențează ceea ce producem și ce facem.
Trăim într-o lume în care toolurile care erau destinate specialiștilor sunt acum disponibile la scară largă, tuturor. Acest lucru poate crește oportunitățile, dar și riscurile. Citeam despre situația unui institut de cercetare din Zürich unde s-au creat niște boți care au creat conturi false de Reddit. Prin acele conturi false, au reușit să schimbe comportamentele și opiniile unor utilizatori umani. Ce putem face pentru a anticipa astfel de pericole? Aveți alte exemple de utilizare mai puțin etică a instrumentelor noastre?
Andrei Marinoiu: Pentru asta e nevoie de inteligență emoțională. Trebuie să înveți ce este binele și ce este răul.
Alexandru Cioflică: Tehnologia poate reprezenta un pericol. Am avut o întâlnire cu profesorii de la Politehnică săptămâna trecută pe această temă. Anthropic a mers pe ideea de etică la antrenarea modelelor. Grok avea probleme la nivel de etică. Trebuie să impunem reguli și să legiferăm. Este rolul nostru de a duce informația asta în comunitățile noastre, în firmele noastre.
Denis Salanța: Sunt domenii intens legiferate. Avea Uncle Bob un talk acum ceva timp despre conduita programatorilor. Medicii trebuie să dea un test pentru a profesa, iar testul trebuie recunoscut de o școală acreditată unde studiezi mult. Pentru noi e ușor. Ne reconvertim profesional și începem să scriem cod. Este important ca noi să transmitem etica de muncă mai departe.
Anamaria Androne: Tehnologia umană avansează destul de rapid, dar natura umană nu sau foarte încet. Cu un cuțit poți tăia pâinea sau poți omorî oamenii.
Va mai exista Software Craftsmanship având în vedere că AI-ul ne va oferi date din ce în ce mai ușor? Suntem noi ultima generație de programatori?
Denis Salanța: Un studiu realizat de ITM-ul american a subliniat că a scăzut foarte mult numărul de juniori angajați. Mă aștept să mai rămână puțin de lucru și pentru noi.
Anamaria Androne: Nu vom fi ultimii, dar vom fi ultimii de acest fel, deoarece meseria aceasta evoluează.
Andrei Marinoiu: Natura muncii va evolua. Va trebui să fim mai creativi. Era și o glumă care zicea că, până când vom putea da cerințele de lucru către un AI suficient de bine, suntem în siguranță.
Alexandru Cioflică: Deja avem un job nou, cel de Prompt Engineer. Nu știm cât va dura, dar acesta există.