úterý 15. října 2013

CZ Podcast 84 - Vývoj aplikací v prostředí webového prohlížeče

Právě v prodeji na stáncích 84. díl s podtitulem i my JavaScriptaři budeme mít jednou takový pěkný ekosystém jako máte vy kluci v Jave. Sice se nám bude zdát Java hrozně těžkopádná, ale už teď jsme na ceste k něčemu podobnému. Teď vážně, určitě si to poslechněte, tenhle díl stojí za to!

pondělí 14. října 2013

Team geek postřehy

Nejoblíbenějším rozhraním pro komunikaci programátora s okolním světem je kompilátor, ačkoliv jeho výstup bývá občas lehce nekompatibilní a těžko použitelný pro komunikaci s dalšími lidmi. Většina geeku mylně pokládá technickou stránku software za jediné kritérium úspěchu. Mnohdy ovšem, k velké nelibosti geeku, rozhoduje lidská stránka vývoje - jak si lidé rozumějí a respektují jeden druhého, jak spolu komunikují uvnitř i navenek týmu směrem k managementu a zákazníkovi. Lidskému faktoru a jeho vlivu na vývoj software se věnuje kniha Team Geek s podtitulem A Software Developer's Guide to Working Well with Others. V tomhle článku vám zkusím přiblížit pár postřehů, které mě v knize zaujaly.


Pokora, Respekt a Důvěra

Almost every social conflict can ultimately be traced back to a lack of humility, respect, or trust.

Centrální myšlenkou knihy je aplikování třech pilířů - Humility (Pokora), Respect (Respekt) a Trust (Důvěra).


Pokora
Nejsem středobodem vesmíru a už vůbec nejsem neomylný. Jsem vždy otevřen k učení nových věcí a vlastnímu zdokonalování.
Respekt
Respektuji individuální schopnosti a možností lidí se kterými pracuji.
Důvěra
Věřím že ostatní jsou kompetentní dělat správné věci a rozhodnutí ve správný čas.

Celou knihou se jako červená nit táhne důraz na potlačení vlastního ega. Je to docela pochopitelné, protože jak autoři správně poznamenávají: vývoj software je týmovým sportem. Jednotlivé individuality dávají svoje ego ve prospěch týmu a týmové ego je to jediné, co se posiluje.


Kultura

Budování týmu stojí a padá s kulturou, která definuje formální i neformální pravidla, podle kterých tým funguje. Kultura a lidé, které si vybíráte a najímáte do týmu, jsou spojené nádoby.

A strong culture gives you focus, efficiency, and strength, and these things make for a happier team.

Silná kultura se vyznačuje maximálním zaměřením na doručování kvalitního software. Oproti tomu slabá kultura je zaměřena na jiné aspekty. Pro mě osobně je jedním ze znaků slabé kultury například trollovaní nebo neustále meetingování. Pokud veškerou svou energie vrhnete do plamenného diskutování nad nesmrtelností brouka, získáte ocenění přátel entomologického kroužku, ale doručení kvalitního software to nepomůže ani o milimetr. Zkrátka a jednoduše ztrácíte tah na branku a na to jediné se tu hraje.


If your team’s primary focus is anything other than that (e.g., partying, attending meetings, practicing one- upmanship) your team may bond tightly, but you won’t get very much software written.

Atributy silné kultury

  • Mission statement - pokud chcete, aby všichni táhli za jeden provaz, pokud možno jedním směrem, je potřeba jej definovat. Jeho znalost hraje roli nejenom při strategických rozhodnutích, ale i při běžných rozhodnutích.
  • efektivní meetingy
  • team ego (již bylo zmíněné)
  • komunikace - nastavte vhodné komunikační kanály (diskuzní skupiny, on-line chat, designové dokumenty). To je důležité nejenom pokud máte geograficky distribuovaný tým, ale i pro případ, kdy retrospektivně zkoumáte důvody nějakého rozhodnutí.

Samostatnou kapitolou silné i slabé kultury je způsob, kterým děláte rozhodnutí. Silná kultura se vyznačuje spíše konsensuálním rozhodováním, slabá se spíše vyznačuje rozhodnutím od shora (top down). Konsensuální rozhodování více odpovídá pilířům HRT a je přitažlivá díky svobodě a autonomii. Pokud chcete najmout ty nejlepší inženýry, můžete jenom těžko očekávat, že se budou podřizovat rozhodnutím, která za ně bude dělat někdo jiný. Takoví inženýři půjdou spíš za kulturou, která jim umožní podílet se na rozhodovacím procesu.

Formování kultury je značně ovlivněné výběrem lidí. Pokud najmete lidi, kteří nebudou sedět do vaší kultury, například tím že nebudou chtít potlačit vlastní ego ve prospěch týmu, dojde k jejímu totálnímu rozkladu. Ani sebelepší individualita nestojí za to, abyste měnili kulturu. Nezapomeňte, že vývoj software je týmový sport. Jednou z vlastností každé kultury je schopnost přitahovat lidi smýšlející podobným způsobem. A naopak kultura je určitým způsobem dále formuje.

Organizace

Každá organizace, ve které budete pracovat, má svoje vlastní pravidla a procesy, podle kterých funguje. Pokud dokážete tyhle procesy a pravidla pochopit, můžete je ohnout, aby pracovaly ve váš prospěch. Existuje pár technik, které vám v tom pomohou. Ze svojí zkušenosti a pár let života v korporaci shledávám některé z nich jako velmi efektivní.

Žádejte odpuštění ne povolení
Je jednoduché na někoho svalit odpovědnost, tím že se ho zeptáte, jestli něco můžete udělat. Máte sice krytá záda, ale zase je větší pravděpodobnost, že uslyšíte ne. Zároveň se nikam nikdy neposunete. Někdy se vyplatí to prostě zkusit a pokud to nevyjde, omluvit se a požádat o odpuštění.
Pokud něco nejde prosadit ze shora, prosaďte to ze spodu
Pokud se vám nedaří vaše nadřízené o něčem přesvědčit, například o tom, že je potřeba dělat agilní vývoj, udělejte to od spodu. Najděte dostatečnou podporu mezi svými kolegy, začněte to dělat guerillovým způsobem a pokud se to ujme, nadřízení nebudou mít jinou možnost než to akceptovat.
Šedá ekonomika
Moje oblíbená. V každé firmě funguje spolupráce, která není řízená žádnými procesy. Tým A dělal nějaký nástroj, potřebuji s ním poradit, zajdu za nimi a oni mi pomohou. Až budou něco potřebovat oni od mého týmu, mohou si být skoro jistí, že jim vyjdeme vstříc. Služba, laskavost bez nároku na protislužbu.

Vedení lidí

Bývá pravidlem, že po nějakém čase se z čistě technické pozice, kde odpovídáte jenom sami za sebe, posunete do pozice, kdy budete vést jiné lidi. Existuje celkem dost způsobů, jak to podělat a existuje pár tipů, které vám mohou docela dobře posloužit. Každý vedoucí by si měl uvědomit, že jeho ultimátním cílem je ochraňovat tým a odstraňovat z cesty všechny překážky, na které tým narazí během vývoje. Kromě technické stránky, která nemusí hrát již tak významnou roli, si při vedení lidí budete muset poradit překvapivě především s lidskou stránkou. Správný lídr by se měl opřít o HRT pilíře a pomocí nich nastavit kulturu, o které byla již řeč.

  • Strach z neúspěchu. Lidé kteří mají strach z neúspěchu nepodstupují žádné riziko. Ten kdo nepodstupuje žádné riziko, může dosáhnout jenom omezených výsledků. Podporujte kulturu, ve které není důsledkem neúspěchu jakýkoliv trest, ale ponaučení. Zároveň podporujte rychlé selhání (fail fast). Pokud něco nefunguje, tak ať to víte rychle. Dosáhnete mnohem lepších výsledků, protože lidé se na sebe nebudou bát vzít riziko. Pokud alespoň jednou za rok neselžete, znamená to, že na sebe berete malé riziko.
  • Ignorování lidských obtíží. Každý se občas dostane do situace, kdy není schopen formálně plnit povinnosti dané pravidly firmy. Máte skvělého podřízeného, který ovšem každý den dojíždí do práce dvě hodiny a díky tomu musí každý den odcházet ve čtyři odpoledne ačkoliv je oficiální pravidlo, že nikdo nesmí odejít před pátou. Povolte mu to nebo to pravidlo nějak obejděte, on vám to v budoucnu mnohokrát vrátí.
  • Zacházení s lidmi jako se skupinou školáčků. Nečekejte, že pokud budete brát svoje podřízené jako malé smrady, že se tak nezačnou chovat. Tohle je hlavně mířené na micromanagement. HRT princip, projevte ke svým podřízeným Respekt a Důvěru.
  • Najímání horších lidí. Snaha najmout lidi, kteří nebudou tak schopní jako já. Strach o svoje vlastní místo a najímání lidí, které vždycky dokážu vhodně zmanipulovat. Měl by platit opak najímejte lepší a schopnější lidi než jste vy sám. Kromě toho, že potom nemusíte mít strach odjet na dovolenou, bude vás to nutit se neustále zlepšovat.
  • Ignorování podřízených s horší výkonností (low performers). Pštrosí politika vám v tomhle přinese víc problémů než užitku. Buďto za ty lidi budete muset makat víc vy nebo někdo jiný v týmu. Dlouhodobě neudržitelné. Zkuste si s nimi sednout, nastavit si jasné úkoly a cíle, pravidelně si kontrolujte progress a pokud to nejde, prostě se s nimi rozlučte.
  • Kompromisy při najímání. Máte otevřenou pozici, dostanete deset životopisů, pět si jich pozvete na pohovor a vybere toho nejlepšího z nich přestože to nemusí být člověk, kterého byste za jiných podmínek přijali. Dlouhodobě vede k degeneraci týmu. Je lepší nenajmout než najmout někoho jenom protože zrovna můžete. Zaměřte se na kvalitu.

Motivace

Docela mě zaujala kapitola věnovaná motivaci lidí. Existují vnitřní a vnější motivace. Vnější motivace vychází z okolních stimulu, jako jsou například peníze. Vnitřní motivace z vnitřních stimulů např. pocit spokojenosti, vidění smyslu v tom co děláme atd. Vnitřní motivace má větší dopad na celkovou produktivitu než motivace vnější. Největšími stimuly vnitřní motivace je - autonomie, cíl a mistrovství. Jinak řečeno, pokud chcete lidi efektivně motivovat, dejte jim dost dobrý cíl, ke kterému se upnou, volnost aby na něm mohli pracovat a nechte je to dělat, aby se zlepšili.


Kniha toho obsahuje samozřejmě více, než kolik se vejde do jednoho článku. Určitě bych ji doporučil pročíst, protože není nijak tlustá a dá se zvládnout s trochou snahy za pár dní. K dispozici dávám ještě mind mapu mých poznámek. Jo a ještě jsem našel jednu kratší rezenzi na blogu SW samuraje.