Cu toții ne-am întrebat cel puțin o dată cum reușesc liderii industriei IT să se diferențieze de restul companiilor din acest domeniu. Care să fie rețeta succesului și cum putem să o replicăm și în organizația noastră? Odată cu maturizarea industriei sunt publicate și studii tot mai riguroase care demonstrează fără echivoc ce funcționează și ce nu. Acest articol prezintă o sinteză a unor astfel de cercetări, evidențiind ariile în care ar trebui să ne concentrăm eforturile pentru a obține rezultate optime.
Dacă ați citit unul din rapoartele "State of DevOps" sunteți cu siguranță familiari cu clasificarea organizațiilor IT în low-, medium- și high-performers. În cadrul acestui articol, prin "performanță" ne vom referi la capacitatea unei organizații de a oferi soluții software. Astfel în categoria high-performer se încadrează companii ce reușesc să se diferențieze prin abilitatea de a livra soluții cu viteză și calitate ridicată.
Ulterior în completarea rapoartelor "State of DevOps" au fost realizate o serie de studii ce au urmărit să demonstreze științific care sunt factorii care au un impact pozitiv asupra abilității unei organizații de a livra software. Rezultatele cercetării ne oferă indicii solide cu privire la ariile în care ar trebui să ne concentrăm energia.
Transformarea unei organizații este însă întotdeauna o provocare. Ea necesită un efort coordonat ce depășește responsabilitățile unei singure persoane sau granițele unui singur departament. Pentru a ilustra acest fapt, vom trece în revistă câțiva factori care s-au dovedit a fi determinanți pentru organizațiile high-performer. Acești factori, dar mai ales principiile care stau la baza lor, reprezintă o busolă pe drumul spre performanță organizațională.
Putem defini cultura unei organizații ca fiind un set de valori ce este împărtășit de toți membri acesteia. Cultura dictează modul în care se abordează și se soluționează o problemă. În viața de zi cu zi ea se manifestă prin obiceiurile și rutinele pe care oamenii le urmează, conștient sau nu. Studiile demonstrează că o cultură de tip Westrum generativă stă la baza performanței organizațiilor. În acest tip de cultură, valorile de bază sunt colaborarea și comunicarea deschisă.
Cultura este însă un element abstract. Tentativele de ajustare a culturii în mod direct sunt adesea sortite eșecului. Studiile sugerează că este mai indicat să ne concentrăm energia pe aspecte mult mai concrete, care s-au dovedit a avea indirect o influență pozitivă asupra culturii companiei și implicit a performanței organizaționale.
Rezultatele cercetării ne arată că aplicarea practicilor de continuous delivery(CD) are o influență pozitivă asupra culturii organizaționale și rezultă în performanța mai ridicată a echipelor.
În mod aparent paradoxal, echipele care practică CD reușesc să ofere software atât cu viteză mai ridicată cât și cu o calitate mai bună. Acest lucru se datorează probabil, faptului că echipele sunt obligate să eficientizeze procesul de development, punând accent pe testare automatizată și automatizare în general. De fapt, acestea sunt și câteva din practicile CD strâns corelate în rezultatele cercetării cu performanță ridicată, alături de configuration management și shift-left security - Un principiu prin care verificările de securitate sunt aduse mai aproape de echipa de development, astfel încât ele să poată fi executate automat încă din faza de dezvoltare, nu doar ulterior dezvoltării ca o fază de sine stătătoare.
Adesea tentația arhitectului este de a-și concentra întreaga atenție pe tehnologie: alegerea platformei, a stackului tehnologic sau a frameworkurilor folosite, se numără printre deciziile tehnice asociate în mod tipic rolului de arhitect. Desigur sunt și acestea importante, ceea ce trebuie însă să primeze într-o organizație performantă este dinamica echipei. Respectiv colaborarea între ele atunci când vorbim de mai multe echipe. Iar în acest context, rolul primar al arhitectului este de a crea un mediu în care echipele pot funcționa cât mai eficient. Cu alte cuvinte, echipele trebuie să își poată asuma răspunderea pentru ce urmează a fi implementat și au autonomia pentru a lua decizii în cadrul ariei lor de responsabilitate.
Rezultatele studiilor susțin și ele acest punct de vedere. Acestea dovedesc că doar două proprietăți ale arhitecturii unei soluții sunt corelate cu performanța echipei: capacitatea de a testa componente în izolare ("isolated testability") și capacitatea de a lansa o componentă în producție în mod independent ("independent deployability"). În comparație cu aceste două proprietăți ale arhitecturii, orice alt factor are un impact nesemnificativ.
Dacă dinamica echipelor este prioritatea numărul unu și arhitectura a fost deja concepută astfel încât să țină cont de acest fapt, următorul pas este să ne asigurăm că și componența echipelor este aliniată acestui scop.
Pentru ca echipa să își poată asuma răspunderea completă, e nevoie ca toate abilitățile necesare pentru întreg lifecycle-ul aplicației să se regăsească în cadrul echipei. Astfel, pentru a putea funcționa eficient, o echipă va acoperi toate ariile de la: specificație funcțională, design UX, implementare, operations, securitate, testare etc.
Doar că în mod tradițional multe din aceste activități se desfășoară sub tutela unui departament specializat în aria respectivă. Paradigma se schimbă însă complet atunci când echipele de development preiau cu adevărat frâiele în procesul de software delivery. Dacă luăm exemplul departamentului de security, acesta trebuie să își schimbe complet modelul de colaborare. El trebuie să vină în întâmpinarea echipelor de dezvoltare, punând la dispoziția acestora librării sau tooluri care să poată fi integrate în mod automat în procesul de dezvoltare a aplicației. Orice altă abordare va reprezenta o piedică în calea echipei spre performanță.
Un alt detaliu care nu poate fi omis ține de Legea lui Conway. Aceasta ne spune că orice organizație va crea sisteme ce reproduc căile de comunicare interne ale acesteia. Dacă arhitectura și structura echipelor se completează în mod armonios, rezultatul va fi și el unul pozitiv. Dacă însă cele două nu se potrivesc, tensiunile nu vor întârzia să apară. Acestea pot deveni vizibile în cod sau chiar în organizație: de exemplu, atunci când echipe aflate în locații diferite încearcă să lucreze concomitent în aceeași arie a unei aplicații monolitice.
Pentru a evita aceste situații, adesea structura echipelor trebuie regândită pentru ca ea să se plieze pe arhitectura aplicației (o astfel de restructurare poartă în literatură numele de "Inverse Conway Maneuver").
Am discutat până acum despre multiplele dimensiuni care au un impact asupra performanței în industria IT: latura tehnică (arhitectura și practicile de continuous delivery), cea organizațională (componența echipelor și colaborarea între departamente) dar și cea umană (cultura organizației). În încheiere ne îndreptăm atenția către management și asupra rolului acestuia. Desigur sunt multe fațete ale leadershipului care pot avea un impact major asupra performanței echipei. Dacă ar fi însă să alegem o singură prioritate, aceasta ar fi crearea unui mediu în care accentul cade pe învățarea din greșeli.
Un mediu cu adevărat agil și inovator implică o abordare de tip trial-and-error, cu bucle de feedback scurte din piață. Iar într-un astfel de context apariția greșelilor nu este doar o posibilitate ci o certitudine. Ceea ce diferențiază organizațiile este felul în care sunt tratate aceste situații atunci când ele apar. În cadrul unei organizații imature, analiza greșelilor se încheie odată cu identificarea "vinovatului". Pentru o organizație performantă vinovatul este irelevant, el servind doar ca punct de plecare în identificarea cauzei. Iar ceea ce contează cu adevărat este ca echipa (și întreaga organizație) să învețe din greșeli, pentru a le evita pe viitor.
Comparat cu alte ramuri ale ingineriei, IT-ul este o industrie foarte imatură cu un istoric dezastruos în ce privește învățarea din greșelile trecute. Aici intervine rolul managementului, care trebuie să stopeze tentativele de "căutare a vinovaților" și să evidențieze importanța învățării din greșeli pentru întreaga organizație.
de Ovidiu Mățan
de Ioana Negruț