#NoEstimates

V roce 2012 odstartoval Woody Zuill svou dnes již legendární sérii článků na téma #NoEstimates. Woody neříká, že estimace nemají smysl, ale poukazuje na dogma, kterým se estimace staly. Estimujeme totiž vždy - ať je to pro projekt přínosné nebo ať je to mrhání časem.

Hashtag #NoEstimates, který Woody Zuill použil na Twitteru, diskuzi odstartoval. Woody říká, že následně na toto téma vedl rozhovor přibližně s 200 lidmi z celého světa (přes Skype). Otázky, kolem kterých se diskuze většinou točí, jsou tyto:

  • Všimli jste si nějakých problémů s estimacemi?
  • Zkusili jste dělat nějaké jiné věci, než estimace?
  • Jak řídíte práci, pokud nemáte estimace?

Problémy s estimacemi

Časté problémy, které lidé při používání estimací mají, jsou:

  1. estimace neodpovídají realitě,
  2. měnící se požadavky,
  3. požadavky nejsou dostatečně jasné předem.

Přímočará řešení na uvedené problémy by byly:

  1. estimace neodpovídají realitě
    • ⇒ zlepšíme se v odhadování (uděláme školení, workshop),
  2. měnící se požadavky
    • ⇒ zajistíme, že se požadavky nebudou měnit,
  3. požadavky nejsou dostatečně jasné předem
    • ⇒ vyjasníme si požadavky lépe předem.

Tento způsob přemýšlení je vidět velmi často. Řešíme symptomy problémů, ne příčiny problémů. Pokud bychom šli k příčinám, mohli bychom například zjistit, že

  1. estimace neodpovídají realitě
    • ⇒ lidé mají strach z nadřízeného a termíny raději podhodnocují,
    • ⇒ nikdy jsme takový projekt nedělali a přesněji ho estimovat nedokážeme,
  2. měnící se požadavky
    • ⇒ chceme zajistit pravidelnější feedback od zákazníka a pracovat po menších celcích,
    • ⇒ chceme navrhnout systém tak, aby většina změn v požadavcích nezpomalila vývoj (např. zavedeme best practices pro architekturu a continuous integration),
  3. požadavky nejsou dostatečně jasné předem
    • ⇒ požadavky nelze znát předem přesněji, protože sám zákazník neví, co chce.

Dostáváme se k mnohem hlubším problémům. A můžeme jít ještě hlouběji.

Práce bez estimací

Estimace jsou někdy nutností, jindy je nepotřebujeme. Způsobů, jak bez nich pracovat, je několik. Jedním z nich je neustálá prioritizace práce: Z projektu vybereme nejdůležitější story. Story rozbijeme na menší stories. Prioritizujeme menší stories. Na té s největší prioritou začneme pracovat. Jakmile je hotovo, hledáme další práci s největší prioritou.

V praxi většinou existuje pár závislostí, které si musíme pohlídat. Přesto je tohle jediný způsob, kterým zajistíme, že projekt můžeme kdykoliv ukončit a stále mít hotové všechny nejdůležitější věci.

Co jsem schopen estimovat

Každý den jezdím do práce autem. Včera mi cesta trvala 29 minut, den předtím 35 minut a ještě předchozí den 20 minut, protože byly ve škole prázdniny a doprava byla slabší. Dobu cesty do práce jsem schopen odhadnout, protože

  • mám obrovské množství dat,
  • znám všechny alternativní trasy, kterými bych mohl jet,
  • cesta je každý den stejná,
  • znám všechny proměnné (počasí, prázdniny, uzavírky),
  • mohu se spolehnout na člověka, který mi poskytuje data (to jsem já).

Odhadnu-li správně dobu cesty do práce, mohu si někdy 10 minut přispat.

Bohužel nic z toho nelze říci o softwarovém projektu, který je komplexní. Jaký význam má estimace softwarového projektu? Kdy má smysl a kdy je to jen ztráta času?

Woody Zuill na Agile India

Chcete-li vědět více, podívejte se na prezentaci od Woody Zuill na Agile India.