Nije lako programerima da tek tako “uskoče” u ulogu Tech Lead-a. Uz pomoć našeg Lindona Camaja, predstavićemo vam šta ova pozicija podrazumijeva u praksi.
Za početak – mali uvod
Ako tražimo definiciju, najprikladnija bi bila sljedeća:
Sada, kada smo otkrili šta zapravo Tech Lead (u nastavku teksta “TL”) kao funkcija predstavlja, hajde da otkrijemo malo više o tome šta TL radi u praksi.
Čak i ako ste sjajan programer, ne mora nužno da znači da ćete biti i sjajan TL. Da biste postali TL, morate znati mnogo više od programiranja. Da budemo precizni, u svakoj kompaniji, TL igra jedinstvenu ulogu koja zahtijeva određene, specifične vještine i znanja, koje drugi ne posjeduju.
- Koja su to esencijalna znanja koja TL treba da posjeduje?
Svaki TL posjeduje različite vještine, budući da mora da koordiniše i posreduje između poslovnih i tehničkih potreba. Međutim, postoje neke vještine koje su iz mog iskustva, neophodne za obavljanje pozicije TL-a:
Kao što smo već rekli, TL učestvuje u mnogim aktivnostima, koje prevazilaze programiranje. Možda najizazovniji dio jeste rad sa spoljnim akterima, koji treba da definišu tehničke mogućnosti, kao i transformacija tima mijenjanjem pozicija članova tima.
- Kako se nosiš sa time da konstantno moraš biti uključen u kontrolu koda, tehničku dokumentaciju i organizovanje timskih sastanaka, kako bi bio u toku sa trenutnim statusom i razvojem projekta?
U početku, to je bilo nešto potpuno novo za mene, ali morao sam da se naviknem. Kontrola koda mi je bila najzahtjevniji zadatak, jer je bilo mnogo toga što je trebalo iskontrolisati i imao sam osjećaj da radim nešto potpuno beskorisno. Ali, kako je vrijeme prolazilo, počeo sam da uviđam da je to zapravo suštinski zadatak, jer sam zahvaljujući kontroli koda bio u stanju da na pravi način obučavam i pomognem programerima da isprave greške, a u isto vrijeme, to je i najbolji način da imate pregled cijelog projekta na najbolji mogući način.
Tehnička dokumentacija i timski sastanci su takođe značajni. Dobra tehnička dokumentacija vam omogućava da izbjegnete nesporazume i greške koji se često dešavaju.
Mi koristimo agile scrum development i svake nedjelje imamo timske sastanke gdje govorimo o tome šta je urađeno od prošlog timskog sastanka, šta planiramo da radimo u narednoj fazi, a zatim se govori i o pitanjima i problemima. Na ovaj način, zajedno, stvaramo cjelokupnu sliku projekta.
Ako govorimo o strukturi posla TL-a, možemo ih podijeliti na sljedeće aktivnosti:
1. Rad na projektima
TL se bavi ukupnom arhitekturom projekta, a ne pojedinačnim segmentima. Fokus je na dizajnu aplikacije i tome kako će se idejno rješenje uklopiti u cjelokupan sistem poslovanja.
- Jedan od glavnih zadataka je procjena rizika projekta. Koja je prva stvar koju radiš u ovom dijelu projekta?
Saglasan sam da je faza procjene rizika jedna od ključnih, ako ne i najvažnija. U ovoj fazi pokušavam dobiti “širu sliku” cijelog projekta. Prvo detaljno analiziram projektnu dokumentaciju koju dobijemo od klijenta. Zatim, ukoliko je potrebno, predlažem klijentu određene izmjene. Sljedeći korak je definisanje tehnologije koja će se koristiti za razvoj, vještina i znanja koja su neophodna za realizaciju. Nakon svega toga, dolazimo do najtežeg dijela – procjene rizika projekta. U ovom dijelu, uvijek uključujem i druge članove tima.
Da bi bilo jasno šta ovaj dio posla TL-a podrazumijeva, napravili smo spisak konkretnih koraka na koje TL mora da obrati pažnju:
- Revizija projektnih planova i pregled projektne dokumentacije;
- Učestvovanje u nedjeljnim i mjesečnim timskim sastancima, zajedno sa projektnim menadžerom;
- Bliska saradnja sa menadžerom projekta, kako bi se definisali prioriteti i odredio pravac razvoja projekta;
- Balansiranje između troškova i vrijednosti sa ciljem postizanja optimalnog ishoda;
- Povremeno prisustvovanje prodajnim sastancima, jer jedino TL može odgovoriti klijentu na sva tehnička pitanja;
- Stalna koordinacija sa projektnim menadžerima, dizajnerima i svim ostalim timovima i sektorima.
- Kako napraviti savršen balans između članova tima sa velikim razlikama u vještinama i znanju?
Naš tim čine senior i junior programeri. Radimo na brojnim projektima, koji zahtijevaju različite vještine i tehnička znanja. Međutim, uvijek pokušavam da pronađem savršenu ravnotežu između onoga što najbolje odgovara potrebama projekta, ali i programerima. Zato uvijek težim da napravim savršen spoj senior i junior programera, kako bismo, na kraju dana, dobili projektni tim koji najbolje odgovara konkretnim ciljevima i svrsi projekta.
2. Učešće u odlučivanju u kompaniji
Kao lider jednog od najznačajnih sektora u kompaniji, TL mora uzeti učešće u donošenju svih važnijih odluka, kao i osigurati konstantnu komunikaciju sa CTO (chief technology officer) u oblasti kreiranja tehnoloških strategija. Kao lider tima, TL mora da razmišlja o zapošljavanju novih članova, kao i da učestvuje u procesu regrutacije.
Kao i svi ostali lideri sektora, TL takođe treba da razmišlja o efikasnosti i efektivnosti svog tima, kao i da stvara održive profitne ciljeve.
3. Programiranje
Kodirati ili ne kodirati, pitanje je! Čak i ako se cijeli tim oslanja na vas, uvijek morate naći vremena za kodiranje! TL treba da piše kod od 20% do 30% svog vremena. Napraviti ovakvu ravnotežu nije nimalo lak zadatak, ali TL ne smije zapostaviti kodiranje i programiranje. Stičući različita iskustva kroz brojne projekte, TL zapravo uči da pravi listu prioriteta, kako bi se i kodiranje našlo na listi njegovih zadataka.
- Kako pronađeš vrijeme za kodiranje?
Kada sam dobio ulogu TL-a, ono što me je najviše iznenadilo je činjenica koliko manje koda stvaram. Članovi tima i potrebe projekta postali su moj prioritet, tako da je pisanje koda zauzelo drugo mjesto. Međutim, uvijek se trudim da nađem vrijeme i za tu aktivnost, jer uvijek morate usavršavati svoje vještine kodiranja. Ono što je najljepše u svemu tome je što mi, nakon što se pobrinem za sve ostale obaveze, pisanje koda dođe kao relaksacija. :)
4. Tehničko liderstvo tima
Grupa ljudi ne čini tim. Tim je grupa ljudi koji idu ka ostvarenju zajedničkog cilja. Efikasan TL vodi ljude ka ostvarenju tog cilja, stvarajući zajedničku viziju i dajući smjernice, kako bi sve zamišljeno pretvorilo u stvarnost.
- Reci nam koliko je teško voditi tim, i šta je je najveći izazov za tebe u tom smislu?
Mislim da je mnogo teže objasniti kako voditi tim nego ga zapravo voditi. Svaki lider ima drugačiji pristup, tako da ne postoji neko generalno uputstvo kako biti uspješan TL. Postoji mnogo izazova svakog dana, i svaki od njih nosi neko novo iskustvo. Nijedan izazov nije isti, i upravo to je ljepota ovog posla, uvijek učiš, i uvijek težiš ka tome da nađeš najbolje rješenje.
Ali, jedna od najvećih odgovornosti TL-a je da učini tim što je više moguće samoorganizovanim i samostalnim. Vrlo je važno da sa članovima tima provodite vrijeme jedan na jedan i da ste usmjereni ka ljudima. Zašto? Zato što se uspjeh TL-a mjeri kroz efikasnost njegovog tima. Upoznajte snage članova tima, omogućite im da rastu i konstantno napreduju, ohrabrite ih da preuzmu odgovornost i da preuzimaju rizik. Otkrijete im kako da se fokusiraju na ono što je značajno i šta su prioriteti. Podstičite ih da iskažu svoj maksimum i naučite ih kako da dijele znanja između sebe.
Uvijek nađite vremena za svoj tim!
Nemojte se plašiti sukoba, oni su odličan način da dođete do harmonije u svom timu. Članovi vašeg tima imaju bolju ideju kako riješiti nešto? Ohrabrite ih da vam predstave ideje, dajte im slobodu da se dokažu i iskažu mišljenje. Dajte im odgovornost i pustite i da prave greške. Samo na taj način će napredovati i postati bolji, što će dovesti do razvoja i napretka vašeg tima.
Učinite da članovi tima shvate da su odnosi u timu i komunikacija značajni koliko i pisanje koda.
- I posljednje, ali ne i manje bitno, koja je tvoja poruka svim TL-ovima?
Pozicija TL-a ne može da se definiše na način koji odgovara svima. Mislim da morate pronaći način rada koji odgovara kako vama, tako i cjelokupnom timu. Ali, uvijek imajte u vidu nekoliko stvari: kada postanete lider tima, vaše potrebe više nisu primarne, prioritet postaje vaš tim. Zato nađite vremena za članove svog tima! Uključite ih, motivišite, mentorišite i pomozite im, postanite uzor, koji treba da osigura da svaki član tima zna, razumije i vjeruje u isti cilj. Uvijek ponavljam svom timu: “Ne postoje problemi koje ne možemo riješiti zajedno”. I zapamtite, uvijek ostanite čvrsto na zemlji, jer do nedavno ste i vi bili “samo” programer.
Foto: Miloš Dimić
Tekst napisan u saradnji sa Danilom Purićem