În ultimii ani, inteligența artificială (IA) a devenit unul dintre subiectele cele mai discutate din industria software. De cele mai multe ori, conversația este orientată către automatizare, productivitate sau generarea de cod. Mult mai rar însă discutăm despre un aspect fundamental, și anume cel legat de rolul pe care IA îl poate avea în gestionarea complexității proiectelor software.
Pentru a înțelege acest impact este necesar să pornim de la o distincție esențială, dar adesea ignorată în practică: diferența dintre complicat și complex.
Folosim frecvent, în conversațiile de zi cu zi, termeni precum complicat sau complex, de multe ori ca și cum ar însemna același lucru. În realitate însă diferența dintre cele două concepte este una fundamentală. Mai mult decât atât, modul în care interpretăm această diferență influențează direct deciziile pe care le luăm în proiecte: modul în care planificăm, estimăm, organizăm echipele sau alegem tehnologiile.
Pentru a înțelege mai bine această diferență putem apela la trei perspective cunoscute.
Ralph Stacey propune o matrice în care două dimensiuni, stabilitatea cerințelor și maturitatea tehnologiei, determină natura unui proiect (Figura 1.a).
Figura 1. a) Matricea Stacey
În zona în care cerințele sunt complete, clare și stabile (chiar dacă una dintre aceste proprietăți nu este întrutotul îndeplinită), iar tehnologia este în general cunoscută, ne aflăm într-un context complicat. Într-un astfel de caz, problema poate fi dificilă, dar este, în esență, rezolvabilă prin analiză, expertiză și planificare.
Dar pe măsură ce ne deplasăm în această matrice, lucrurile încep să se schimbe. Dacă cerințele devin instabile (de exemplu, pentru că produsul este nou sau pentru că piața se schimbă) și/sau dacă tehnologia este imatură (de exemplu, utilizăm un framework nou sau o arhitectură experimentală) intrăm treptat în zona complexă.
În acest context, nu mai putem vorbi despre o planificare predictivă în sens clasic. Chiar dacă avem expertiză, aceasta nu este suficientă pentru a anticipa toate problemele care vor apărea. Cu alte cuvinte, în sistemele complicate putem reduce incertitudinea prin analiză. În sistemele complexe, incertitudinea este structurală și nu poate fi eliminată.
Dave Snowden abordează problema dintr-o altă perspectivă, poate și mai subtilă: relația dintre cauză și efect (Figura 1.b).
b) Frameworkul Cynefin
În sistemele complicate această relație există și este, în principiu, identificabilă. Poate nu este evidentă pentru toată lumea, dar un expert o poate identifica și explica. Dacă apare o problemă într-un sistem complicat, putem analiza situația și găsi cauza.
Figura 2.
În sistemele complexe însă lucrurile stau diferit. Aici relația cauză - efect nu este evidentă în avans și, de multe ori, nu este nici măcar stabilă. Putem înțelege ce s-a întâmplat doar retrospectiv, după ce analizăm efectele. Mai mult, aceeași acțiune poate produce rezultate diferite în contexte sau momente de timp diferite. Aceasta se întâmplă din cauza numărului mare de interdependențe și a faptului că sistemul evoluează continuu.
Nassim Nicholas Taleb oferă probabil cea mai intuitivă și mai pragmatică explicație atunci când spune că tot ceea ce seamănă cu o mașină de spălat este complicat, iar tot ceea ce seamănă cu o pisică este complex. O mașină de spălat poate avea mii de componente, dar comportamentul ei este predictibil. O pisică însă este imprevizibilă, adaptivă și reacționează diferit în funcție de context.
Dacă aplicăm această analogie în industria IT, apare o observație interesantă.
Hardware-ul, în ciuda evoluției sale spectaculoase (cu o creștere exponențială a anumitor performanțe, conform legii lui Moore), rămâne în esență un sistem complicat. În schimb, software-ul este profund complex. El evoluează într-un context dominat de incertitudine, schimbări de cerințe, tehnologii noi și interdependențe numeroase între componente și echipe.
Această complexitate este una dintre principalele provocări ale proiectelor software moderne. În mod interesant, apariția instrumentelor de inteligență artificială ar putea schimba într-o anumită măsură modul în care gestionăm această complexitate.
Un sistem complicat devine mai complicat într-un mod relativ liniar. Dacă adăugăm componente într-un mecanism, nivelul de "complicățenie" crește, dar într-un mod predictibil.
În sistemele complexe însă lucrurile stau diferit. Interdependențele dintre componente cresc într-un mod aproape exponențial. Pe măsură ce o aplicație software devine mai mare, numărul interacțiunilor dintre module, servicii sau echipe crește într-un ritm care poate depăși capacitatea noastră de a le controla.
Foarte probabil că orice echipă care a lucrat pe un produs software matur a avut acea senzație că sistemul devine "prea complex pentru a fi înțeles". În mod tradițional, încercăm să controlăm această situație prin arhitecturi mai riguroase, șabloane de proiectare specifice, procese sau reguli de dezvoltare. Manifestul Agile are chiar un principiu special care se referă la importanța implementării de soluții cât mai simple pentru a păstra un nivel ridicat de agilitate.
Inteligența artificială aduce însă un avantaj interesant: capacitatea de a identifica rapid tipare în sisteme complexe. De fapt exact asta fac modelele IA: descoperă șabloane în volume mari de informații. În contextul dezvoltării software acest lucru se poate traduce prin:
detectarea dependențelor problematice dintre module;
identificarea automată a defectelor;
sugestii de refactorizare;
Cu alte cuvinte, AI poate deveni un instrument care ne ajută să observăm, să înțelegem și să controlăm mai bine sisteme software de o complexitate ridicată.
Industria software, și nu numai, a trecut în ultimele decenii printr-o evoluție interesantă în ceea ce privește profilul profesional al angajaților. Inițial companiile căutau specialiști foarte buni într-un domeniu îngust — așa-numiții I-shaped professionals. Ulterior, a apărut conceptul de T-shaped professionals: oameni cu o specializare principală, dar și cu o bună înțelegere a domeniilor conexe.
Mai recente, se vorbește despre comb-shaped professionals, persoane care au mai multe domenii de competență relativ solide.
Inteligența artificială ar putea accelera această evoluție. Dacă instrumentele AI pot acoperi o parte din expertiza foarte specializată — generarea de cod, analiza securității sau optimizările tehnice — rolul oamenilor se poate muta mai mult spre înțelegerea ansamblului. Este posibil ca în viitor profilul profesional dominant să fie cel al unui generalist capabil să înțeleagă sistemul în ansamblu, folosind IA ca suport pentru expertiza punctuală.
Într-un fel, inteligența artificială ar putea deveni "specialistul" dintr-o echipă formată exclusiv din "generaliști".
O altă consecință posibilă a IA este legată de dimensiunea echipelor. Mult timp literatura despre dezvoltarea software a considerat că dimensiunea optimă a unei echipe este de aproximativ 7 ± 2 persoane.
Această dimensiune reflectă atât nevoia de multi-disciplinaritate (programatori, testeri, designeri, specialiști DevOps, analiști etc.), cât și limita până la care o echipă ce se auto-organizează poate funcționa eficient fără riscul de a deveni haotică.
În ultimii ani însă instrumentele IA au început să preia o parte din aceste specializări sau expertize astfel încât echipele să devină mai mici fără a pierde capacitatea de auto-organizare și de a livra funcționalități complete.
Henrik Kniberg sugerează că dimensiunea optimă a unei echipe depinde în mare măsură de numărul de competențe necesare pentru a livra valoare. Dacă inteligența artificială poate acoperi o parte din aceste competențe, nu este exclus ca în viitor să vedem echipe de proiect formate din sub-echipe multidiciplinare de 3 ± 1 persoane.
Proiectele software sunt sisteme complexe, caracterizate de incertitudine, variabilitate și interdependențe numeroase.
Inteligența artificială nu elimină această complexitate. În schimb, ar putea contribui la gestionarea ei în trei moduri importante:
ajută la identificarea tiparelor în sisteme complexe;
schimbă modul în care definim expertiza profesională;
Probabil că în anii următori cea mai importantă contribuție a inteligenței artificiale în dezvoltarea software nu va fi generarea de cod, ci capacitatea de a ne ajuta să navigăm mai eficient complexitatea sistemelor pe care le construim.
David C. Brock, Gordon E. Moore, Understanding Moore's Law: Four Decades of Innovation, Chemical Heritage Foundation, 2006
Henrik Kniberg, Generative AI in a Nutshell: How to Survive and Thrive in the Age of AI, 2025
Dave Snowden, Cynefin - Weaving Sense-Making into the Fabric of Our World, Cognitive Edge, 2020
Ralph D. Stacey, Strategic Management and Organisational Dynamics, Financial Times Management, 1999
de Ovidiu Mățan
de Laura Dioşan , Andrei Olar , Mózes Császár