Companiile de software locale par să folosească în cea mai mare parte Agile. A vedea ca agile coach că pășim cu toții în aceeași direcție a agilității este încurajator. Dar e destul de evidentă legătura dintre excelența tehnică și agilitate?
Am remarcat că mulți colegi din IT folosesc Agile și Scrum interschimbabil. În rândurile următoare, voi distinge între ele și voi folosi acești termeni și variațiile cu definițiile următoare:
Revenind la afirmația de la începutul articolului de față, despre echipele noastre locale care afirmă că folosesc Agile, este important de nuanțat că, în urma unei analize mai detaliate, se deduce că, de fapt, ele folosesc Scrum. Se pare că acesta a devenit frameworkul Agile preferat în comunitatea noastră.
Frameworkul Scrum oferă un cadru structurat, dar flexibil, pentru dezvoltarea de produse și colaborarea eficientă a echipei. Scrum definește în special "ce" face echipa, stabilind rolurile, ceremoniile regulate și artefactele, cum ar fi backlogul produsului și sprinturile. Pe acest schelet, echipa adaugă pașii care fac, ca prin procesul pe care îl urmează, să creeze un produs aliniat scopului echipei.
Este important de menționat că Scrum în sine nu face referire explicită la craftsmanshipul tehnic. Cu toate acestea, abordarea agilă nu se limitează doar la aspectele de planificare și dezvoltare a produsului, ci include și preocuparea pentru calitatea și excelența tehnică a produsului final.
Sursa: https://vincentdnl.com/drawings/technical-debt
Filozofia Agile, care stă la baza Scrum și a altor metode Agile, este orientată către "cum" muncim, prețuind colaborarea, adaptabilitatea și livrarea continuă de valoare pentru clienți. Principiile și valorile Agile oferă îndrumări pentru a ne ghida în modul în care abordăm dezvoltarea produselor și interacționăm în cadrul echipei. Unul dintre principiile din Agile Manifesto afirmă că "Atenţia continuă pentru excelenţă tehnică şi design bun îmbunătăţeşte agilitatea.". Așadar, excelența și designul sunt piloni pentru agilitate, deoarece un cod bine scris, modular și ușor de întreținut permite echipei să răspundă rapid la schimbări și să livreze extinderea produsului în mod consecvent.
Spațiul dintre frameworkul Scrum și excelența tehnică este completat de echipă cu pași de proces care încearcă să cuprindă și principiul de excelență menționat de filozofia Agile. E important să recunoaștem că echipa de dezvoltare este stakeholderul răspunzător pentru calitatea codului atât de acum, cât și cea viitoare. Luați cu munca de zi cu zi, tindem să uităm că echipa are și alți stakeholderi decât cei care aproba bugetul sau cei care plătesc facturile. Iar, în practică, am întâlnit confuzie legată de recunoașterea și legitimitatea acestei responsabilități a echipei. Dar când vine vorba de calitatea codului și excelența tehnică, echipa e cel mai bine plasată să-și asume aceasta responsabilitate. Colegii noștri tehnici și echipele noastre pot să devină artizani ai software-ului doar asumându-și această răspundere și îmbunătațindu-și abilitățile și cunoștințele continuu, ca să poată aplica cele mai bune soluții.
Ca lideri, scrum masteri și agile coachi care promovăm agilitatea, cade în sarcina noastră să ne susținem colegii tehnici în a-și dezvolta abilitățile specifice. Stabilind că ei au această responsabilitate, noi trebuie să ne asigurăm că au contextul și resursele să-și îndeplinească această îndatorire. În calitate de agile coach, eu le reamintesc de practici care țin de excelența tehnică, prezente în alte metode Agile, de exemplu, în Extreme Programming (XP), din care multe practici care au devenit deja un standard.
Tot din poziția de agile coach, pe lângă susținerea curentă a echipei, încerc să-mi fac munca în așa fel încât să le transfer cât mai multe abilități de self management. Una dintre ambițiile agilității fiind aceea de a avea echipe care se autoorganizează. Am această evoluție în gând cu fiecare interacțiune: în discuții unu la unu, în ghidarea ceremoniilor sau când îi educ despre metode, practici sau exemple Agile. Urmăresc nu doar rezultatul rezolvării problemei cu care se confruntă în acel moment, ci și să înțeleagă motivația din spatele unei abordări sau a alteia. Fac toate astea cu convingerea că autodirecționarea învățării și evoluției colegilor mei e cea mai bună cale către excelență.
Un alt aspect fundamental pentru promovarea atât a excelenței, cât și a agilității e învățarea continuă. Învățarea nu e menționată direct în Scrum și nici în Agile, însă adaptarea la schimbare și îmbunătățirea continuă pe care o căutam cu fiecare retrospectivă nu poate fi prezentă decât cu ajutorul ei. Văd stimularea învățării ca fiind esențială în munca mea de agile coach și o leg de responsabilitatea mea de eliminare a impedimentelor cu care se confruntă echipa la nivel organizațional. Desigur, fiecare companie are deja un framework de învățare mai mare sau mai modest, mai formal sau informal. Însă îmbunătățirea accesului la aceste resurse și activități va crește participarea colegilor noștri. În consecință, această susținere îi va ajuta să-și dezvolte și excelența lor tehnică.
Îmbunătățirea frameworkului de învățare poate însemna diferite lucruri în diferite companii. O mică investigație cu privire la acest aspect poate să se soluționeze cu mai multe idei despre ce putem îmbunătăți în contextul fiecăreia. Fac și cercetarea mea, dar îmi întreb și colegii tehnici. Acestea sunt genul de întrebări pe care eu le pun:
Ce ți-ar fi de folos să înveți pentru munca ta?
Ce ți-ar plăcea să înveți?
Cum preferi să înveți?
Ce îți stă în calea progresului și a învățării?
Ce resurse de învățare ai folosit și n-au fost de folos?
Ce impedimente ai avut în accesarea resurselor de învățare?
Ce putem face ca lideri să-ți fie mai ușor să înveți?
Ce faci când vrei să înveți, să participi la un curs, citești o carte tehnică etc.?
Cum înveți de la colegii tăi?
Ce ai vrea să înveți de la colegii tăi?
În experiența mea, răspunsurile la astfel de întrebări și atenția la ce suport de învățare au colegii nevoie au scos la iveală nenumărate oportunități. Unele au fost aplicabile imediat, cu costuri neglijabile pentru companie. Altele au necesitat documentarea unor proceduri deja existente. Însă cu schimbări mici, am reușit destul de repede să mobilizez câteva zeci de oameni să înceapă activ să învețe lucruri noi și utile. S-au înscris la cursuri sau conferințe tehnice, limbi străine folositoare la muncă, certificări și au început să citească mai mult.
Stimularea învățării este un efort care dă rezultate pe termen lung, dar în contextul în care trăim, care se schimbă tot mai repede, e nevoie ca fiecare dintre noi să evolueze și să-și perfecționeze abilitățile. Întreaga organizație se va putea adapta la schimbare în repetate rânduri doar cu astfel de eforturi. Concluzia certă e că promovarea excelenței tehnice în fiecare dintre rolurile noastre va rezulta în mult mai multă valoare pentru clienții noștri, compania noastră și pentru fiecare dintre noi.