‚WTF per minute‘, alebo ‚Aha moments per minute‘?

cover

Koľkokrát ste dostali spätnú väzbu na kvalitu vašej práce, ktorá sa sústredila len na chyby, bez toho aby bola zohľadnená situácia, ktorá ovplyvnila výsledok? Ako často ste sa cítili nepríjemne, keď vám bola kritizovaná práca bez znalosti okolností, ktoré ovplyvnili vaše rozhodnutia alebo obmedzili čas na dokončenie úlohy? Aký vplyv mal tento typ spätnej väzby na vašu motiváciu a dôveru v tím? Ako by mohla spätná väzba zameraná na pozitívne momenty a učenie ovplyvniť váš prístup k práci a vzťahy s kolegami?

Metrika “WTF per minute”

Počas nedávnej diskusie so skúseným vývojárom mi bola pripomenutá metrika „WTF per minute“ ako indikátor kvality kódu.

Metrika „WTF per minute„, ktorú spopularizoval Thom Holwerda, má slúžiť na vyjadrenie frustrácie pri pohľade na neprehľadný alebo ťažko pochopiteľný kód. Táto myšlienka poukazuje na to, ako často sa čitateľ kódu pozastaví nad jeho nezrozumiteľnosťou či nedostatkami.

Aj keď je tento koncept na prvý pohľad vtipný, otvára diskusiu o tom, ako negatívne metriky môžu narušiť dynamiku tímov, proces učenia a brániť otvorenej komunikácii a tímovému rastu.

Tým, že sa zameriavame na zlé príklady bez toho, aby sme zohľadnili kontext alebo okolnosti, ktoré viedli k napísaniu kódu, vytvárame prostredie, v ktorom sa vývojári môžu cítiť ohrození. To oslabuje dôveru a spoluprácu v tíme. Namiesto toho by sme mali identifikovať pozitívne aspekty kódu, ktoré slúžia ako príklad pre ostatných, a tým umožniť tímu rásť a neustále sa zlepšovať.

Podobné metriky neprispievajú k spolupráci a rozvoju vedomostí, ale naopak môžu oslabovať tímovú súdržnosť.

Lean a Agile hodnoty ako inšpirácia

Paradoxne pre riešenie nemusíme ísť ďaleko. Lean a Agile princípy poskytujú pevný základ pre prehodnotenie prístupov k zlepšovaniu kvality kódu. Lean hodnoty podporujú elimináciu plytvania a neustále zlepšovanie, zatiaľ čo Agile Manifesto stavia jednotlivcov a interakcie nad procesy a nástroje.

Aby sme vytvorili zdravé prostredie pre vývoj kódu, je dôležité podporovať otvorenú diskusiu, zdieľanie vedomostí a tímovú prácu.

Vzdelávajme sa z kódu

Keď som po skončení vysokej školy mal možnosť začať pracovať ako programátor, poháňala ma zvedavosť “Ako by to naprogramovali seniori?”. V mojom okolí ich v roku 1997 nebolo veľa. A ak áno, vtedajšia kultúra skôr posilňovala individualizmus a ego programátora, nie kolektívne vlastníctvo, tímovosť, vzájomné vzdelávanie a odovzdávanie skúseností. Ľudia boli tým viac platení čím viac boli expertmi. A to viedlo k tomu, že kód dokonca nebol zdieľaný. “Kód bol môj”. Netušili ste ako to ten druhý naprogramoval, pretože ste dostali maximálne DLL s popisom interfejsov.

Osobne ma to motivovalo hľadať iné zdroje vzdelávania. V tej dobe však bolo možné sa veľa naučiť v SDK a zdrojových kódoch (v tej dobe) nových technológií ako napr. Turbo C++ pre DOS, MFC/ATL pre Windows, alebo neskôr prelomové Distributed/Component Object Model. Bokom nezaostali ani teórie algoritmov, alebo Design Patterns. Boli to hodiny štúdia kódov napísaných neznámymi ľuďmi. Zdrojových kódov, ktoré obsahovali nielen správny kód, ale aj chyby. Hodiny, z ktorých (pre mňa neuveriteľne) čerpám ešte aj po 28 rokoch.

Čítanie kódu ma výrazne posunulo v abstrakcii, premýšľaniu vo vzoroch, znovapoužiteľnosti kódu a budovaniu nadstavieb.

Prostredie podporujúce učenie

Aby sme vytvorili prostredie podporujúce učenie a neustály rast, môžeme použiť viaceré metódy, ktoré sú osvedčené v praxi:

  1. Code Reviews – recenzovanie kódu by nemalo slúžiť len na odhalenie chýb, ale malo by byť nástrojom na zdieľanie poznatkov a skúseností. Vývojári môžu identifikovať pozitívne aspekty kódu, ktoré sú príkladom pre ďalší tím. Nástroje ako GitHub a GitLab umožňujú označiť miesta v kóde, ktoré si zaslúžia pozornosť, či už z dôvodu efektívneho riešenia, alebo inovatívneho prístupu.
  2. Pair Programming – párové programovanie umožňuje dvom vývojárom pracovať spolu na riešení jedného problému. Tento prístup zvyšuje nielen kvalitu kódu, ale aj tímovú spoluprácu a zdieľanie vedomostí. Firmy ako ThoughtWorks a Stripe využívajú tento prístup na posilnenie tímového rastu a učenia. Osobne som najradšej programoval v pároch s testerom, alebo dokonca zástupcom zákazníka. Výrazne to menilo perspektívy ako sme sa na seba pozerali.
  3. Mob Programming – tento prístup zahŕňa celý tím pracujúci na jednej úlohe naraz. Mob programovanie podporuje rýchlejšie zdieľanie vedomostí a spoluprácu, čím sa znižuje riziko komunikačných bariér. Mob programming je skvelý keď sa rýchlo potrebujete všetci v tíme naučiť základy novej technológie. Napriek, na prvý pohľad, veľkej cene vo forme času do takéhoto stretnutia, je v skutočnosti tento čas výraznou investíciou do budúcnosti tímu a jeho zastupiteľnosti a rýchlosti.
  4. Test Coverage with Learning Focus – pri sledovaní pokrytia testami sa môžeme zamerať nielen na to, koľko kódu je otestovaného, ale aj na to, čo sa tím naučil počas písania testov. Tento prístup vedie k lepšiemu návrhu kódu a umožňuje identifikovať nové osvedčené postupy.
  5. Refactoring Opportunities – refaktoring je dôležitým nástrojom na zlepšovanie čitateľnosti a udržateľnosti kódu. Firmy ako Netflix a GitHub kladú dôraz na refaktoring ako na súčasť neustáleho zlepšovania a učenia.

A práve tieto techniky vytvárajú kvalitný predpoklad pre ocenenie pozitív a inovácií.

“Aha moments per minute” ako nová metrika

Namiesto kritizovania kódu prostredníctvom metriky „WTF per minute“ navrhujem zameranie sa na pozitívne „Aha momenty“. Navrhujem, aby sme sa zamerali na “Aha momenty per minute” — chvíľ, keď niekto číta kód a povie si:

„Aha, takto by som to mohol robiť!“

Tieto pozitívne momenty poukazujú na dobre navrhnutý a implementovaný kód, z ktorého sa môžu ostatní poučiť. Namiesto hľadania nedostatkov a ich trestania by sme mali zvýrazniť príklady, ktoré ukazujú, ako dosiahnuť dobrý kód, aby sme tak definovali tímové štandardy.

Takéto momenty predstavujú chvíle, keď vývojári objavia nové, prelomové, alebo elegantné riešenie v kóde.

S pomocou metriky “Aha moments per minute” vytvoríme zdravé prostredie, ktoré podporuje zdieľanie vedomostí a rast.

Ako na to?

Ak chcete implementovať pozitívne metriky ako „Aha momenty“ a zamerať sa na učenie z kódu, nasledujúci postup vám pomôže dosiahnuť lepšie výsledky:

  1. Vytvorte kultúru zdieľania vedomostí: Povzbudzujte tím, aby pravidelne diskutoval o úspechoch v kóde a o tom, čo sa z nich naučil. Zaveďte retrospektívy alebo meetingy zamerané na pozitívne príklady.
  2. Použite nástroje na sledovanie pozitívnych momentov: Nástroje ako GitHub či GitLab umožňujú označiť „Aha momenty“ v kóde, ktoré môžu slúžiť ako vzdelávacie príklady pre tím.
  3. Zmeňte prístup k code review: Proces recenzovania kódu zamerajte na učenie, nie kritiku. Zaveďte systém rotácie medzi reviewermi, aby každý člen tímu mohol prispieť svojimi skúsenosťami a znalosťami.
  4. Využívajte párové a mob programovanie: Párové alebo tímové programovanie uľahčuje prenos vedomostí medzi členmi tímu v reálnom čase a zlepšuje kvalitu kódu.
  5. Podporujte refaktoring: Identifikujte príležitosti na refaktoring, ktoré vedú k lepšiemu návrhu kódu a jeho čitateľnosti. Tým podporíte neustále zlepšovanie kódu a učenie tímu.
  6. Gamifikujte: lídri tímov by sa mali zamyslieť ako takýto prístup gamifikovať. Ako podporiť rozpoznanie a ocenenie zaujímvaých prístupov k riešeniu problémov, ktoré má cenu opakovať aj v iných tímoch, resp produktoch.

Nie, nemusíte merať tieto Aha momenty za minútu. Podstatný nie je totiž počet týchto Aha zistení, alebo ich frekvencia. Podstatné je čo ste sa z Aha momentu naučili, čo môžete využiť ako nový štandard.

Zmeňme kultúru kritiky na budovanie pozitívneho, vzdelávanie podporúceho prostredia, v ktorom sa každý člen tímu môže učiť a zlepšovať na základe skutočných príkladov z praxe.

AgileAgile transformácia

Mohlo by Vás zaujímať

Jeden krok vpred viac než istota na sto percent?

Jeden krok vpred viac než istota na sto percent?

„The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.“...

Tím ‚Furt dačo‘ a Backlog Refinement.

Tím ‚Furt dačo‘ a Backlog Refinement.

Aj drobnosť ako názov mítingu môže znechutiť vývojový tím. A bohužiaľ na škodu. Tím ‘Furt dačo’ v agilným...

Všetci sme sa mýlili, velocity nie je dôležitá.

Všetci sme sa mýlili, velocity nie je dôležitá.

Rozmachom Agile sa paleta nástrojov a praktík používaných pri vývoji produktov v IT prudko zväčšila. Začiatok...

Novinky

Naše Agiloviny

Nenechajte si ujsť výber toho najlepšieho z Agile, s čím sa stretli naši mentori. Nielen zo sveta produktov, vývoja, tipov a trikov, ale občas aj humoru. Posielame pravidelne, raz za občas :) #QualityOverQuantity

Posielať na

spracovaním osobných údajov

Ďakujeme