3. září 2012

Odhadování projektů

Přečetl jsem nedávno knížku Odhadování softwarových projektů a protože mi knížka přišla povedená, tak bych rád publikoval pár faktů/myšlenek, které mě zaujaly:

  • Dobrý odhad je odhad, který poskytuje dostatečně jasný pohled na realitu projektu, aby vedení projektu mohlo dělat dobrá rozhodnutí, jak projekt vést, aby bylo dosaženo cíle. (pozn. text označený kurzívou je citací z uvedené knihy)
  • správný/špatný odhad pracnosti projektu má často zásadní vliv na celkový výsledek projektu. Je proto pro mě překvapivé, jak málo se ve firmách věnuje správnému odhadování. Přitom podle odhadu se stanovují termíny, alokují zdroje, vytváří se rozvrh, ...
  • odhady budou vždy tak přesné, jak budou přesné informace, podle kterých se odhaduje. Odhad nemůže být přesnější, než je na dané pozici projektu podél kužele možné (viz obrázek). Odhady je nutné postupně zpřesňovat.
  •  je velké množství způsobů, algoritmů a postupů, jak odhadovat, ale jeden ze všech mi přijde nejvěrohodnější a přitom jednoduchý - odhady nového projektu na základě historických dat. Každá firma, které má za sebou realizaci nějakých projektů, může s velkou pravděpodobností očekávat, že další projekty budou podobné, že se pracnost významně nezmění. Přitom by stačilo tyto historická data ve firmě shromažďovat a za každou realizací se na chvíli otočit a říci si, co se povedlo a co ne a hlavně se z toho poučit.
  • Záměrně nepodhodnocujte. Cena za podhodnocení je vyšší než za nadhodnocení. Problémy s nadhodnocením řešte plánováním a řízením, ne posuny odhadu. 
  • vývojáři mají často příliš optimistické odhady
  • Technickým pracovníkům patří odhady, netechnickým pracovníkům (obchod, marketing) pak cíle. Techničtí pracovníci mají udělat co nejlepší odhady a být schopni je zdůvodnit, netechničtí pracovníci pak musejí být schopni rozhodnout. Obě skupiny lidí by měli být schopni se na výsledných závazcích společně domluvit.
  • často se odhady mění pod tíhou jednání s vedením, což je špatně - odhady nelze měnit, pouze lze měnit závazky, ke kterým se zavazujeme (verze aplikace bude bez určitých funkcí, termín vydání verze se posune atd.).
  • vyhněte se uspěchaným odhadům, později toho budete litovat
  • pokud je potřeba provést kvalifikovaný odhad, pak je nutné použít více metod odhadování. Pro různé fáze projektu (viz kužel) se hodí různé metody odhadování. Výsledky různých metod by se neměly lišit o více než 5%. Jinak hledejte důvody, proč tomu tak je.
  • Rozložte velké odhady na malé části, abyste využili zákona velkých čísel: chyby na dolní stráně se do určité míry vyruší s chybami na straně horní. Tím lze do jisté míry eliminovat různé předsudky a subjektivní myšlení lidí, kteří odhady provádějí.
  • Neřešte nejistotu v odhadu posunem. Vypořádejte se s ní tak, že odhad vyjádříte s jistou neurčitostí. 
  • Je chybou vyjadřovat odhad právě jedním číslem, protože je to hodně zavádějící. Buď zvolit interval odhadu (odhad 50-70MD vyjadřuje jiný vztah k riziku než 60MD) a nebo prezentovat jeden odhad, ale spolu s pravděpodobností jeho dosažení (projekt zrealizujeme za 50MD s 50% pravděpodobností). Závazek ale již musí být jasný a konkrétní.
  • Různé studie ukázaly, že většinou není problém v samotném odhadu, ale v tom, že se na spoustu věcí zapomene a ty pak v odhadu nejsou zohledněny. Proto je dobré mít nějaký standardizovaný postup, nějakou šablonu všech opakujících se funkčních/nefunkčních požadavků a z té vycházet.  
  • Soustřeďte se nejprve na odhad velikosti. Pak z něj vypočtěte práci, rozvrh, cenu a vlastnosti.
  • Nezkracujte odhad rozvrhu projektu bez navýšení odhadu práce.

1 komentář:

Guido řekl(a)...

Výborná kniha, rozhodně doporučuji. Mám ji rozečtenou v angličtině: Software Estimation. Je docela zajímavé, že se v češtině ztratil původní podtitul Demystifying the Black Art, který velmi přesně vystihuje, proč se lidi odhadů bojí - je to pro ně prostě černá magie a proto jsou tak rozšířené odhady "vycucané z prstu".

Přitom stačí se naučit pár základních principů a taktik a ty dále rozvíjet - důležitá je praxe, založená na faktech. Odhady se nijak neliší od jakékoliv jiné disciplíny SW inženýrství - pokud chci být dobrý, musím to praktikovat a zároveň se (neustále) vzdělávat.