Preskočiť na hlavný obsah

← Všetky články

Rozširovanie DoD je najlacnejší nástroj na zlepšovanie

Vlani som sedel s tímom, ktorý mal na stene pripnutú Definition of Done: kód prešiel code review, má unit testy, je zmergovaný do main. Bol to dobrý zoznam. Dobrým zoznamom bol asi osemnásť mesiacov, a práve v tom bol problém, hoci to v miestnosti nikto takto nevidel.

Spýtal som sa, kedy ju naposledy menili. Nastalo ticho. Také, z ktorého odpoveď viete skôr, než ju niekto vysloví: „nemenili sme ju“. Niekto nadhodil, že nemali dôvod, lebo definícia stále platí. Všetko, čo dodali, ju spĺňalo. Latku prekonávali každý Sprint.

Takto vyzerá zaseknutá slučka zlepšovania zvnútra. Nevyzerá ako úpadok. Vyzerá ako stálosť. Tím prekonáva latku, latka zostáva na mieste a každý si tú stálosť vykladá ako kvalitu. Štandard, ktorý stíchol, pôsobí presne ako štandard, ktorý tím zvládol, a zvnútra ich od seba nijako neodlíšite.

Stabilná latka nie je vysoká latka

Diagnóza, na rovinu. Ak sa vaša Definition of Done za rok nerozšírila, váš tím prestal dozrievať. Stabilita, ktorú si vykladáte ako kvalitu, je príznakom slučky, ktorá stíchla.

Znie to tvrdo a najprv to zabolí, lebo nás naučili vnímať stabilný štandard ako úspech. Nastavíte latku, dôsledne ju prekonávate a nazvete to prevádzkovou excelentnosťou. Lenže štandard, ktorý vždy dokážete splniť, nemeria váš strop. Meria vaše pohodlie. Definícia, ktorá sa prestala meniť, vám už nepovie nič o tom, či sa zlepšujete. Povie len to, že ste sa nezhoršili.

Definition of Done pritom nie je vysvedčenie z lokálnej efektivity, z toho, ako čisto beží každý krok vo vlastnej pipeline. Meria, ako blízko je tím k „produktu hotovému“: k celému produktu, ktorý sa naozaj dá dodať, nie iba ku kúsku, ktorý práve vlastní tento tím. Zrelosť je pohyb smerom k tomu celku, nie upratanejšia verzia práce, ktorú už aj tak robíte.

Všetko, čo produkt potrebuje na to, aby sa dal dodať, ale čo vaša definícia zatiaľ nevyžaduje, aj tak musí niekto urobiť. V LeSS od Larmana a Voddeho to má názov: undone work. Kopí sa v undone departmente, v samostatnej skupine QA, v integračnom tíme, u release inžinierov, v hardening Sprinte prilepenom pred každý release. Kus práce teda nikdy nie je iba hotový. Je hotový plus undone. To, čo naozaj dokážete dodať, sa rovná vašej Definition of Done plus všetkému, čo ste potichu posunuli downstream.

Zamrznutá definícia vyzerá v poriadku práve preto, že tá undone polovica je neviditeľná odtiaľ, kde tím stojí. Tím prekonáva latku každý Sprint a nikdy sa nepozrie, ako sa niekde inde kopí hŕba undone worku. Stálosť na stene neznamená, že medzera zmizla. Je to medzera, na ktorú sa už nikto nepozerá.

Porovnajte to s tímom, ktorý latku stále posúva nahor. Po šiestich mesiacoch pridá integračné testy. Po roku vyžaduje performance benchmarky a čistý security scan. Po osemnástich mesiacoch sa každá zmena automaticky nasadzuje na staging so smoke testami. Po dvoch rokoch sa dostáva do produkcie za feature flagom, s nasadenou telemetriou. Každé z tých rozšírení urobí čosi nepríjemné: spätne mení „hotové“ z minulého štvrťroka na nehotové. Práca, ktorá podľa starej definície prešla bez poznámky, je podľa novej viditeľne nedorobená.

Presne o tú nepríjemnosť ide. Definícia, ktorá nikdy nezahanbí vašu predošlú prácu, je definícia, ktorá si prestala robiť svoju robotu.

Najlacnejší spôsob, ako slučku znova naštartovať

Zaseknutá slučka zlepšovania sa dá rozhýbať aj draho. Môžete rozbehnúť transformačný program, najať konzultantov, aby posúdili vašu zrelosť, postaviť centrum excelentnosti, zadať audit, kúpiť nástroj, ktorý sľubuje, že odhalí plytvanie. Z väčšiny toho vzídu reporty. Systém sa zmení málokedy.

Rozširovanie Definition of Done je iné, a nie preto, že by bolo bezbolestné. Práca, ktorú spustí, je drahá, a má byť. Skutočným nákladom akéhokoľvek zlepšenia je učenie, a odnaučiť tím terajšie návyky a naučiť ho nové (písať testy, ktoré preskakoval; postaviť pipeline, ktorú nikdy nemal; naučiť ľudí, ktorí vždy robili len jednu prácu, ešte aj tú druhú) je pomalé a ťažké, nech sa k tomu dopracujete akoukoľvek cestou. Ten účet zaplatíte bez ohľadu na to, ktorý nástroj si zvolíte.

Tie drahé cesty pridávajú k učeniu všetko, čo sa okolo neho nabalí: program, posúdenie, konzultantov, nástroj, kopu reportov. Rozširovanie definície nepridáva takmer nič z toho. Žiadny nový headcount, žiadny nový rozpočtový riadok, žiadny off-site. Na krátkej retrospektíve sa dohodnete na jednej veci, ktorú terajšia definícia ešte nevyžaduje, a zapíšete ju. Nástroj je takmer zadarmo. Len odmieta zaplatiť účet za učenie namiesto vás, lebo to za vás nedokáže zaplatiť nič.

Napísať tú vetu však nie je to isté ako splniť ju. Pridať do definície „automaticky sa nasadzuje na staging“ zaberie jednu vetu; postaviť pipeline, aby to naozaj platilo, zaberie týždne. A práve o tú medzeru ide. Len čo ten riadok napíšete, meriate každý kus práce latkou, ktorú tím ešte nedokáže prekonať, a každé rozšírenie vtiahne kus undone worku späť do tímu: integrácia, ktorá kedysi čakala na samostatnú skupinu, sa teraz musí urobiť v Sprinte, a undone department sa zmenší presne o to, čo ste vstrebali. Za naozaj užitočné na tom považujem toto: rozšírenie je diagnóza aj záväzok jedným ťahom. Ukáže vám, kde je tím slabý, podľa toho, čo nová požiadavka odhalí, a zaviaže ho k drahému učeniu, ktoré tú medzeru zmenšuje, presne tam, kde to produkt potrebuje.

Presne toto mal Taiichi Ohno na mysli, keď hovoril o kaizene zbavenom plagátovej verzie. Štandardizujte súčasný najlepší postup, lebo tím bez štandardu nemá základ, od ktorého by sa mohol odraziť. Potom štandard zlepšite, pozorujte výsledok a nový základ zapíšte ako ďalší dočasný štandard. Veta, ktorá to drží pokope, znie „no standard, no kaizen“: bez štandardu niet kaizenu. Veta, na ktorú sa zvyčajne zabúda, je tá druhá polovica pravidla: každý štandard je dočasný. Ohno svojim ľuďom hovoril, že si výplatu neodpracovali, ak nechali štandardizovanú prácu mesiac nezmenenú. Definition of Done je štandardizovaná práca softvérového tímu a platí pre ňu to isté pravidlo.

A signál je hlasný, lebo sa definícia dotýka všetkého. Metrika na dashboarde potrebuje niekoho, kto ju vyloží. Rozšírená DoD nie: vo chvíli, keď novú požiadavku zapíšete, mení pre každú položku v backlogu to, čo znamená „dokončené“. Len čo je nová požiadavka v definícii, nie je kam schovať prax, ktorú tím potichu prestal robiť.

Kam rozširovať?

Pomáha vedieť, k čomu kráčate, a tu väčšina programov „excelentnosti“ chápe cieľ naopak. Berie ho ako maximum: viac kontrol, viac schvaľovaní, viac brán, až kým definícia nie je múrom požiadaviek, ktorý si nikto neudrží v hlave. To je zase ten reflex lokálnej efektivity, leštenie checklistu namiesto produktu.

Aristoteles mal opačnú predstavu. Niečo je úplné, napísal, keď sa už nedá nič pridať a nič odobrať. O dokonalosti rozhoduje rovnako to, čo chýba, ako to, čo tam je. Pre softvérový tím tým smerom nie je „najdlhšia možná Definition of Done“, ale dokonalá Definition of Done: každý deň sa celý produkt dá dodať, bez zvyšného undone worku a bez kroku, ktorý neslúži zákazníkovi. Väčšina rozšírení vás k tomu posúva tak, že požiadavku pridá. Niektoré vás k tomu časom posunú tak, že ju odoberú: manuálna kontrola, ktorú ste kedysi potrebovali, sa stane automatickou, takže z definície zmizne celkom.

Nikdy tam nedôjdete. To je zámer. Je to smer, nie míľnik. Medzera medzi dnešnou definíciou a „produktom hotovým“ je váš undone work, a nedosiahnuteľný smer držíte práve preto, že sa tá medzera nikdy celkom nezacelí, takže ťah k zlepšovaniu sa nikdy nevypne. Dosiahnuteľný cieľ raz dosiahnete a zlepšovanie sa tým zastaví, čo je presne to, do čoho narazil tím, ktorého definícia sa celý rok nepohla.

Prečo tímy definíciu aj tak zamrazia

Ak je ten nástroj taký lacný a taký užitočný, zaujímavá otázka znie, prečo po ňom stále siaha tak málo tímov. Náklady na učenie sú súčasťou odpovede a sú skutočné. Ale nie sú celou odpoveďou, lebo tímy definíciu zamrazia aj vtedy, keď by si ďalší krok mohli dovoliť. Zvyšok je politika, a je racionálna.

Rozšíriť Definition of Done znamená postaviť sa a povedať, že práca, ktorú všetci pokladali za hotovú, hotová nie je. Rozšírenie zviditeľní undone work, a tá viditeľnosť je drahá. Niekto tú prácu nahlásil ako dokončenú. Niečí status report, niečí release note, niečí sľub stakeholderovi stáli na starej definícii. Keď zdvihnete latku, spätne sa z tých hlásení stanú optimistické správy a ľudia, ktorí ich podali, to pocítia. Tím, ktorý zamrazí svoju DoD, sa nevyhýba námahe. Vyhýba sa rozhovoru, v ktorom sa „hotové“ z minulého štvrťroka otvorí nanovo a hŕba undone worku sa pomenuje nahlas.

Preto tento nástroj potrebuje krytie zhora. Tím bude definíciu rozširovať len vtedy, ak ľudia, ktorým sa tím zodpovedá, znesú viditeľnú nedokonalosť: ak si „toto kedysi prešlo a teraz neprejde“ vyložia tak, že slučka funguje, nie tak, že tím cúva. Tam, kde tá tolerancia chýba, sa tímy poučia rýchlo a definície sa už nikto nedotkne, nie preto, že latka je správna, ale preto, že hýbať ňou je nebezpečné. To zamrazenie je rozumná reakcia na manažéra, ktorý trestá zdanie nedokončenosti viac než fakt stagnácie.

Tak sa znova zamyslite nad tímom s tým dobrým zoznamom na stene. Definícia sa mu osemnásť mesiacov nepohla a tú stálosť si vykladal ako kvalitu. Lenže stálosť mu to nemôže povedať. Zamrznutá latka je presne to, čo by skrylo hŕbu undone worku, ktorá sa kopí downstream, a zároveň presne to, ako by vyzeralo skutočné majstrovstvo. Zvnútra miestnosti sú obe možnosti totožné. Jediný spôsob, ako zistiť, v ktorej z nich žijete, je zdvihnúť latku a pozrieť sa, čo zlyhá.

Na najbližšiu retrospektívu si vezmite inú otázku než tú, či je vaša kvalita dobrá. To, že je vaša kvalita dobrá, cíti práve zaseknutý tím. Otázka znie, kedy vaša Definition of Done naposledy narástla, koľko undone worku po nej zostáva downstream a či má niekto v miestnosti dosť váhy na to, aby sa to dalo pomenovať nahlas bez rizika. Ak nikto, tak tá stabilita na vašej stene nie je hotový produkt. Je to slučka, ktorú ste potichu vypli.

Read in English →

Ako to vyzerá v skutočnej organizácii →

Všetky články →