Brooksovo pravidlo
Brooksovo pravidlo je pozorování z oboru řízení softwarových projektů, které říká, že přidání dalších pracovníků do zpožděného softwarového projektu povede k jeho ještě většímu zpoždění. Pravidlo se jmenuje podle Freda Brookse, který jej vyslovil ve své knize The Mythical Man-month vydané v roce 1975.
Pravidlo je vlastně extrémní variantou hospodářského zákona klesajících výnosů.
Příčiny
Sám Brooks, který pravidlo podává jako značné zjednodušení, pro něj uvádí tři důvody:
- Mnoho úkolů je dále nedělitelných. Nedělitelný úkol nelze efektivně rozdělit mezi více pracovníků, zabere tedy stejně času, i když bude k disposici víc pracovníků.
- Čím víc lidí na projektu pracuje, tím víc času každý z nich tráví komunikací s ostatními, aby byla práce sladěna. Množství komunikační režie vzrůstá úměrně druhé mocnině počtu pracovníků, kteří pracují na příbuzných úkolech.
- Softwarové projekty jsou poměrně složitá záležitost a zejména ve své závěrečné fázi vyžadují od pracovníků kromě obecných oborových znalostí i poměrně hluboké porozumění konkrétnímu projektu. Nový pracovník tedy musí být dlouze zaučován členy původního týmu, kteří by jinak mohli efektivně pracovat na dokončení projektu. Během zaučování je navíc poměrně pravděpodobné, že z neznalosti do projektu zanese nové programátorské chyby, jejichž vyhledávání a opravování opět ukrojí z produktivního času zkušenějších kolegů.
Řešení
Brooksovo pravidlo platí pouze tehdy, pokud jsou pracovníci přidáváni až do zpožděného projektu, který je ve své finální fázi a zdroje na jejich zaučení se tedy nestihnou amortizovat. Z tohoto hlediska je řešením přidat pracovníky včas, dřív, než se projekt ve své finální fázi zpozdí. Součástí tohoto řešení může být i rozpoznání, že původní časový harmonogram projektu byl zcela nereálný a byť se blíží plánovaný termín dokončení, projekt má do finální fáze ještě daleko, tedy má smysl předělat harmonogram na reálný, aby projekt přestal být zpožděný, a následně také přidat do nezpožděného projektu pracovníky.
U pozdního přidávání pracovníků je zásadní jejich kompetentnost a správné pracovní zařazení. Nejschopnější specialisté a programátoři potřebují k efektivní práci daleko méně komunikace a zaškolování, navíc je možné je přidat ve větším množství zohledňujícím jejich sníženou efektivitu, když se budou sami zorientovávat v projektu s minimálním obtěžováním původních členů týmu. Kromě toho je možno tým posílit o pracovníky provádějící místo původních pracovníků doplňkové činnosti (dokumentace, testování a podobně), takže původním pracovníkům zbude více času na vlastní vývoj.
Celá řada moderních postupů softwarového inženýrství slouží k snižování komunikační režie, například průběžná integrace, programování řízené testy nebo iterativní vývoj. Podobně usnadňuje rozšiřování týmu i důsledné používání standardizovaných návrhových vzorů v rámci firmy, které usnadňuje přechod mezi různými projekty.
Důležité je rovněž předejít nutnosti zbytečné komunikace správným rozdělením projektu na podprojekty, tedy správným rozpoznáním, které části mohou různé osoby nebo podtýmy vyvíjet s minimální nutností komunikace s ostatními.
Reference
V tomto článku byl použit překlad textu z článku Brooks's law na anglické Wikipedii.