Daniel Vacanti: nie bądź jak Ditka

Jak dobry jesteś w estymowaniu wartości biznesowej?

Na jakim etapie projektu zwykle musisz oszacować wartość biznesową? Przeważnie takie wymaganie pojawia się zanim zaczniesz pracę a Twoja wiedza jest najmniejsza.

Trener NFL Ditka w przed kolejnym wybieraniem zawodników do drużyn postawił wszystko na jedną kartę aby zdobyć jednego zawodnika, którego wartość dla zespołu i jego szans na wygraną oszacował jako najważniejszą. Czy chcemy stawiać wszystko na jedną kartę w projekcie?

Ty pracujesz w złożonym środowisku wytwarzania oprogramowania. Chcesz optymalizować (maksymalizować) wartość biznesową rzeczy nad którymi pracuje Twój zespół. Ponieważ mamy ograniczone zasoby (czas, pieniądze, ludzi) nie można spełnić wszystkich oczekiwań – trzeba dokonać wyboru.

Jako narzędzie do dokonywania wyboru często używany jest tzw. Koszt Opóźnienia (Cost of Delay). Jest to ilość spadku skumulowanego zysku z danej funkcjonalności / projektu spowodowanego przez opóźnienie w jego dostarczeniu. Inaczej mówiąc: zyski z danej funkcjonalności z całego okresu jej używania zależą od daty kiedy będzie ona dostępna, a koszt opóźnienia jest miarą tej zależności. Możemy zatem obliczyć wartość ułatwiającą porównywanie zadań – które powinniśmy zrobić najpierw by koszt opóźnienia dla wszystkich funkcjonalności był jak najniższy. Jest to wskaźnik CD3, który obliczymy dzieląc koszt opóźnienia przez czas realizacji danej funkcjonalności.

Takie podejście daje nam ekonomiczne ramy do rozmowy o kompromisach związanych z rozpoczynaniem pracy nad różnymi rzeczami w różnym czasie (co kiedy powinniśmy zrobić). Maksymalizacja wartości biznesowej to minimalizacja kosztu opóźnienia.

Z tym podejściem są jednak 3 problemy w przyjętych założeniach:
1. przyjmujemy wartość biznesową deterministycznie, podczas gdy tak na prawdę zupełnie jej nie znamy
2. czas realizacji pracy jest przyjmowany deterministycznie, podczas gdy czasy realizacji są w rzeczywistości prawdopodobne
3. w trakcie realizacji pracy nie pojawiają się inne opcje, podczas gdy w każdej chwili może pojawić się nowa, lepsza propozycja

Wszystkie te założenia są błędne, ale nie krytyczne.

Jeżeli przeprowadzimy symulację Monte Carlo projektów (funkcjonalności) aby móc podjąć decyzję nad czym powinniśmy pracować w dalszej kolejności, okaże się, że najlepsze rezultaty można uzyskać podejmując tę decyzję na podstawie długości projektu. Szybkie dostarczanie małych elementów jest najbardziej optymalnym podejściem. To na co trzeba zwrócić szczególną uwagę jest odpowiednie oszacowanie wielkości. Nie chodzi tutaj wcale o dokładne estymowanie i analizowanie a jedynie o szacunkowe spojrzenie, czy dana funkcjonalność zajmie mniej niż wybrany okres czasu. Określenie wielkości przynosi największy efekt pod kątem optymalizacji dostarczania wartości biznesowej.