/ janturon.cz / Od kodéra k analytikovi / Organizace vývoje

Organizace vývoje

Zúžené hrdlo lahve

Zúžené hrdlo lahve (Bottleneck): v jakékoliv koordinované lidské činnosti je pro efektivitu nejdůležitější dobrá komunikace. Řešení probíhá formou předávání si dílčích úkolů, ideálně v každém momentu každý něco dělá. Zúžené hrdlo lahve nastává, kdy má jeden člověk několik úkolů ve frontě, zatímco ostatní čekají, až je zpracuje (připomíná to vylévání vody z lahve se zúženým hrdlem).

Antivzor se odstraní přiřazením dalšího člověka do zúženého hrdla. Pokud to není možné, prozrazuje to nevhodné složení týmu: každý člen by měl být zastupitelný a nahraditelný. Robustnost týmu se někdy vyjadřuje číslem nazývaným truck-factor: udává, kolik členů by bylo zapotřebí odstranit (například tím, že nabourají v autě), aby tým přestal být schopen plnit úkol. I v malých týmech by měl být truck-factor větší než jedna. Neschopnost delegovat zodpovědnost a snaha tým spíše řídit než vést bývá častým zlozvykem manažerů.

Sociální vazby v týmu

Jsou nejdůležitější složkou komunikace. Bohužel (nebo naštěstí) lidé při řešení provádí řadu neformálních aktivit nesouvisejících s problémem: vytvářejí si rituály, testují nováčky, reagují na změny, stávají se navzájem sympatickými nebo antipatickými, iracionálním způsobem ventilují napětí při stresu, bojují s nedostatkem pohybu, se stereotypem, se soukromými problémy: mají svá citlivá místa, vrtochy, koníčky, osobnost, minulost.

Těžko lze předpovědět, jak bude komunikace fungovat: někdy jde zcela rozdílným či stejným typům výborně, jindy těm samým typům vůbec. Lze ji ale měřit:

Negativní sociální vazby je třeba řešit dříve, než se projeví následky, jinak se prohlubují až k chronickému patologickému jednání.

Cesta nejmenšího odporu

Neboli cílevědomé jednání: často k řešení problému vede více cest. Ta nejlevnější často nebývá ta pro tým nejpříjemnější. Například ryze ekonomicky vzato by neměla být kodérům dopřána jakákoliv kreativita. K výpočtu ceny je ale třeba také připočítat sociální vazby, které jsou drahé a obtížně odhadnutelné. Zhruba platí, že pokud rozdíly v ceně nejsou propastné, měl by si tým dopřát komfortnější způsob řešení.

Vyčleňování specializací

Pro ty nejjednodušší činnosti (např. sériová webová prezentace) bohatě stačí jeden člověk, který všechny činnosti zvládne během pár desítek minut. Čím je projekt náročnější, tím větší znalosti a zkušenosti v každé fázi vyžaduje. Ne každý má tak široký záběr a některé činnosti lze dělat paralelně, proto růst složitosti vede k růstu počtu účastníků projektu. Konkrétní složení týmu většinou závisí na zkušenostech a schopnostech spolupracovníků, které si v menších firmách nelze vybírat a je nutno vyjít s tím, co je k dispozici.

Pokud je projekt o málo náročnější (práce s databází či administrativní rozhraní), pracují většinou dva lidé: programátor řešící architekturu a kód aplikace, většinou pomocí nějaké agilní metodiky a grafik starající se o vzhled aplikace, komunikaci se zákazníkem a testování.

Při dalším nárůstu složitosti aplikace (více požadavků, exporty dat) je práce grafika rychlejší než programátorova. Kvůli zúženému hrdlu lahve se zařadí druhý programátor. Jeden z nich je analytikem (zhruba na této úrovni začíná být dobrá analýza nezbytná) a architektem aplikace. Druhý je pouze kodérem: píše části systému dle specifikací architekta.

U ještě složitějších projektů (úprava robustní aplikace), kdy je zapotřebí tři a více programátorů (a grafik a zákazník) se stává zúženým hrdlem komunikace: jedna dvojice se na něčem domluví, jiná dvojice domluví něco dalšího, což je v konfliktu s předchozí domluvou a lidi se začnou hádat. Zde je třeba určit vedoucího analytika, který provádí se zákazníkem analýzu (musí rozumět doménové problematice a vědět, jak uživatelé s aplikací pracují), určuje posloupnost úkolů a architekturu. Zde je vhodné začít používat systém verzí kódu (např. SVN), aby si programátoři nelezli do zelí. Dále bývá často třeba databázový specialista rozhodující o návrhu databáze a dokumentarista sepisující technickou a uživatelskou příručku (kompetence si rozdělí programátoři dle svých schopností).

U nejsložitějších projektů asistuje jednáním obchodní specialista, který se soustředí na ekonomickou stránku projektu a pomáhá sestavit rozpočet. Zákazníka (firmu) zastupuje jednatel, který sleduje zavádění aplikace, prezentuje nové rysy a upozorňuje řešitele na všechny problémy a návrhy s tím spojené.

Žádný projekt nekončí předáním aplikace. Vždy bývá třeba aktualizací, dodatečných úprav a technické podpory - její rozsah musí být sjednán už během návrhu. U menších projektů stačí zaškolit nějakou technicky zdatnou osobu spřízněnou se zákazníkem, větší projekty se řeší smluvně.

Účastníci podle náročnosti projektu

Přibližně. Skutečnost se odvíjí od ad-hoc podmínek: schopnosti, možnosti a temperament zúčastněných a požadavků na projekt: rozpočet, rozdělení odpovědnosti, termíny, návaznosti.

  1. one man show
  2. programátor + grafik
  3. architekt + kodér + grafik
  4. vedoucí analytik + programátoři + grafik + obchodní specialista + jednatel

Tipy