Jak funguje vývojový tým a programování v Seznamu

Seznam už má téměř tisícovku zaměstnanců a tři vývojová centra. Jak pracují programátoři v největší české internetové firmě, v textu popisuje šéf vývoje.

Oddělení vývoje Seznam.cz prošlo od svého vzniku mnoha změnami. Jednou z největších byl zejména počet lidí. Z několika „garážových“ vývojářů jsme narostli až do současného stavu, kdy v Seznamu pracuje téměř 200 vývojářů. Navíc nejsou všichni v jednom místě. Zhruba polovina pracuje na centrále v Praze, druhá půlka je pak v Brně a pár vývojářů sídlí i v Českých Budějovicích.

Při přerodu garážové firmy v jedničku českého internetu a s týmem rozesetým do tří měst po republice musely nezbytně proběhnout změny v řízení a nastavování procesů. Z malé firmy jsme firmou velkou a neustále se učíme, jak efektivně přistupovat k rychlému a přitom kvalitnímu vývoji. Prostě i sami sebe agilně vyvíjíme dál.

Decentralizovaný vývoj

Seznam.cz už má více než 950 zaměstnanců a rozhodně jej nelze považovat za malou firmu. Svoji centrálu má v Praze, kde sídlí také týmy odpovědné za produkty a služby (v Praze mimochodem roste nové velkolepé sídlo firmy). Na produktových manažerech leží zodpovědnost za to, jak se má služba chovat a co má uživatelům či našim klientům přinášet.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Seznam potřebuje zejména kvůli vzdálenosti vývojových týmů dva - papírový a digitální.

Takže v Praze sedí celé produktové oddělení a vývojová centra má Seznam.cz tři. Stejně velká jsou ta v Praze a Brně, nejmenší jednotka je na jihu Čech. Samotný vývoj služeb se ale neděje jen v jednom z našich vývojových center. Některé služby, například fulltextové hledání a Sklik, vyvíjíme ve více centrech. Už jen prostý fakt fyzické vzdálenosti mezi jednotlivými vývojovými centry i pražská lokace produktových manažerů nás donutily vybudovat síť videokonferencí a chat pointů. Jsou to naše nástroje efektivní komunikace.

Kromě zasedacích místností vybavených pro videopřenos máme tedy i různé koutky s počítači vybavenými webkamerami a online videochaty, kterým říkáme „chat pointy“. Díky nim dokážeme okamžitě komunikovat, podobně jako bychom seděli v jedné místnosti. Kolegy z Prahy tak vidíme a slyšíme denně a neujedeme ani kilometr po D1.

Agilní vývoj

Seznam.cz používá agilní vývoj. Dospěli jsme k němu samozřejmě přes různé vodopády, chaosy a experimenty. Nyní už druhým rokem používáme konkrétně SCRUM a KANBAN. Snažíme se vybudovat silné a sebeorganizované týmy, které nemají problém při výpadku jednotlivce. Důraz je tedy kladen na motivaci, rozvíjení a vzdělávání týmu, nikoliv jednotlivců.

Nejde to samo, je třeba se neustále učit a vzdělávat v tom, jak SCRUM správně funguje a co je třeba, aby vše běželo hladce. I toto sebevzdělávání je součástí práce našeho vývojáře.

Jak se pracuje se SCRUMem v Seznamu

Do typického týmu jedné seznamové služby (a je jedno, zda jde o tým, co pracuje na Seznam.cz Emailu, službách Sport.cz, nebo Sreality.cz) patří kromě vývojářů a webmasterů také produktový manažer dané služby a návrhář uživatelského rozhraní. Jsou služby, kde je součástí týmu i systémový administrátor. Do týmů teď začínáme zapojovat i testery, kteří nám z dlouhodobého pohledu mají pomoci zvýšit výslednou kvalitu kódu.

Klepněte pro větší obrázek
Vypadá to jako kvarteto, ale je to odhadování náročnosti.

Vzhledem k tomu, kolik lidí je v celém procesu zahrnuto, má vývoj dané služby svého scrummastera. Ten organizuje a vede schůzky i plánování a je v každodenním kontaktu s týmem. Každý den se totiž tým potkává na několikaminutovém shrnutí stavu projektu.

SCRUM v Seznamu jede obvykle v třítýdenním rytmu. Postupně se tedy vždy co tři týdny plánuje práce, implementují se změny, na demu se ukáže aktuální stav prací a nechybí ani retrospektiva. Tato jedna iterace se v terminologii SCRUMu nazývá sprint.

Jak vypadají jednotlivé sprinty

Plánování je typicky nejdelší schůzka v celém procesu. Produktový manažer na něm určuje, jaký je požadovaný stav, tedy cíl, který má být po ukončení sprintu dosažen. Důležité je pořádně už na začátku upřesnit zadání a požadavky. Tým se pak dále doptává a doplňuje si informace, které mu chybí. Výsledkem plánování je závazek týmu, co je schopen ve sprintu vyrobit. Každý krok má přitom svoji hodnotu vyjadřující jeho náročnost.

Ve fázi implementace se tým potkává každý den na takzvaném „stand-upu“, který trvá deset minut. Zde každý člen týmu sdělí ostatním, co dokončil v předchozím dnu, co má v plánu udělat ten den, a zda má nějaké problémy. Tým se potom snaží s těmito problémy pomoci.

Klepněte pro větší obrázek
Kolik zbývá na projekt času a kolik práce? Ideální stav versus skutečnost.

Pokud se objeví problémy, jejichž řešení není v silách týmu, hledá řešení scrummaster. K ukázce toho, co se během sprintu stihlo dokončit, slouží demo. Na to může přijít kdokoliv z firmy a vidí, v jaké fázi projekt je. Sprint ale pro tým končí až retrospektivou. Ta nám pomáhá, abychom se utvrdili v tom, co děláme dobře, a uvědomili si, co máme naopak zlepšit do dalších sprintů.

Prostor vyjádřit se zde dostane každý člen týmu. Jen tak se opravdu všichni mohou poučit a dál se rozvíjet.

I k agilnímu vývoji existuje cesta

V úplných začátcích, kdy jsme v Seznam.cz SCRUM zaváděli, jsme využívali hlavně klasickou tabuli a papírové lístečky. Postupně jsme zjistili, že nám chybí způsob efektivní evidence, a hlavně u virtuálních týmů, kde jednotliví členové pracují ve více lokalitách, nám chybělo i sdílení tabule.

Postupně jsme začali objevovat různé nástroje pro práci se SCRUMem. Těchto nástrojů jsme vyzkoušeli několik, až jsme se rozhodli, že nám nevyhovuje žádný z nich a bude lepší používat vlastní řešení. Máme tak systém, který minimalizuje redundanci informací, administrativu, byrokracii a přehledně vizualizuje průběh sprintu i celého projektu.

I když používáme převážně SCRUM, najde se místo i pro metodiku KANBAN. Tu používáme zejména pro maintenance nebo pro projekty, popřípadě fáze projektů, kde není vhodné používat SCRUM. KANBAN je volnější metoda agilního vývoje. Volnější je například v tom, že nedefinuje pevné časové rámce. Důležitější než čas je zde splnění zadaného úkolu. Tým má určen počet úkolů, na kterých může paralelně pracovat. Přitom platí, že další úkol si lze vzít až v momentě, kdy se nějaký jiný dokončí.

Každý tým je jiný

I přesto, že máme standardizovaný proces vývoje, je při takto velkém počtu vývojářů každý tým jiný. Je proto třeba ke každému z nich přistupovat individuálně. Pro mě jako šéfa vývoje v Seznam.cz je důležité, aby scrummasteři, kteří celý proces koordinují, jej dokázali i dobře vést. Musíme se prostě potkat ve věcech, které jsou pro nás klíčové, a řešit je včas.

Takže i přes všechna pravidla a procesy je každá práce a každý tým hodně jiný. Je nás 200 a všichni máme společný cíl – dělat svoji práci co nejlépe a každým sprintem se naučit něco nového.

Autor pracuje jako vedoucí vývoje ve společnosti Seznam.cz.

Diskuze (14) Další článek: Češi odkoupili od Američanů společnost IDEA Games

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,