Archive for the ‘Knihovnička SE’ Category

Cíl

Thursday, August 22nd, 2013

Každá akce, která přivádí společnost blíže k jejímu cíli, je produktivní. Každá akce, která společnost blíže k cíli nepřivádí, je neproduktivní. [...] Produktivita je bez významu, pokud nevíte co je váš cíl.

Pokud chcete opravdu do hloubky pochopit Kanban, následujte mého příkladu a přečtěte si knihu The Goal od Eliyahu Goldratta. Je to šťavnaté čtení, které vás přinutí k zamyšlení.

Pokud jste četli The Phoenix Project, tak vás nepřekvapí styl. Je to napínavý román, kde se hlavní hrdina snaží zachránit továrnu na pokraji krachu. Je to čtivé, ale hlavně jsou tam neuvěřitelně názorné příklady, díky nimž pochopíte z čeho vznikla touha omezovat rozpracovanou práci (WIP), zkracovat stories a podobně. Myslel jsem si že to chápu už před přečtením této knihy, ale nebyla to pravda.

Celé se to točí kolem teorie omezení (theory of constraints (TOC)). Ač to zní vznešeně tak je to jednoduché. Každý netriviální výrobní proces se skládá z více navzájem závislých kroků. Když to převedu na vývoj software, tak mám analýzu, implementaci, vývoj, testování a nasazení. Je evidentní, že každá z těchto fází má jinou kapacitu. Jinými slovy, vždy bude jeden z těchto kroků nejpomalejší. Je jedno který, ale kapacita celého řetězce je shora omezena kapacitou tohoto úzkého hrdla. Takže pokud například vaši testeři dokáží otestovat 2 stories za týden, tak víc než 2 stories za týden nedodáte, ani kdyby se analytici a vývojáři rozkrájeli.

Je to samozřejmé, že? Tak se zamyslete a řekněte mi, co je vaše úzké hrdlo a jaká je jeho kapacita. Víte to? Pokud ano tak gratuluji. Pokud ne, tak to zkuste zjistit. Bez toho totiž nemůžete zvýšit kapacitu celého procesu. Ta se dá totiž zvýšit jenom tehdy, když se věnujete tomuto omezení. Nemá smysl se zaměřovat na cokoliv jiného. Když jsou vaším úzkým hrdlem testeři, tak zvýšeným výkonem při vývoji zvýšíte jenom hromadu práce čekající na testování.

Z TOC plyne také jeden zajímavý důsledek. Pokud máte řetězec závislých činností, tak ty, které nejsou úzkým hrdlem, musejí mít nadbytečnou kapacitu. Jinými slovy, musejí se flákat. Pokud se je budete snažit vytížit na sto procent, tak jenom zvýšíte tlak na úzké hrdlo.

Co s tím? Samozřejmě je potřeba se věnovat vašemu největšímu omezení a buď zvýšit jeho kapacitu, ubrat mu práce, nebo ho obejít. Jednoduché, že?

Musím upozornit, že kniha se nevěnuje vývoji software. Byla napsána před 25 lety, kdy se software ještě tolik neřešil. Je ale zajímavé cvičení porovnávat problémy továrny s našimi problémy a zkoumat, jestli to pasuje. U továrny je například jednodušší poznat co vede k cíli. Když vyrábí něco, co se prodá, tak je to dobře. Když vyrobí něco jenom na sklad, tak to nezvyšuje zisk a je to špatně. Co ale u nás? Jak poznám jestli kód který jsem vyvinul, otestoval a nasadil něčemu pomůže nebo je jenom „na sklad“? Na druhou stranu, u software nehrozí nedostatek poptávky. Backlog bývá obvykle nekonečný. V software také nemusíme řešit materiál. Obvykle pálíme jenom čas, takže nám štosy rozpracovaných výrobků uvnitř „továrny“ vadí z jiných důvodů.

Už musím končit. Knihu vřele doporučuji všem, kteří se zajímají o Lean a Kanban, rozšíří vám obzory. Rozloučím se banálním citátem.

...chceme umět odpovědět na tyto tři otázky: Co změnit? Na co to změnit? Jak tu změnu zařídit? ... Pokud manažer nezná odpověď na tyto otázky, má právo se nazývat manažerem?

Lean from the Trenches

Wednesday, May 29th, 2013

Dostala se mi do rukou skvělá knížka, Lean from the Trenches (Hubeňouři ze zákopů) od Henrika Kniberga (tady se dá stáhnout draft)

Hlavní důvod, proč mi přišla tak dobrá je, že tam řeší stejné problémy, jaké máme aktuálně my. Od plánování, přes implementaci, až po testování. Celá knížka je vlastně popis toho, jak dělali projekt pro švédskou policii trvající něco přes rok a čítající asi šedesát lidí. Používali mix Kanbanu, Scrumu, Leanu a kdovíčeho ještě. Což je nakonec jedno, protože jak píše,

.. občas týmy dělají Kanban, protože se jim nelíbil Scrum. Až později přijdou na to, že Scrum problémy nezpůsoboval, ale upozorňoval na ně.

Nástěnka

Velká část knihy se točí kolem jejich Kanban nástěnky. Abych zase ocitoval

Rychlost projektu je z velké části určena tím, jestli všichni vědí co se děje. Když všichni vědí, kde právě jsme a kam jdeme, je pro ně mnohem snazší jít stejným směrem.

Dokonce má celou kapitolu o tom, proč používají fyzickou nástěnku místo elektronické. Hlavní důvod je snadná měnitelnost. Je mnohem snazší ji rozvíjet a upravovat. Když něco chybí, tak se to dopíše. Něco je špatně, vezmu fixu a překreslím to. Není potřeba trávit hodiny klikáním v Jiře. Stačí vzít tužku a z pár minut je hotovo.

U všech svých klientů jsem si všiml jednoho vzoru – obdobné nástěnky mohou změnit organizační kulturu. ... Viděl jsem, jak se změnily vzájemné vazby a jak se díky spolupráci u nástěnky zvýšila důvěra mezi týmy.

Metriky

Také mě zaujaly metriky, které používají. Jsou to

  1. Počet věcí (featur) dodaných za týden
  2. Čas, za který proleze featura celým procesem

Je dobré si všimnout, že neměří komplexitu. Takže jim je jedno jestli udělají deset velkých nebo malých věcí. Prý je to proto, že se to nakonec stejně vykrátí. Odhady složitosti jsou nepřesné a metriku zkreslují. Počet je podle něj stejně vypovídající, ale mnohem jednodušší. Navíc je to tlačí do malých kousků, což je taky jenom dobře.

Druhá metrika je také zajímavá. Mají ji hlavně proto, aby je nutila zkracovat fronty mezi jednotlivými fázemi. Příliš velký čas vás upozorní třeba na to, že věci zbytečně čekají na otestování. Když se snažíte celkový čas zkracovat, musíte tato úzká hrdla řešit a to celému procesu jen prospěje.

Náš proces nebyl navrhnut, ale objeven.

Diagramy příčiny a důsledku

Úplnou novinku pro mě byly diagramy příčin a důsledků. Řešíte třeba dlouhé release cykly. Doporučuje nakreslit si diagram. Začnete u toho, že máte dlouhé release cykly. Nad to píšete jaké to má dopady, a pod to jaké jsou důvody. Často tam vyběhnou začarované kruhy, jako třeba tady.

Cause-effect diagram

Doporučuje se samozřejmě zaměřit na kořeny toho problému. Když vyřešíte příčinu, je možné, že vyřešíte i problém. Začarovaný kruh se rozpadne. V tomto konkrétním případě je dobré vyhazovat požadavky, pokud se nějaké jiné do releasu přidají. Více se dočtete tady.

Ostatní

Pak tam má také spoustu zajímavých věcí o retrospektivách, neustálém zlepšování, pokrytí testy a dalších. Takže pokud válčíte s agilním procesem, tuto knížku vřele doporučuji. Je docela krátká, ale nacpaná praktickými radami. Ideální kombinace.

Obtížné rozhovory

Sunday, February 10th, 2013

Nedávno jsem dočetl knihu, která je, jak se říká, otvírák na oči. Jmenuje se Difficult Conversations. V jednoduchosti je o tom, co se děje, když se lidi baví o něčem ne právě příjemném. Takové ty situace, kdy se šéfa snažíte přesvědčit, že si zasloužíte přidat, sdělit přítelkyni, že chrápe nebo vysvětlit sousedovi, proč potřebujete vrtat do panelu v neděli v šest ráno.

Je to knížka ohromě užitečná pro každého, kdo přijde do kontaktu s lidmi. Mě opravdu otevřela oči. Teď, když vidím lidi diskutovat, tak si uvědomuji, co se tam děje, proč se hádají a co měli udělat lépe. Na sebe to bohužel zatím aplikovat neumím.

Asi nedokážu vytáhnout to podstatné, tak tu jen vypíšu to, co jsem si z toho odnesl já.

Obtížné rozhovory téměř nikdy nejsou o tom zjistit fakta. Jsou o konfliktech ve vnímání, interpretacích a hodnotách. ... Nejsou o tom co je pravda, ale o tom co je důležité.

... obtížné konverzace ne jen že se dotýkají pocitů. Jsou ve svém jádru o pocitech. Pocity nejsou jenom nějakým vedlejším produktem obtížného rozhovoru, jsou jeho nedělitelnou součástí. ... Občas jsou pocity to jediné důležité.

Cože, takže když se hádám, tak nezáleží na tom jestli mám pravdu? No jo, asi opravdu ne. Je jedno, jestli přítelkyně chrápe, důležité je co cítí ona a co já. Je jedno, jestli si zasloužím přidat, jde o to co cítí můj šéf.

Předpokládáme, že známe záměry ostatních, i když tomu tak není. ... Pravda je, že záměry jsou neviditelné. Jenom je vyvozujeme z chování ostatních. Jinými slovy, si je vymýšlíme. ... Záměry jsou důležité a pokud je odhadnete špatně, tak to ohrožuje váš vztah.

To se mi děje běžně. Když někomu ublížím já, tak je to z nedopatření. Když někdo ublíží mě, tak je to sobecký hnusný zmetek. Když přijdu pozdě, tak je to proto, že mi ujel autobus, když mě nechá čekat někdo jiný, tak je nespolehlivý.

Když někoho obviníme z nekalých záměrů, tak se začne bránit. Z jeho pohledu se brání proti křivému nařčení. Z našeho pohledu je jenom defenzivní. My máme pravdu, on jen není dost silný si to přiznat. ... Obě strany si myslí, že jsou oběť a že se musí bránit.

Sakra, to jako znamená, že bych neměl lidem říkat, že jsou nespolehliví, protože přišli pozdě. Že se jakou začnou bránit a nikam se nedostaneme?

Proč je to vždycky ten druhý, kdo je naivní, sobecký, iracionální nebo manipulativní?

To by mě taky zajímalo.

Hmm, už mě to tu nebaví opisovat. Koukám, že jsem si podtrhl velkou část té knížky. Tak to zkusím jinak. Co jsem si zapamatoval ohledně toho, jak by měl člověk správně jít do obtížných rozhovorů.

Rozmyslet si, co vlastně chci. Chci se jen pohádat, někomu to vytmavit nebo najít řešení? Pokud chci najít řešení, tak nejdřív musím zjistit pohled toho druhého. Když mu budu do hlavy cpát co jsem vymyslel, tak mě nebude poslouchat. Je to divné ale je to tak. Musím si prostě poslechnout, jaký je jeho pohled na věc. Když já nebudu poslouchat jeho, nebude poslouchat on mě.

Pokud v tom problému mám nějaké pocity, tak si je musím umět uvědomit. Musím vědět, proč mě to štve, proč se cítím ublíženě nebo jak se vlastně cítím. Musím to taky umět sdělit. Nemá smysl mlátit dveřma, ironicky se ušklíbat nebo zvedat oči v sloup. Možná mi to uleví, ale situaci to jen zhorší.

Musím pečlivě oddělovat fakta od svých názorů nebo pocitů. Takže nemá smysl říkat: „Jsi sobec.“ Místo toho musím říci: „Nechala jsi mě čekat dvě hodiny na mraze ve vánici u otevřené žumpy. Jsem zmrzlý a cítím se, že ti na mě nezáleží.“. Vypadá to, že oba výroky jsou stejné, ale nejsou. První je můj soud a vyvolá jen obranu a protiútok. U druhého je větší šance na konstruktivní rozhovor. Tady pozor na zobecňování. Pokud bych začal s „Zase jsi mě nechala čekat“ tak si jen koleduju o protiútok.

Užitečné je taky začít tím, co vlastně chci. Když jdu někomu dát rozkaz, tak mu musím říci, že mu dávám rozkaz. Když jdu něco diskutovat, tak musím říci, že jdu diskutovat. Vyhnu se tak problému s tím, že někomu dávám rozkaz, ale on to pochopí, že s ním chci diskutovat. Mě pak naštve, že mi odporuje, on bude překvapený proč jsem naštvaný a bude to k ničemu.

To je asi všechno. Takže pokud přicházíte do kontaktu s lidmi a není vám jasné, proč se všichni kromě vás chovají iracionálně, tak vám tuto knihu vřele doporučuji. Je sice trochu dlouhá, ale stojí to za to.