Team Lead Cheatsheet: Notes
Vedu tým - co s tím?
Vedení týmu v kontextu předmětu PV168 klade důraz na jiné aspekty, než co obnáší vedení týmu v praxi. Text níže není vyčerpávající seznam věcí, jedná se spíše o víceméně kategorizované myšlenky, které vám mohou pomoci si položit ty správné otázky.
Obecné věci
Vedení týmu nemá být věc na sílu, preferovaný je spíše konsenzus. Dobré vlastnosti vedoucího týmu jsou konzistence a důslednost.
Optimalizace výsledné práce
Běžný styl vedení projektu, kdy je cílem jej úspěšně zakončit. V praxi často viděný, byť dává smysl pouze v krátkodobém horizontu.
Pro potřeby PV168 doporučujeme upozadit, byť k tomuto stylu budete tíhnout.
Optimalizace předávání znalostí
Styl vedení, při kterém se napříč členy týmu sdílí znalosti. V předmětu PV168 preferovaná varianta.
Bus factor
Kolik programátorů musí zajet autobus, aby nebylo možné pokračovat v projektu?
Anekdotická otázka ilustrující zastupitelnost členů týmu. Hodnota 1 znamená, že má vedoucí projektu problém.
Vedení
Jako vedoucí týmu můžete vést členy týmu, můžete vést projekt po technické stránce. Můžete klidně zastávat obě role, ale není hanba plnit jenom jednu roli a tu druhou nechat na jiném členovi. Primárně byste se měli starat o členy týmu a také o kalendář.
Vedení týmu jako takového bere čas. Mějte to proto na paměti, abyste si nebrali tolik vývojářské práce jako ostatní členové týmu.
Čím víc očí, tím víc Adidas
Každou věc, kterou kdokoliv na projektu udělá, by měly shlédnout také oči někoho dalšího. Autorská slepota je ošemetná věc.
- kooperace je výhodná ve všech fázích vývoje
- dochází k výměně znalostí
- dokonce od slabšího směrem ke zdatnějšími členu týmu
Morálka
- nepřepalte začátek
- nenechávejte věci na poslední chvíli
- … tedy pracujte průběžně
Styl práce
Párové programování
- doporučujeme oproti programování osamotě
- stabilní dvojice
- po zažití klesá výměna znalostí v týmu
- nadále roste efektivita v případě implementačních i návrhových rozhodnutí
- fluktuující dvojice
- výrazná výměna znalostí
- může způsobovat “drhnutí” po změně dvojce, než dojde k zažití
- lze rozdělit i na vývojáře a testera
- výměna znalostí je víceméně zachována
- snížena efektivita implementačních i návrhových rozhodnutí
Dělení práce
- vertikální
- #fullstack
- mírně pomalejší vývoj (všichni dělají všechno)
- lepší výměna znalostí
- horizontální
- vede ke větší specializaci
- pozor na BUS FACTOR
Testování
- je doporučené psát si unit testy
- ruční zkoušení aplikace je také užitečné
- testuje stejná dvojice, která tvořila
- rychlejší
- riziko autorské slepoty
- testuje druhá dvojice
- pomalejší
- lepší sdílení vědomostí
Code review
- opačná činnost k návrhu
- dělá jedna osoba
- pokud je výrazně technicky způsobilejší
- pozor na autobus
- dělá celý tým, druhá dvojice
- předávání zkušeností
Návrh
- dělí se na
- kompetence (horizontální dělení)
- balíčky
- úrovně abstrakce (vertikální dělení)
- třídy a vztahy mezi nimi
- třída a její metody
- kompetence (horizontální dělení)
- (protřepat) nemíchat
- obzvlášť v případě horizontálního dělení
Procesní záležitosti
Komunikace
Vyberte si platformy, kterou budete používat pro komunikaci, pro trackování požadavků. Například Zoom, Discord, gitlab issues, osobní setkání.
Pravidelnost
- stanovte si termín 1-2x týdně 10-15 minut
- projděte
- kdo co udělal
- kdo co bude dělat
- kdo se na čem zasekl
- pomůže k průběžné práci
Retrospektiva
- po konci etapy (milestone) se setkejte
- proberte
- co členům vyhovuje
- co jim vadí (a jak to opravit)
- pochvalte dobře odvedenou práci
Nejdřív mysli, potom konej
Každé zadání si nejprve rozmyslete a až potom jej zhmotněte.
- rozmyslete to společně v týmu
- rozmyslete si to sami
- ale předneste myšlenky týmu
- samotným přednesem se donutíte k preciznější formulaci nápadu
Kdy je práce hotová
- dohodněte si, co znamená, že je zadaný úkol hotový
- může se lišit dle typu práce
- mají ho schválit ostatní členové?
- má mít napsaný test?
- má být ozkoušený?
- má mít code review?
- …
Práce s lidmi
Abnormální člen
- je některý člen výrazně technicky zdatnější?
- nechte ho vést vývoj
- je lepší, aby méně programoval a více vedl ostatní
- bude mít důležitější slovo na code review nebo při návrhu
- je některý člen výrazně horší?
- aktivně ho zapojujte do dění
- klidně mu dávejte jednodušší, ale pracné úkoly
- střídejte mu dvojice
- aktivně ho zapojujte do dění
Konflikt
- nechte horké hlavy vychladnout
- ale řeště problém za čerstva
- diskutujte problém bez diváků
- například při problému dvou členů si vyslechněte každého zvlášť
- až pak se s nimi sejděte a mějte roli mediátora
- preferujte osobní komunikaci
- pokud se nemůžete sejít, tak si zavolejte
- je lepší zapnout kameru
- vyvarujte se psané formě
- chybí intonace a další komponenty komunikace
Teď si udělejme retrospektivu, jak se vám zatím daří vést tým.