Jak děláte code review?

Re:Jak děláte code review?
« Odpověď #15 kdy: Dnes v 09:13:53 »
Řekl bych, že aplikuji několik "strategií" code-review na základě pár informací, které zjistím rychle

- Kdo je autorem - na základě toho už přibližně vím, co mě čeká a jakou kvalitu můžu očekávat.
- Čeho se změny týkají - zasahuje to do mého modulu, do společných věcí, do modulu jiného týmu, ...
- Testy - má to vůbec nějaké? Jsou test-casy srozumitelné? Je zvolen správný typ testu? ...
- git historie - když tam např vidím 10 commitů s message "fix" pár minut po sobě, jsem ostražitější

Tyhle věci co mi zaberou maximálně pár minut rozhodnou o tom jak zevrubně dělám review. U kódu který se týká mého modulu a společných věcí buď schvaluji nebo žádám změny, u cizího modulu - pokud to vyloženě není odpad - změny nežádám (blokuje merge) a nechávám rozhodnout jiné vývojáře


L..

  • ****
  • 324
    • Zobrazit profil
    • E-mail
Re:Jak děláte code review?
« Odpověď #16 kdy: Dnes v 10:49:12 »
3. Vede to na to, ze se tolik netestuje a automatizace je na druhe koleji...

Tenhle bod hlavně, ale i celý příspěvek je psaný z pohledu jako kdyby code reviews byly nějaká náhrada testů. To je za mě naprosto chybný pohled, code reviews mohou nějaký bug sem tam zachytit, ale primárně jsou zaměřené na úplně jiné věci. Na to, jak smysluplné automatické testy jsou, jak moc pochopitelný je kód, jestli jsou proměnné a funkce dobře pojmenované, high-level věci, různé pasti... My třeba máme kód, co běží v mnoha různých deploymentech a chová se na nich různě, což se přepíná feature flagy. Nedávno jsem jednomu juniorovi vrátil kód, kde testoval, zda je na konkrétním deploymentu podle jeho jména místo co by zavedl feature flag. Testy by procházely, ale code review tohle nesmí projít.

4. hrozne to zpomaluje flow... (mam treba rozdelany 3 pull requesty zaroven a tlacim je prez code review 3 dny nez si lidi udelaji cas na review zapracuju pozadovany zmeny apod.. )

To záleží na týmové kultuře a je to práce team leada, aby se pull requesty na code review zbytečně nesekaly, stejně jako aby si v nich programátoři nepoměřovali pindíky a nehádali se o blbostech.

Mimochodem, AI je na code review celkem užitečná - konkrétně hezky zachytí například když člověk zkopíruje kód, ale zapomene upravit komentář. Ale je dobré jako doplněk - občas reportuje nesmysly a samozřejmě dost z věcí co jsem psal výš že code review má kontrolovat neodchytí.

Re:Jak děláte code review?
« Odpověď #17 kdy: Dnes v 11:07:33 »
Delate code review pred merge nebo az po nem?
1. Vede to na to, ze lidem se nechce a zacnou delat formalni approvaly.. nebo approvujou podle toho od koho je MR...
...
Uáááá! Pokud to mergneš před review, tak všechny ty body, co vypisuješ, jsou úplně nic proti "však to už je na produkci a funguje, tak proč bych na tom review trávil půl dne." Review je buď požadavek na merge, nebo nemá smysl.

A pak to "ex post" code review muze naopak mit velky prinos.. udela se jednou za cas meeting kde se posedi a dohromady se probere co jde spravnym smerem a co jsou veci ktery by se radsi meli opravit... a vysvetli se proc a treba se to muze zdokumentovat pokud jsou v guidelines nejaky diry...
To není code review, to je možná tak architecture review, long term planning, nebo něco takového. Code review má chytit problémy (a problém není vždy jen bug zachytitelný testem) PŘED tím, než se ten kód oživí na produkčním prostředí. Ostatně, jak bez code review víš, že ta nová funkcionalita vůbec má nějaké testy a ty testy reálně něco dělají? Pak už je na to pozdě. Prevence lepší lékaře a tak.

Doporucuju nastudovat neco o continuous delivery.

Muzes mit automatizovane testy, ktere ti otestuji jestli mas testy a jestli ty testy testuji co maji testovat viz napr. mutation a coverage testing.

To co popisujes ty znaci, ze nemas dostatecnou duveru v pipelinu.

Pokud je to na produkci a funguje to tak je to v poradku a muze to tam byt.. .proc bych travil cas na code review kterym budu blokovat merge?

Pokud je to hnusno-kod kterej tam nechci i kdyz funguje tak ho proste oznacim jak technical friction ktery je potreba resit a udelam ta to ticket do pristiho sprintu... S nikym nemusim diskutovat jestli se to udela nebo ne... projektova kultura proste rika, ze tohle se bude resit... A navic muzu pridat automatizovanej test na to aby uz se to priste nestalo...

Casem se muze stat ze ta pipelina sama bezi moc dlouho tak se musi resit ktere veci se budou kontrolovat s kazdym MR a ktere veci pobezi prez noc...

Ale jak sem uz psal... plati to jen pro veci ktere muzu takhle delat a pokud mam projektovou kulturu pripravenou na takovy proces...

#MoveFastAndBreakThings





Zopper

  • *****
  • 1 001
    • Zobrazit profil
Re:Jak děláte code review?
« Odpověď #18 kdy: Dnes v 11:35:52 »
Muzes mit automatizovane testy, ktere ti otestuji jestli mas testy a jestli ty testy testuji co maji testovat viz napr. mutation a coverage testing.

To co popisujes ty znaci, ze nemas dostatecnou duveru v pipelinu.

Pokud je to na produkci a funguje to tak je to v poradku a muze to tam byt.. .proc bych travil cas na code review kterym budu blokovat merge?
Review ale nemá primárně chytat nějaké testovatelné bugy, jak už tu zaznělo několikrát. Review potřebuješ dělat i u 100% covered codebase, protože jen neuronka (ať už biologická, nebo umělá) může posoudit, jestli jsou věci smysluplně pojmenované, rozdělené, jestli je to udržitelně napsané, jestli ty testy jsou napsané tak, aby reálně detekovaly chyby a přitom nezávislé změny nevyžadovaly hromadu oprav testů...

Jasně, mutation a fuzzy testing je v principu super, ale pokud i bez nich plný test suite běží hodiny a hodiny, tak plošná mutabilita to násobí, takže se to dá používat jen cíleně.

Pokud je to hnusno-kod kterej tam nechci i kdyz funguje tak ho proste oznacim jak technical friction ktery je potreba resit a udelam ta to ticket do pristiho sprintu... S nikym nemusim diskutovat jestli se to udela nebo ne... projektova kultura proste rika, ze tohle se bude resit... A navic muzu pridat automatizovanej test na to aby uz se to priste nestalo...
Pokud není čas na "udělat to pěkně už na prvním MR", tak stoprocentně nebude čas na přepsání později, kdy to začnou používat další věci. Tyhle tickety se přištích pár měsíců přesouvají ze sprintu do sprintu, pak se to přesune na plán na příští rok a pak se zavřou jako "not relevant after 5 years".

Casem se muze stat ze ta pipelina sama bezi moc dlouho tak se musi resit ktere veci se budou kontrolovat s kazdym MR a ktere veci pobezi prez noc...
Ano. To má být jako nějak špatně, nebo co?
#MoveFastAndBreakThings
Jo, při rozhlédnutí se je vidět, kolik lidí a firem za tuhle myšlenku schovává nekvalitní práci a věčně akumulující se technický dluh.

Re:Jak děláte code review?
« Odpověď #19 kdy: Dnes v 13:24:40 »
Pokud není čas na "udělat to pěkně už na prvním MR", tak stoprocentně nebude čas na přepsání později, kdy to začnou používat další věci. Tyhle tickety se přištích pár měsíců přesouvají ze sprintu do sprintu, pak se to přesune na plán na příští rok a pak se zavřou jako "not relevant after 5 years".


Tohle je ten problem. Dokud to mate takhle tak mas pravdu a musite delat gatekeeping reviews.

Co to znamena "se presouvaji?" Tohle proste neni k diskuzi. Kdyz to nekdo zkusi proste to presunu zpatky a vyrikam si s nima, at mi do toho nesahaji.



Re:Jak děláte code review?
« Odpověď #20 kdy: Dnes v 14:36:13 »
Pokud není čas na "udělat to pěkně už na prvním MR", tak stoprocentně nebude čas na přepsání později, kdy to začnou používat další věci. Tyhle tickety se přištích pár měsíců přesouvají ze sprintu do sprintu, pak se to přesune na plán na příští rok a pak se zavřou jako "not relevant after 5 years".


Tohle je ten problem. Dokud to mate takhle tak mas pravdu a musite delat gatekeeping reviews.

Co to znamena "se presouvaji?" Tohle proste neni k diskuzi. Kdyz to nekdo zkusi proste to presunu zpatky a vyrikam si s nima, at mi do toho nesahaji.

Máš tedy možnost pozastavit vývoj nových fíčur, aby vám nerostl maintenance cost?

Ink

  • *****
  • 705
    • Zobrazit profil
    • E-mail
Re:Jak děláte code review?
« Odpověď #21 kdy: Dnes v 14:50:06 »
Pokud není čas na "udělat to pěkně už na prvním MR", tak stoprocentně nebude čas na přepsání později, kdy to začnou používat další věci. Tyhle tickety se přištích pár měsíců přesouvají ze sprintu do sprintu, pak se to přesune na plán na příští rok a pak se zavřou jako "not relevant after 5 years".


Tohle je ten problem. Dokud to mate takhle tak mas pravdu a musite delat gatekeeping reviews.

Co to znamena "se presouvaji?" Tohle proste neni k diskuzi. Kdyz to nekdo zkusi proste to presunu zpatky a vyrikam si s nima, at mi do toho nesahaji.

Máš tedy možnost pozastavit vývoj nových fíčur, aby vám nerostl maintenance cost?

A Ty ne?

Re:Jak děláte code review?
« Odpověď #22 kdy: Dnes v 15:18:08 »
Pokud není čas na "udělat to pěkně už na prvním MR", tak stoprocentně nebude čas na přepsání později, kdy to začnou používat další věci. Tyhle tickety se přištích pár měsíců přesouvají ze sprintu do sprintu, pak se to přesune na plán na příští rok a pak se zavřou jako "not relevant after 5 years".


Tohle je ten problem. Dokud to mate takhle tak mas pravdu a musite delat gatekeeping reviews.

Co to znamena "se presouvaji?" Tohle proste neni k diskuzi. Kdyz to nekdo zkusi proste to presunu zpatky a vyrikam si s nima, at mi do toho nesahaji.

Máš tedy možnost pozastavit vývoj nových fíčur, aby vám nerostl maintenance cost?

A Ty ne?

sním o tom, ale tech lead má malou vyjednávací pozici :/

Re:Jak děláte code review?
« Odpověď #23 kdy: Dnes v 18:52:42 »
Pokud není čas na "udělat to pěkně už na prvním MR", tak stoprocentně nebude čas na přepsání později, kdy to začnou používat další věci. Tyhle tickety se přištích pár měsíců přesouvají ze sprintu do sprintu, pak se to přesune na plán na příští rok a pak se zavřou jako "not relevant after 5 years".


Tohle je ten problem. Dokud to mate takhle tak mas pravdu a musite delat gatekeeping reviews.

Co to znamena "se presouvaji?" Tohle proste neni k diskuzi. Kdyz to nekdo zkusi proste to presunu zpatky a vyrikam si s nima, at mi do toho nesahaji.

Máš tedy možnost pozastavit vývoj nových fíčur, aby vám nerostl maintenance cost?

Jo a ne, ale ani to nepotrebuju. Vetsinou to funguje bez problemu, ale eskalacni cesta by asi byla takova, ze tech lead prijde za mnou az po tom co ho product manager tlaci ze ma deprioritizovat neco na ukor ficur. Ja si pak promluvim s product managerem a ukazu mu kde mame zdokumentovanej proces a kde jsem se vsichni shodli jak to budeme delat a ze ted nemuzem zacit "sekat rohy" a kdyz nahodou by na tom takovej PM trval tak pujdu za cluster leadem a udelam na to risk ticket, ale takhle daleko to nikdo nenecha zajit...

Re:Jak děláte code review?
« Odpověď #24 kdy: Dnes v 19:55:42 »

Tenhle bod hlavně, ale i celý příspěvek je psaný z pohledu jako kdyby code reviews byly nějaká náhrada testů. To je za mě naprosto chybný pohled, code reviews mohou nějaký bug sem tam zachytit, ale primárně jsou zaměřené na úplně jiné věci. Na to, jak smysluplné automatické testy jsou, jak moc pochopitelný je kód, jestli jsou proměnné a funkce dobře pojmenované, high-level věci, různé pasti... My třeba máme kód, co běží v mnoha různých deploymentech a chová se na nich různě, což se přepíná feature flagy. Nedávno jsem jednomu juniorovi vrátil kód, kde testoval, zda je na konkrétním deploymentu podle jeho jména místo co by zavedl feature flag. Testy by procházely, ale code review tohle nesmí projít.


Urcite kod review neni nahrada za testy. (Takze tohle je tak trochu strawman.. ale)
Spoustu se toho ale da otestovat treba ArchUnitem...

Ale k tvemu konkretnimu prikladu....
Fungovalo by to na produkci? To ze se to testuje podle jmena a neni tam feature flag? Nebo by to zpusobilo outage?

Pokud by to fungovalo tak to tam chvilku muze vydrzet a vyresim to v ex-post code review a opravim v pristim sprintu.
Pokud by to nefungovalo zachyti to treba uz ArgoCD rollouts nebo neco takoveho pri nasazeni na 10% a provede se rollback.

A ano.. uznavam, ze se muze stat ze proste neco utece a zpusobi to skody v produkci, ale...
1. nejednou se mi to stalo i kdyz jsme delali gatekeeping code reviews takze to urcine neni vsespasne...
2. Tim, ze s tim pocitam, si zase dam zalezet na monitoringu a alertingu... a jakmile se objevi anomalie tam muzu zareagovat a rychle to opravit nebo odrolovat...


Taky je dobry treba mit v pipeline alerty na to, ze neco potrebuje approval.. treba migracni scripty je asi lepsi kontrolovat protoze se to dost casto blbe odrolovava.