Milan Kryl

Kryl Blog - RSS

Jak se dělá software v Google

19. 10. 2006 - 06:15

Vývoj bez časových termínů a přímého nátlaku projektových manažerů. Možnost věnovat se libovolnému projektu dle vlastního výběru. Při výborném nápadu královská odměna a po spuštění projektu bouřlivá oslava jednou za 3 měsíce. To vše ve společnosti Google znamená vývoj nové aplikace.

Google LogoS nadhledem se mohou procesy v Google jevit jako zmatek. Interním zaměstnancům dává vše většinou smysl a podle zainteresovaných je fungování většinou lepší než v ostatních firmách vyvíjejících webové aplikace nebo software obecně.

Několik stručných postřehů na úvod

  • jsou zde vedoucí, nicméně ne v tradičním smyslu - většina z nich totiž nejméně polovinu pracovní doby programuje, jsou spíš něco jako techničtí vedoucí
  • každý vývojář může přestoupit z jednoho týmu/projektu do druhého kdykoliv bude chtít. Nejsou kladeny žádné otázky. Stačí říct a druhý den se objeví člověk, který Vás vezme do nového týmu.
  • filosofie Google je nikdy neříkat vývojářům, co mají dělat a docela ji dodržují
  • programátorům je velmi doporučováno trávit 20 procent pracovní doby na čem chtějí
  • není tu příliš porad. Průměrný programátor navštíví 3 porady za týden, včetně jedné, kdy se baví sám se svým vedoucím.
  • je tu ticho. Programátoři se tiše soustředí na svoji práci většinou jako jednotlivci a někdy v menších skupinách ve 2 až 5 lidech
  • nenajdete tu Ganttovy diagramy nebo tabulky datum-úkol-vlastník nebo jiné viditelné zbytky projektového managementu
  • během krátkých přestávek se většina programátorů schází na obědy a večeře, tedy pokud se bezhlavě nevěnuje svému projektu a jídlo neodmítá :)

Stimulovaný vývoj projektu

Google řídí programátory nepřímo menší stimulací. Vývojáři pracující na důležitých projektech jsou většinou odměňováni více než ti, kteří pracují na méně důležitých projektech. Je možné si vybrat méně přímo užitečný a vědecký projekt, ale být o něco méně hodnocen. Pokud se někdo zabývá nezajímavým výzkumným projektem, který se změní v obrovský úspěch, je za to nakonec královsky odměněn (sen každého startupu :) ). A odměna je opravdu královská, od peněžních částek až po podíl v akciích Google.

Ale existují další stimulace. Kultura Google je založena na hodnocení spolupracovníků. Získat si respekt ostatních kolegů znamená hodně. Možná mnohem víc, než je tomu u ostatních firem. Protože i ostatní kolegové jsou velmi chytří, tak získání jejich respektu může znamenat dost práce. Hodnocení výkonu jednotlivých pracovníků v Google je založeno téměř jen na názoru ostatních kolegů a ovlivňuje to nepřímo i na Váš výdělek.

Čtvrtletní oslava spuštěných projektů

Dalším stimulátorem je každé čtvrtletí oslava všech spuštěných projektů. Každý spuštěný projekt je představen i se jmény všech, co se na jeho tvorbě podíleli. Google bere spouštění projektů velmi vážně a být na zdi spuštěných projektů je také jedna z motivací, která prostupuje celou firmou (možná je to ta nejsilnější).

A tím výčet stimulátorů zdaleka nekončí. Možná nebude zobrazení jednou za čtvrtletí tím největším motivátorem. Věc v Google vedoucí ke správnému chování mnohem víc než všechny stimulátory dohromady je vděčnost. Nemůžete si pomoct, ale uděláte pro Google jen to nejlepší, cítíte se tak, jako byste část toho místa vlastnili, když se o Vás tak pěkně starají.

Kultura založená na stimulátorech může mít velký vliv na způsob řešení věcí. Nijak ale neříká, jak přinutit programátory, aby začali pracovat rychle a efektivně.

Jak dosáhnout spuštění projektu?

Základní myšlenka projektového managementu je řízení projektu do zdárného konce. Je to proces, kdy silou vedení a organizace chcete způsobit, aby se stalo to, co se neděje samo.

Google spouští projekty protože dosáhnou stavu s minimem energie. Samozřejmě jsou v Google projektoví manažeři, produktoví manažeři a techničtí vedoucí. Množství energie, které vynakládají je mnohem menší než u ostatních firem na stejném poli působnosti. Jde spíše o příležitostné pošťouchnutí než nepřetržitý tlak.

Google je zdvořilá společnost, takže se nedočkáte nějakého zvyšování hlasu, hrozeb či řevu nadřízených. Organizace většinou odráží své vůdce, je tomu i v Google. Spuštění projektu je natolik přirozenou věcí, protože jde o směr, kterým se ubírají všichni ve firmě (Google to podporuje).

Není třeba status reportů

Díky tomuto směrování není třeba válečných porad, status reportů, není třeba lidi tlačit směrem, kterým chcete, protože tam chtějí směrovat sami. Místo aby Google projekty tlačil, tak je podporuje. Je zde dostatek místa pro týmové diskuse. Každý tým si může sednout a probrat další kroky v projektu. Když je potřeba, tak si programátoři sednou spolu a programují (asi v 5% času).

Zbytečně nepřekážet, když to není nutné

Google ví, že poledne je velmi náchylné k různým přerušením. Mnoho programátorů raději vstává dříve nebo dlouho do noci, aby se mohlo dobře koncentrovat. Porady se většinou pořádají uprostřed dne - po desáté ráno a ne později než v půl páté odpoledne.

Google není jediná firma, kde to tak funguje. Další dva případy najdeme, pokud se podíváme na nově vznikající projekty (startupy) nebo na vysoké školy. Tam je způsob fungování podobný. Některé projekty v Google fungují jako startupy - pojďme to rychle zvládnout a některé jako na vysoké škole - je potřeba zvládnout velmi obtížné problémy

Technické pozadí

Google je výjimečně disciplinovaný z pohledu softwarového vývojáře. Unit testing, dokumentace nebo připomínkování zdrojového kódu se berou v Google velmi vážně. Velmi tvrdě se pracuje na tom, aby byl ve všem pořádek. Existují přísná pravidla a nařízení, aby se zamezilo jednotlivým lidem i celým týmům, aby dělali věci po svém. Výsledkem je základna kódu, která je udělaná stejným způsobem a díky tomu je velmi snadné libovolný zdrojový kód sdílet.

Programátoři potřebují skvělé nástroje a proto Google najímá skvělé lidi pro výrobu těchto nástrojů. Výsledkem jsou špičkové nástroje pro další vývoj a neustále se vylepšují.

Kalendářová tyranie

Poslední věcí, kterou zde budeme zmiňovat jsou časové termíny. Tradiční vývoj software je většinou bez výjimky orientovaný na datum.

Nové projekty odpočítávají dny, které jim ještě zbývají do prezentace výsledků investorům. Velcí klienti nastavují svým partnerům termíny. Stejný přístup je i obchodní a nebo produktový. Programátoři na základě minulých termínů tvoří odhady pracnosti. Všechny tyto termíny jsou jen růžové brýle těch, kteří zapomněli, jak to dopadlo posledně.

Termíny jsou vycucány z prstu: "To vypadá, že by nám to mohlo trvat 3 týdny." "Bylo by fajn, kdybychom to stihli do konce třetího čtvrtletí." "Ok, udělejme to do zítřka."

Pokud chcete spustit nějaký software a ohlásit jej dopředu, musíte zvolit určité datum. To bude možná jeden z důvodů, proč Google neoznamuje žádný ze svých projektů dopředu. Nedá se uspěchat vaření dobrého jídla, ani porod dítěte a nelze uspěchat ani vývoj softwarového projektu.

Pokud tedy projekty nepohání projektový manažeři, tak co je žene kupředu? Všichni totiž mají kreativní nutkání, touhu vytvářet nové věci. Mnoho lidí pracuje jen kvůli živobytí. Nicméně například celá komunita okolo Open Source dělá víc než to a to je i příklad Google.

Ale nejde jen o nutkání tvořit. Google je hnaný časem. Všechno se dělá tak, aby to bylo co nejrychleji. Na trhu je mnoho konkurence a také je třeba nasytit hladové investory.

Google tvoří bez ohledu na termíny

V Google se nicméně pošetile nestanovují žádné termíny, kdy se co stihne udělat. Jediné datum, které je respektované v celé firmě je konec čtvrtletí. To se ohlásí spuštění všech projektů, každý se dočká potlesku, odměn, bonusů a týmových výletů. A mnoho dalších výhod, které přichází po spuštění projektů, které mají dobrý vliv na celou společnost Google.

Vše mezitím jsou běžné dny, kdy každý pracuje optimálním výkonem (různým pro každého zaměstnance). Pak už jen stačí fronta požadavků (včetně priority), kterou je třeba vyřídit.

Zadávání požadavků vývojářům

Fronta je ideální nástroj pro práci. Každý programátor má co dělat. Pokud je fronta prázdná, tak to z definice znamená, že se projekt spouští. Jednotlivé úkoly je možné odložit či obnovit umístěním zpět do fronty požadavků s poznámkou či dokumentací. Vždy je jasné, kolik práce ještě zbývá a na základě předchozích zkušeností se dá udělat i odhad časové náročnosti. Je tam také vidět, které úkoly zůstávají nepovšimnuty a to pomáhá při odhalování problémů v organizaci. Také jde o velmi transparentní systém, který minimalizuje riziko duplikované práce.

Nakonec samozřejmě Steve Yegge dodává: "Prezentované názory nejsou společnosti Google, ale jen mé osobní."

Stevey's Blog Rants - Good Agile, Bad Agile

Související

Google Blogoscoped - Niniane Wang, Googler - rozhovor s technickou vedoucí z Google

 

Tip: Nevíte čím obdarovat nejbližší? Nechte je napsat Ježíškovi.

Související