În 2011 Marc Andreessen, co-fondatorul firmei de investiții Andreessen Horowitz, scria un articol intitulat "Why Software Is Eating The World", în care descria modul în care companiile emergente axate pe software înghițeau industrii întregi și perturbau businessuri dominante anterior. Doar o decadă mai târziu, ne trezim cu "AI Is Eating The World", într-o desfășurare de evenimente oarecum similară care ne-a luat prin surprindere pe majoritatea.
Inteligența artificială (AI) a avut un impact major în diverse industrii, iar domeniul ingineriei software nu face excepție. Din contră, AI-ul va fi omniprezent în dezvoltarea de software în următorii ani, poate chiar mai rapid decât ne putem imagina astăzi.
AI are potențialul de a revoluționa modul în care software-ul este dezvoltat, testat și întreținut, aducând un nou nivel de automatizare și eficiență, nemaiîntâlnit în acest domeniu. Însă, odată cu această transformare, apar noi provocări și oportunități, la care toți specialiștii din software development trebuie să se adapteze (mai repede decât ne imaginăm).
În primul rând, să enumerăm câteva din avantajele pe care AI-ul le aduce industriei de software development, apoi să conștientizăm limitările AI din prezent și, la final, să reflectăm asupra impactului AI în "software craftsmanship" din prezent și viitor.
Unul dintre cele mai semnificative efecte ale AI asupra ingineriei software este automatizarea sarcinilor repetitive și/sau de rutină. Aceste sarcini sunt esențiale pentru procesul de dezvoltare, dar pot fi consumatoare de timp și plictisitoare. Exemple de acest tip : refactorizarea codului, remedierea erorilor și testarea. Folosind AI, programatorii pot automatiza aceste sarcini, câștigând mai mult timp pentru a se concentra pe alte sarcini, ideal mai strategice și creative. Rezultă astfel o productivitate mai mare, un software de calitate superioară și un timp redus de livrare.
Un alt impact al AI este capacitatea de a automatiza funcții specifice cu intrări și ieșiri predefinite și precise. De exemplu, AI poate fi folosită pentru a genera automat cod pe baza unor cerințe clare și complete, eliberând programatorii de nevoia de a scrie cod repetitiv de la zero. Această abordare duce la economisire de timp și reduce riscul de erori, rezultând o calitate mai bună a software-ului.
Utilizarea AI poate aduce mai multă inovare. Prin automatizarea taskurilor de rutină și repetitive, programatorii dispun de mai mult timp și energie pentru a se concentra asupra dezvoltării de soluții noi și creative, ceea ce duce la creșterea inovației și la furnizarea de soluții superioare.
Realitatea este că AI are (încă) (multe) limitări. În primul rând, este necesar factorul uman, deoarece doar acesta, înțelegând modul în care se rezolvă probleme specifice pentru nevoile de business, poate oferi contextul și nuanțele importante pentru AI. Deși AI poate automatiza rezolvarea cerințelor de rutină și repetitive, acestuia îi lipsește creativitatea și abilitățile de gândire critică ale unui specialist IT uman.
Nu am ajuns (încă?) în stadiul în care un manager de produs, fără un background tehnic puternic, să poată comunica cu AI pentru a crea un produs complex și complet funcțional. Există multe modalități de a atinge aceleași obiective și doar o persoană care înțelege problemele și opțiunile tehnice poate combina aceste aspecte pentru a satisface eficient cerințele de business.
AI este capabilă să îndeplinească doar sarcini pentru care a fost antrenată și este limitată de datele și algoritmii care i-au fost furnizați. Nu poate gândi critic și creativ. Nu poate înțelege contextul și complexitatea problemelor noi de business din lumea reală.
Indiferent dacă suntem pregătiți sau nu, AI este deja prezentă în industria software și va continua să evolueze într-un mod accelerat și exponențial. Prin urmare, este crucial ca atât programatorii, cât și toți ceilalți membri ai unei echipe tradiționale de dezvoltare software, să-și extindă abilitățile și expertiza în domeniul AI. Este necesar ca fiecare dintre noi să ne dezvoltăm gândirea critică și abilitățile de rezolvare a problemelor, deoarece capacitatea de a lucra eficient cu AI va deveni tot mai căutată la nivel global.
Programatorii seniori, oamenii de produs și cei de business vor trebui să dobândească o înțelegere mai profundă a modului în care funcționează AI și a limitărilor prezente. Cu toții vor trebui să fie capabili să comunice eficient cu noile instrumente AI, să le configureze, să le personalizeze și să se asigure că se aliniază cu nevoile de business. Pe lângă acestea, trebuie să fie în măsură să interpreteze și să analizeze rezultatele produse de AI, să ia decizii informate pe baza acestor rezultate și să integreze toate aceste aspecte cu tehnologia care evoluează rapid.
Progresul AI aduce cu sine noi provocări și oportunități. Automatizarea operațiilor repetitive și a funcțiilor specifice înseamnă că bariera de intrare în domeniu va fi tot mai ridicată. Acest aspect va genera o cerere crescută pentru specialiști cu experiență și abilități extinse. Se va pune accent tot mai mult pe valoarea individuală, pe experiența și creativitatea necesare pentru a dezvolta soluții noi și inovatoare care pot proveni doar din intuiția și raționamentul uman.
Să aruncăm o privire la o zi obișnuită din viața profesională a unui programator / inginer software. Sarcinile de zi cu zi pot varia în funcție de individ și de companie, dar există câteva activități comune:
Verificare și răspundere la e-mailuri: inginerii software își încep adesea ziua verificând și răspunzând la e-mailuri. Putem folosi AI pentru a sorta și prioritiza e-mailurile sau chiar pentru a genera răspunsuri. Cu toate acestea, trebuie să verificăm și să aprobăm răspunsurile finale înainte de a le trimite.
Code review: programatorii petrec o cantitate semnificativă de timp revizuind codul scris de ei înșiși sau de colegii lor. Această activitate include revizuirea pool requesturilor, furnizarea de feedback și verificarea respectării standardelor de codare. AI poate fi utilizată pentru analiza codului și asigurarea calității, dar, la sfârșitul procesului, programatorul este cel care revizuiește rezultatul final și ia deciziile definitive.
Meetingurile: inginerii software participă periodic la ședințe cu echipa, întâlniri de proiect/ produs sau întâlniri cu clienții. Acestea se pot desfășura fie în persoană, fie online, acoperind subiecte precum statusul proiectului, colaborarea în echipă și rezolvarea problemelor. AI nu poate participa în mod direct la întâlniri, dar poate fi folosită pentru a programa, a reaminti și a genera rezultatele întâlnirilor sau pentru a sumariza, conform preferințelor individuale, minutele ședințelor.
Documentație: programatorii petrec timp documentându-și codul, redactând rapoarte tehnice sau actualizând documentația proiectului. Putem utiliza AI pentru generarea și rezumarea documentelor. Cu toate acestea, programatorul trebuie să examineze și să aprobe documentația finală.
Este dificil să stabilim o cifră exactă pentru reducerea timpului acordat "sarcinilor secundare" menționate mai sus, deoarece totul variază considerabil în funcție de persoană și companie. Cu toate acestea, putem estima că utilizarea AI ar putea duce la o scădere cu 25-50% a timpului alocat pentru astfel de sarcini. De exemplu, un programator care își petrece 60% din timp hands-on cu sarcini care aduc valoare pentru produs și companie, 35% cu "sarcini secundare" și 5% cu inovare, ar putea să-și sporească timpul dedicat inovării la aproximativ 15% - 25%, cu ajutorul AI. Acest lucru ar însemna o reducere la jumătate a timpului petrecut cu "sarcini secundare" și o creștere de trei până la de cinci ori a timpului petrecut pe inovare.
Deși lucrăm în industria software și suntem expuși constant la tehnologii și instrumente noi, care evoluează într-un ritm accelerat, suntem reticenți adesea în fața schimbărilor necesare. Putem căuta inspirație într-o lucrare veche, "Arta războiului" de Sun Tzu, care ne învață să ne construim o abordare în trei pași în fața oricărui "inamic" redutabil:
Cunoaște-ți adversarul: să evaluăm AI cu atenție, să depunem efort constant pentru a descoperi și analiza toate datele relevante, ca apoi să le putem folosi în decizii informate.
Alege-ți bătăliile: să avem răbdare, să reflectăm ce întrebări ar trebui să ne adresăm și ce aspecte ar trebui să abordăm astăzi pentru a depăși acest status quo marcat de AI.
AI este deja o realitate în industria software. Este momentul să ne perfecționăm și să evoluăm, altfel riscăm să fim depășiți (chiar dacă poate părea paradoxal).
Cel mai bun mod de a ne pregăti pentru un viitor în care "AI va înghiți lumea", unul care se apropie vertiginos, este să rămânem conectați la evoluțiile rapide din domeniu și să ne "murdărim mâinile" cu cât mai multă experiență pe instrumentele și tehnologiile noi.
În doar câteva luni, au apărut tooluri noi, direct integrate cu cele mai utilizate suite software, care pot explica bucăți de cod, pot scrie cod, pot detecta și corecta erori, pot genera teste unitare și multe altele. Toate acestea au implicații uriașe pentru industria IT și pentru noi toți care activăm în ea.
Important este că putem deveni mai eficienți și mai creativi și, mai ales, putem alege direcția în care dorim să evoluăm.