​Când vorbești de echipe de programatori, printre pozițiile de front-end developer, back-end, business analist, product owner etc., întâlnești des în majoritatea echipelor de dezvoltare și poziția de team lead. În unele companii, team lead-ul are strict un rol managerial și administrativ, în altele are rol de tech lead și coordonează progresul task-urilor și proiectelor implementate de echipă, iar în anumite companii are ambele responsabilități.

Team leader -programareFoto: Unsplash.com

Am vrut să înțelegem mai bine ce îi atrage pe programatorii pasionați de a scrie cod și de a lucra de multe ori independent la o poziție de team lead care presupune coordonarea și managementul unei echipe. Mai mult decât atât, care sunt până urmă abilitățile de care are nevoie un programator pentru a deveni team lead și cât de important e să aibă un background tehnic.

Prin urmare, am discutat despre toate aceste fațete ale rolului de team lead cu trei programatori din ING Tech România, care ne-au împărtășit experiența lor și cum văd ei poziția de team lead.

Georgeta Păunescu, team lead în cadrul ariei de Data Management

Georgeta a început să lucreze în programare acum 13 ani și a ajuns în poziția de team lead în ING Tech, în urmă cu 2 ani.

Echipa pe care o coordonează e formată din 12 membri și, împreună cu celelalte echipe din cadrul proiectului Unite Data Lake, e responsabilă cu dezvoltarea și întreținerea unui Data Lake comun, pentru Belgia și Olanda . „Echipa noastră se ocupă cu încărcarea datelor din sistemele sursă și modelarea lor în toate straturile acestui Data Lake: Operational Status, Information Warehouse și Data Marts. Suntem implicați în activități precum: design-ul și dezvoltarea joburilor de ETL, testare tehnică, deploy-ul codului în toate mediile de lucru, inclusiv în producție, precum și menținerea funcțională a aplicațiilor în producție.

Ea ne povestește că păstrează strâns legătura cu colegii din echipă prin întâlniri periodice, one-to-one, ședințe de coordonare, îndrumare sau task-uri administrative, operaționale, de care ești responsabil în calitatea ta de manager de echipă.

„Rolul meu presupune ca jumătate din timp să mă ocup de activitățile tehnice și, în restul timpului, de managementul echipei și sprijinul lor. Echipa noastră a crescut însă rapid, prin urmare, am fost destul de mult implicată și în activitățile specifice recrutării și în integrarea noilor colegi. Am sprijinit și celelalte echipe din arie, astfel că în ultimele luni procentul de activități tehnice desfășurate a mai scăzut.”

În calitate de team lead, ne precizează Georgeta, te implici și în sesiuni de brainstorming organizate cu întreaga echipă, oferi îndrumare tehnică și propui diverse automatizări și optimizări pentru proiectele în curs.

„Mă ocup în continuare de dezvoltare, scriu cod pentru a rămâne la curent cu soluțiile implementate în cadrul proiectului. În fiecare sprint, lucrând după metodologia Agile, preiau task-uri de dezvoltare cât mai variate. Mă implic mai ales în ghidarea colegilor când dezvoltăm soluții noi, abordăm situații inedite sau lucrăm la optimizări. E important pentru mine să am o imagine de ansamblu asupra tuturor soluțiilor dezvoltate, pentru a putea să intervin când e nevoie de ajutor.”

Sursa foto: Unsplash

De la developer la team lead

Georgeta ne povestește că și-a început cariera în departamentul IT, în sistemul bancar, iar apoi a făcut schimbarea către o companie de IT, unde a lucrat tot în zona de Data Management. A mai coordonat echipe mici, de 4-5 persoane, și ne menționează importanța de a acumula cât mai multe cunoștințe tehnice înainte de a prelua un rol de coordonare a unei echipe.

„Am ales un rol de management, dacă putem să îi spunem așa, pentru că îmi place să susțin oamenii și să împărtășesc din experiența mea. Cred că e important în calitate de team lead să fii o persoană pozitivă, entuziastă, să ai inițiative, să reușești să îți cunoști foarte bine colegii și să le câștigi încrederea, pentru ca ei să vină deschiși către tine să îți ceară ajutorul. De asemenea, este important să găsești instrumentele necesare pentru a-i motiva pe ceilalți, să-i încurajezi să vină cu idei și să discuți deschis deciziile în echipă. Nu în ultimul rând, contează să fii accesibil atunci când colegii au nevoie, să te implici constant în dezvoltarea lor și să fii o persoană flexibilă care se adaptează la tipare diferite de oameni, la ultimele tehnologii și la proiectele care sunt în continuă schimbare.”

La nivel tehnic, Georgeta crede că e important ca în poziția de team lead să ai un bagaj tehnic solid, să poți oferi echipei suportul de care are nevoie. Să fii în permanență la curent cu tot ce se implementează și să înveți constant pentru a putea să oferi un input util și relevant.

„Nu cred că este obligatoriu ca team lead-ul să fie persoana cu cea mai bogată experiență din echipă, însă cred că e important să fi trecut prin proiecte diferite, complexe, și cu tehnologii cât mai diverse, pentru a putea să își susțină echipa și să o ajute să progreseze pe termen lung. În plus, dacă într-o arie cum e a noastră, lucrezi cu un set diferit de tehnologii, e imposibil ca o singură persoană să aibă o experiență solidă cu toate tehnologiile, așa că seniorii sunt, în general, un sprijin tehnic foarte important în echipă.”

Ea ne precizează că lucrează pe zona de ETL cu IBM InfoSpere Data Stage, în cea de Business Intelligence cu IBM Cognos, iar din punct de vedere baze de date cu IBM Netezza, migrând spre Oracle Exadata. Ca sistem de operare folosesc Linux, pentru versionare și deploy Azure DevOps, pe partea de lineage IBM InfoSpere Information Governance Catalog, iar pe zona de automatizare câteva aplicații dezvoltate intern.

Valentin Jercălău – chapter lead în aria de platforme și canale digitale

Valentin are o experiență de peste 6 ani în programare, iar scopul ariei din care face parte și echipa lui este digitalizarea interacțiunii dintre întreprinderile mici și mijlocii și ING în diferite etape precum deschidere de cont, împrumut, autentificare etc.

Este în poziția de team lead de peste 2 ani, iar echipa pe care o conduce în prezent este formată din 8 oameni, având și juniori și mid-seniors, dar și seniori. Folosesc Java și Spring, dar el ne menționează că au libertate să folosească și să exploreze și tehnologii precum Kotlin și Scala.

„Programul meu începe dimineața devreme cu două ore în care scriu cod, apoi intru în daily-uri (specifice modului de lucru Agile). În general nu particip doar la daily-ul echipei mele, mai merg și la alte meeting-uri din arie. În plus, îmi programez cel puțin o întâlnire de peer programming, mi se pare extrem de important să creștem oamenii cu mai puțină experiență prin astfel de oportunități.”

Sursa foto: Unsplash

Despre rolul de team lead

Principala datorie a team lead-ului în ochii lui Valentin este să creeze încredere în interiorul echipei astfel încât ceilalți colegi să se simtă confortabil să discute deschis despre ce își doresc pentru a se dezvolta și a primi tot sprijinul necesar. În al doilea rând, e important să știe să asculte, să creeze o atmosferă bună în echipă, pentru ca oamenii să vină cu plăcere la birou.

„Legat de cunoștințele tehnice, pot să spun că importanța acestui aspect depinde mult de profilul echipei. Dacă, de exemplu, ai deja 2 seniori în echipă care pot suplini partea de cunoștințe tehnice, poți avea un team lead care se ocupă mai mult de zona de soft skills, evaluare etc. Totuși, în aria noastră e necesar ca fiecare team lead să fie senior, și eu personal îmi doresc să rămân o persoană tehnică: să fac debugging, să rezolv probleme, să scriu cod.”

El punctează că în cazul unei echipe tinere, recent formate, situație cu care s-a întâlnit și el pe parcursul carierei, vorbim de un moment critic în care chapter lead-ul poate contribui foarte mult la progresul echipei. Valentin ne povestește că și în ING a trecut prin mai multe echipe și arii, în zona de security, apoi în zona care se ocupă de implementare PSD2 și ulterior în aria de canale și platforme digitale. Așa a avut ocazia să lucreze și cu mulți oameni la început de drum, din mai multe echipe și și-a dat seama că e o parte care îi place, să ajute la formarea de echipe și să sprijine oamenii care își doresc să învețe cât mai mult și să crească.

„Când ești team lead, ești pus și în fața unor situații mai dificile, poate conflictuale, unde colegii au idei diferite despre cum ar trebui să rezolve un proiect, cum ar trebui să îl abordeze și prin ce metodă sau algoritm. Totuși, eu cred că e chiar indicat să te lovești de astfel de situații, chiar dacă la prima vedere pot crea conflicte, pentru că asta arată de fapt că ai în echipă oameni pasionați, cu idei diferite, iar eu îmi încurajez mereu colegii să își susțină ideile prin argumente.”

Valentin ne povestește că își îndeamnă colegii să găsească punctele forte și dezavantajele oricărei abordări la care lucrează în cadrul unui proiect, lăsând practic membrii echipei să descopere singuri care e cea mai bună variantă de rezolvare la problema cu care se confruntă.

„Poate că am perioade în care îmi lipsește să fiu 100% din timp software developer, dar iau story-uri din board și încep să mă ocup de ele. În plus, încerc ca lucrurile mai dificile să le fac împreună cu echipa și cea mai mare recompensă e când vezi că treptat, oameni care au început de puțin timp în acest domeniu, devin independenți și livrează lucruri foarte bune. ”

La final, Valentin ne spune că team lead-ul e până la urmă o etichetă și el e doar o altă persoană din echipă care contribuie la deployment, face peer programming, scrie cod, dar are și extra răspundere pe modul în care echipa se dezvoltă pe termen lung.

Lucian Șerban - chapter lead, zona de software pentru ATM-uri

Lucian lucrează de peste 12 ani în programare și de câteva luni a preluat poziția de team lead al echipei din care face parte și care se ocupă de software pentru ATM-uri. Conduce o echipă formată din 9 oameni și ne povestește că tranziția spre poziția de team lead a fost treptată.

„Am început încă de anul trecut să coordonez partea de testare și dezvoltare, iar odată cu poziția de team lead, mă ocup și de zona de management a echipei, evaluarea performanței, suport administrativ, coordonare etc. Echipa mea era deja formată când am preluat acest rol, iar eu fiind acolo încă de la început, provocările au fost mai mici comparativ cu o echipă la început de drum.”

Lucian a început în 2009 să lucreze la o companie care dezvolta soluții software pentru stații de carburanți, apoi a lucrat la o soluție pentru monitorizarea flotelor de mașini cu ajutorul echipamentelor GPS, deci de la început mărturisește că a fost atras de zona aceasta de software integrat cu echipamente. Apoi, a venit provocarea pe zona de ATM-uri, unde a crescut treptat.

„Pentru mine în poziția de team lead e important să mențin o atmosferă plăcută în echipă. Apoi cred că rolul meu principal e să urmăresc și să gestionez cât mai bine proiectele în lucru, să fiu atent la modul în care se progresează și la punctele importante ale proiectelor. De asemenea, trebuie să știu când să intervin, să ofer sprijin și o direcție pe diferite taskuri.”

El ne menționează că și din partea echipei a observat că așteptările sunt ca el să îi ajute pe partea de organizare, prioritizare și stabilirea obiectivelor pe termen scurt. În plus, să ofere sprijin pe lucrurile mai complicate din punct de vedere tehnic, cele ieșite din tipar. „

Eu scriu în continuare cod destul de mult. În echipă folosim C#, puțin Java Script și HTML, iar colegii care lucrează pe instalări folosesc Batch scripting și VB scripting.”

Sursa foto: Unsplash

Ce calități caută companiile când angajează un team lead?

Lucian ne povestește că din punctul lui de vedere, în anumite echipe, team lead-ul nu e obligatoriu să fie persoana cu cea mai multă experiență tehnică, pentru că dacă ai roluri diferite într-o echipă, nu poți să le știi pe toate. Ne explică faptul că echipa lor are dezvoltatori, testeri, security și integratori. El nu are cunoștințe suficiente în zona de integrare de exemplu, care e mai atipică, prin urmare pe partea lor discută mai mult aspecte legate de organizare, având un senior care e responsabil de cum progresează proiectele acolo.

„Referitor la calități, cred că e important să ai abilități de management al persoanelor, dar și cunoștințe de management de proiect. Un alt aspect important e managementul conflictelor și răbdarea, pentru că lucrezi cu caractere diferite, unii colegi au nevoie de foarte multă independență și vor doar să se consulte în momentele critice, alții au nevoie de un sprijin constant.”

El menționează că în echipa lui momentan nu a avut juniori pe care să îi îndrume pas cu pas, dar personalitatea oamenilor diferă: sunt cei care cer ajutorul, cei la care trebuie să intervii tu în momente cheie, chiar dacă nu ți se solicită, colegii mai precauți cu task-urile și riscurile din spate și cei independenți, cu care ai doar discuții punctuale.

„În prezent, eu nu simt că am renunțat la partea de coding. Dacă sunt lucruri mai complexe, facem peer programming, sesiuni de mentorat și de brainstorming pentru a căuta cele mai bune soluții. În plus, îmi aloc în fiecare sprint o parte de dezvoltare, în funcție de încărcare. Într-un final, cred că depinde de fiecare team lead cât de mult își dorește să fie în continuare și programator în majoritatea timpului.”

În rolul de team lead e vorba de responsabilitate, inițiativă și de foarte multe ori entuziasm. După cum ne spunea și Valentin, meritele și laudele în urma unui proiect sunt ale echipei, iar lucrurile care nu merg bine, sunt de obicei în sarcina team lead-ului.

Într-un domeniu în care poate mulți își doresc să lucreze și să exceleze individual, team lead-ul e cel care trebuie să ajute la îmbinarea bucăților de puzzle create de fiecare coleg pentru ca într-un final, echipa să poată livra o aplicație funcțională. Managementul conflictului, cunoștințe tehnice solide, soft skills, flexibilitate în gândire și abordare și capacitatea de a fi un bun ascultător sunt doar câteva dintre cerințele care ne-au fost sugerate ca necesare pentru a reuși în acest rol.

La final, pentru mulți tranziția către team lead este una destul de naturală pentru că le permite în continuare să scrie cod, să facă peer programming, dar să se implice poate în proiecte mai complexe ca înainte. Alți programatorii sunt atrași de rolul de team lead din motive personale și diferite: își doresc să crească la rândul lor oameni așa cum poate au primit și ei sprijin când erau la început, își doresc să evolueze în carieră dar nu neapărat în poziția de expert pe un tool sau o tehnologie, le place partea de coordonare a echipei sau pur și simplu vor să facă mai mult decât să scrie cod.