TSM - De la Homo Sapiens la software: Îmbrățișarea schimbării

Alexandru Savu - Engineering Director @ Cognizant


În acest articol vă propunem să călătorim prin câteva dintre cele mai memorabile momente din istoria IT, încercând, în același timp, să evidențiem creativitatea umană și valoarea adăugată de-a lungul anilor. Pentru o perspectivă asupra contribuției umane, vom folosi doi autori de renume și cărțile lor: The Infinite Game de Simon Sinek și Sapiens de Yuval Harari. În cele din urmă, vom încerca să susținem că viitorul software-ului nu este doar despre tehnologie, ci este despre modul în care colaborăm și lucrăm împreună și, de asemenea, este despre împărtășirea unor pași acționabili pentru dezvoltatorii actuali și viitori.

Pentru a ne da seama de calea noastră viitoare și pentru a răspunde la întrebarea, "Suntem încă piesa centrală a ingineriei sau AI va înlocui dezvoltatorii?", este util să ne uităm înapoi la călătoria noastră IT, începând de la primul compilator până la cloud computing și AI.

Dezvoltarea de software a fost întotdeauna despre automatizare și rezolvarea problemelor dificile, așa că datorită unor pionieri (vezi Alan Turing, John von Neumann) am ajuns într-un punct în care la începutul anilor 1940 aveam deja primele calculatoare programabile.

Figura 1. ENIAC

Următoarea mare descoperire a fost în 1952, când Grace Hopper a creat primul sistem asemănător unui compilator care a tradus codul citibil în limbaj mașină, creând premisele pentru programare. Acest lucru a deschis calea pentru dezvoltarea limbajelor de programare timpurii precum Fortran și COBOL.

După aceea, a existat o perioadă accelerată în anii 1970 și 1980, în care computerul personal a luat ființă odată cu apariția sistemelor de operare care schimbă jocul (Unix și MS-DOS). A fost pentru prima dată în istoria IT-ului când computerele au devenit utile în case și în întreprinderile mici. Introducerea interfețelor grafice de utilizator (GUI) de către Xerox PARC, preluată mai târziu de Apple - Macintosh OS a fost primul produs de succes comercial care a adus o interfață grafică ușor de utilizat pe piața de masă - și Microsoft, a făcut computerele mai ușor de utilizat, ducând la boomul software-ului din anii 1990.

Figura 2. Netscape Navigator, unul dintre primele browsere web

Ascensiunea internetului la sfârșitul secolului 20 a fost o altă schimbare majoră odată cu apariția browserelor web, a motoarelor de căutare și a platformelor de comerț electronic. Noile concepte au schimbat pentru totdeauna modul în care vedem internetul, făcând din dezvoltarea web un domeniu esențial. Această perioadă a văzut, de asemenea, lansarea software-ului open-source, cu proiecte precum Linux și Apache devenind cheia dezvoltării moderne de software.

Pe măsură ce avansăm în secolul 21, dezvoltarea de software a continuat să evolueze rapid. Au apărut mai multe tendințe importante, fiecare bazându-se pe inovațiile din trecut, dar cu implicații mari pentru viitor: Agile și DevOps, Cloud Computing și Microservicii și apariția AI și Machine Learning.

La începutul anilor 2000, metodologiile agile au devenit populare ca răspuns la problemele cu metodele tradiționale de dezvoltare. Accentul pe dezvoltarea iterativă, colaborare și flexibilitate a permis echipelor să se adapteze rapid la schimbările de afaceri sau ale pieței. Acest lucru a dus la creșterea sau nevoia de abilități DevOps, care își propune să apropie dezvoltarea și operațiunile.

DevOps a avut un impact asupra modului în care construim și implementăm software, făcând procese precum testarea și dezvoltarea mai rapide și mai fiabile. Rădăcinile acestor practici datează din primele zile ale dezvoltării de software, unde nevoia de viteză și fiabilitate a condus la crearea de noi instrumente și metode. În urmă cu zece ani, aproape toți dezvoltatorii făceau și sarcini DevOps rulând pipeline-uri sau instrumente CI/CD, în timp ce astăzi aproape toți inginerii DevOps folosesc abilități de dezvoltare, instrumente de bază de zi cu zi.

În The Infinite Game, Simon Sinek vorbește despre importanța adaptabilității într-o lume în schimbare: "Capacitatea de a fi adaptabil și rezilient este capacitatea de a fi puternic și deschis la schimbare". Nu putem fi siguri că Simon s-a gândit la Agile și DevOps în timp ce scria această afirmație, dar exact despre asta sunt Agile și DevOps: să fii gata să te schimbi și să te îmbunătățești continuu.

Tranziția la Cloud computing a fost una dintre cele mai transformatoare și profitabile tendințe în dezvoltarea de software din ultimul deceniu. Trecerea de la serverele on-premise (sau serverele "bare metal", numite astfel de pasionații de tehnologie) la infrastructura bazată pe cloud a fost, de asemenea, un moment propice. Astfel, a fost mai ușor și mai ieftin pentru companii să-și extindă sau să-și reducă aplicațiile în funcție de cererea de afaceri, sezoanele de cumpărături și de tendințele pieței. Servicii precum Amazon Web Services (AWS), Microsoft Azure și Google Cloud sunt acum vitale pentru dezvoltarea de software modern și sigur, devenind cruciale în curriculumul de formare al fiecărui inginer software.

Ideea de cloud computing nu este nouă, ci datează din epoca mainframe-ului, unde sistemele de partajare a timpului permit mai multor utilizatori să acceseze simultan resursele de calcul. În anii 1990, tehnologia de virtualizare a pregătit terenul pentru platformele cloud de astăzi.

Cloud computingul a deschis, de asemenea, calea pentru creșterea sau nevoia de arhitectură tip microservicii. În loc să construiască aplicații monolitice, microserviciile permit dezvoltatorilor să creeze servicii mici, independente, care pot fi implementate și scalate separat.

Cloud computing și microservicii au permis companiilor să continue să crească într-un mod durabil și să se adapteze într-o lume VUCA în schimbare rapidă. Tema principală este cea a ideii lui Sinek de Joc infinit: cei care evoluează vor reuși.

În ultimii ani, AI și Machine Learning au devenit prioritare pentru dezvoltarea modernă de software, făcând posibilă construirea de aplicații inteligente care pot învăța din date, pot face predicții și chiar se pot adapta în timp. AI este folosită în orice, de la procesarea limbajului natural (cum ar fi chatbots) la sisteme de viziune computerizată și recomandări. Putem vedea implementări AI și ML încorporate perfect în companii și în scenarii casnice.

Revoluția AI se bazează pe decenii de cercetare în domenii precum rețelele neuronale. Dezvoltarea de hardware puternic, în ultimii ani, în special GPU-uri a permis antrenarea modelelor complexe pe seturi mari de date, ceea ce a dus la descoperiri în învățarea profundă.

Ideea lui Sinek că "Principalul beneficiu al jocului infinit nu este ceea ce obținem sau câștigăm în cele din urmă, ci modul în care ne îmbunătățim și evoluăm pe parcurs." se confirmă și aici. AI și ML nu sunt doar obiective finale, ci sunt instrumente care ne ajută să îmbunătățim continuu software-ul.

Privind înainte în arta posibilului și a viitorului, mai multe tendințe emergente sunt susceptibile să remodeleze dezvoltarea de software sau cel puțin să o schimbe semnificativ. În timp ce aceste tendințe sunt construite pe inovațiile anterioare, ele reprezintă, de asemenea, noi moduri de gândire care vor cere dezvoltatorilor să schimbe modul în care proiectează, dezvoltă și implementează software.

Având în vedere complexitatea subiectelor vom enumera aici doar domeniile principale, atribuind cititorului sarcina de a investiga mai departe dacă interesul există:

Pe măsură ce ne gândim la viitorul dezvoltării software, este important să ne amintim că tehnologia nu este singurul factor în joc. Nu există tehnologie fără intervenție umană. Sapiens al lui Yuval Harari susține că ceea ce ne diferențiază este capacitatea noastră unică de a coopera în grupuri mari, de a împărtăși idei și de a construi societăți complexe: "Homo sapiens conduce lumea pentru că este singurul animal care poate coopera flexibil în număr mare."

Acest lucru este deosebit de relevant pe măsură ce ritmul schimbărilor tehnologice accelerează. În timp ce instrumente precum AI, calculul cuantic și blockchain au un potențial uriaș, succesul și adoptarea lor vor depinde și de capacitatea noastră de a colabora eficient ca oameni în viitor.

Într-o lume în schimbare rapidă, în care apar în mod constant noi tehnologii, capacitatea de a lucra împreună în mod eficient între discipline, culturi și spații diferite va fi mai importantă ca niciodată. Construirea următoarei generații de sisteme AI sigure, algoritmi cuantici, rețele descentralizate - acestea sunt provocări prea complexe pentru a fi gestionate de orice individ sau echipă mică. Astfel, unitatea și colaborarea eficientă vor fi esențiale.

În această privință, concentrarea lui Harari pe mituri comune și convingeri colective este, de asemenea, relevantă în industria software. Mișcarea open-source, de exemplu, prosperă datorită credinței comune în colaborare și proprietate colectivă, în conformitate cu sentințele lui Harari: "Un număr mare de străini pot coopera cu succes crezând în mituri comune".

Viitorul dezvoltării de software va fi modelat de cei care înțeleg că adevărata noastră forță nu constă în vastitatea setului nostru de instrumente (instrumente AI generative, IDE, pluginuri, frameworkuri), ci în capacitatea noastră de a colabora și de a ne adapta împreună.

Concluzii pentru inginerii software

Ritmul rapid al schimbării înseamnă că abilitățile necesare astăzi ar putea să nu fie aceleași cu cele necesare în viitorul imediat. Acest aspect va avea un impact profund asupra seniorilor experimentați în domeniu, precum și asupra bobocilor care se alătură domeniului IT, deoarece fereastra de relevanță pentru abilități este de până la 2,5 ani[^10]. Va exista un echilibru delicat între lucrul la rezultate, precum și blocarea timpului pentru a fi la curent cu noile tendințe emergente și timpul pentru perfecționare sau recalificare.

Pe baza experienței noastre colective de-a lungul deceniilor de inginerie software la Cognizant România, subliniem următoarele idei pentru oricine dorește să se pregătească pentru viitor:

Nu încetați niciodată să învățați! Având în vedere că schimbarea este omniprezentă, trebuie să ne angajăm să învățăm continuu, fie prin cursuri online, certificări, la curent cu tendințele tehnologice sau experiență practică cu noi.

Fundamente: Noile tehnologii sunt interesante, dar sunt adesea construite pe aceleași principii de bază ale informaticii, deși ascunse de implementarea designului la nivel înalt. O înțelegere solidă a algoritmilor, a structurilor de date și a designului sistemului va fi importantă. Nu treceți cu vederea nici abilitățile umane: storytelling, mindset de consultanță, colaborare eficientă.

Experimentați cu noi tehnologii, dacă este posibil! Nu așteptați ca calculul cuantic sau blockchain să devină mainstream. Începeți să experimentați acum, cel puțin pentru a vă face o idee despre tehnologie. Testați instrumentele, limbajele și cadrele asociate cu aceste tehnologii și gândiți-vă la modul în care s-ar putea aplica proiectelor actuale acum sau în viitorul apropiat, pe baza cerințelor de afaceri sau a îmbunătățirilor potențiale în diferite domenii de datorie tehnologică.

Concentrați-vă pe colaborare! Pe măsură ce dezvoltarea de software devine mai complexă și sporită de instrumentele Gen AI, capacitatea de a colabora eficient cu alte părți interesate (de exemplu: dezvoltatori, cercetători de date, experți în domeniu) va fi din ce în ce mai importantă.

Investiți în următoarea generație! În aceste vremuri accelerate de creștere și inovație, inginerii juniori au o călătorie dificilă în față și sunt vulnerabili să fie lăsați în urmă fără o echipă de sprijin eficientă. Inginerii software și liderii au responsabilitatea de a crea o cultură a inovației, experimentării și învățării continue în cadrul echipelor și organizațiilor lor. În The Infinite Game, Simon Sinek afirmă: "Responsabilitatea conducerii este de a crea un mediu în care ideile mărețe să poată prospera". În cartea sa Sapiens, Yuval Harari subliniază că fundamentele unui astfel de mediu sunt colaborarea și efortul colectiv, coordonate care ne permit să realizăm ceea ce niciun individ nu ar putea realiza singur.

În concluzie, de la primele linii de cod scrise pe cartele perforate până la instrumentele de dezvoltare bazate pe inteligență artificială de astăzi, ne putem aștepta ca ritmul progresului să se accelereze.

Depinde de noi și eforturile noastre comune și de creativitatea colectivă să modelăm viitorul software-ului prin perfecționarea proactivă, recalificarea și pregătirea pentru provocările și oportunitățile viitoare.