O szacowaniu wymagań
O szacowaniu wymagań, metodzie Planning Poker i wpływie wielkości wymagań na precyzję, z jakim da się je oszacować.
Wiele Zespołów pracujących zwinnie posługuje się bezwymiarowymi story pointami do szacowania wymagań, zamiast określać czas niezbędny do ich realizacji w godzinach lub dniach. To dobra, choć czasami problematyczna praktyka, mająca niewątpliwie tę zaletę, że nie prowokuje do prostego sumowania godzin czy dni, aby określić, kiedy funkcjonalność opisana wymaganiem będzie gotowa.
Szacowanie przy pomocy story pointów sprowadza się do tego, że porównujemy wymagania ze sobą i na podstawie tych porównań przypisujemy im wartości liczbowe określające ich relatywną wielkość. Nie szacujemy przy tym wyłącznie czasu, jaki może zająć realizacja, czy też ilości pracy niezbędnej do wykonania. Uwzględniamy obie te rzeczy, oceniając także złożoność problemów, z jakimi będziemy się zmagać, poziom wiedzy niezbędnej do ich rozwiązania, ryzyko wystąpienia nieprzewidzianych trudności, ilość zależności, poziom zrozumienia problemu przez szacujących…
Mówiąc krótko: szacując w story pointach, bierzemy pod uwagę wszystko, co pozwala stwierdzić, że wymaganie jest mniejsze lub większe. Uwzględnianie w procesie szacowania różnych czynników powoduje, że story point nie ma żadnej jednostki, czyli jest bezwymiarowy.
Jeśli więc szacowane wymaganie jest ciut większe (trudniejsze, bardziej czasochłonne, obłożone większym ryzykiem, wymagające więcej wiedzy itd.), niż to wyszacowane wcześniej na 8 punktów, damy mu estymatę wyższą niż 8. Jeśli wielkość jego jest dużo mniejsza, estymata będzie niższa niż 8. Jeśli zaś to wymaganie jest jedynie odrobinę mniejsze od tego z szacunkiem 8 story pointów, zapewne przypiszemy mu tych punktów również 8.
Planning Poker
Najbardziej rozpowszechnioną skalą szacowania w story pointach jest ciąg liczb stosowany w technice Planning Poker: 0, 1, 2, 3, 5, 8, 13, 20, 40 oraz 100.
Szacunek 0 może oznaczać, że wymaganie zostało już zrealizowane lub że tej pracy jest znikoma ilość i da się ją zrobić z marszu, na przykład w kwadrans.
Wielkość 1 odzwierciedla najmniejsze możliwe wymaganie wymagające jakiejś istotnej pracy.
Estymata 2 to wymaganie na tyle większe od tego oszacowanego na 1, że różnica jest znacząca, ale niekoniecznie dwukrotnie większe – po prostu większe.
Wymaganie oszacowane na 3 jest większe od tego wyestymowanego na 2, niekoniecznie trzykrotnie większe od tego o wielkości 1 lub półtora raza większe niż wymagania z szacunkiem 2.
Dlaczego w skali nie ma wartości 4? Wymagania, które są większe od tych oszacowanych na 3, powinny otrzymać szacunek 5, co oznacza w praktyce: 4 lub 5. Z tego samego powodu nie ma w skali szacowania wartości 6 ani 7 – wszystko, co jest większe od 5, jest od razu szacowane na 8, co oznacza w praktyce: 6, 7 lub 8. I tak dalej.
Jak widać, począwszy od wielkości 3, oszacowania w Planning Pokerze odnoszą się już do przedziału możliwych wartości, a im wyższe są te oszacowania, tym przedziały stają się szersze. Ma to przypominać, że wraz ze wzrostem szacowanej wielkości wymagania spada precyzja szacowania, a rośnie jego niepewność.
Ciąg liczbowy inspirowany jest znanym z matematyki ciągiem Fibonacciego, ale nie jest z nim tożsamy. Ta matematyczna niepoprawność ma przypominać, że nie ma sensu bawić się w arytmetykę typu „skoro to wymaganie jest dwa razy większe od tego za 3 punkty, to dajmy mu 6 punktów”. Posługujący się Planning Pokerem często o tym zapominają, czego efektem jest wyciąganie wartości średnich, ułamkowe wartości oszacowań itd., a więc de facto odejście od zasad obowiązujących w metodzie.
Ostatnia liczba w ciągu 100 wskazuje, że wymaganie jest ogromne i najpewniej będzie wymagało dekompozycji na kilka mniejszych przed rozpoczęciem realizacji w iteracjach. Duża, okrągła liczba, jest więc tylko symbolem i wcale nie oznacza, że wymaganie z takim oszacowaniem faktycznie jest sto razy większe od najmniejszego, oszacowanego na 1.
Dla porządku: w Planning Pokerze istnieje też oszacowanie ∞ (symbol nieskończoności), które przydzielone może zostać do wymagania zbyt dużego, by w ogóle dało się go oszacować (będącego poza skalą) oraz ? (pytajnik) – jeśli wymaganie jest zbyt niezrozumiałe, by w ogóle dało się ocenić jego wielkość. Niektórzy dodają do skali szacowania również wartość ½, co oznaczać ma połowę story pointu, ale to akurat nie bardzo ma sens; bezwymiarowe jednostki relatywnej wielkości są bowiem niepodzielne.
Rosnąca niedokładność oszacowań
W Planning Pokerze estymata 8 może oznaczać, że wymaganie jest tylko ciut większe od tego z szacunkiem 5, a może 8 jest faktycznie w sam raz.
Jeśli przypisujemy wymaganiu 40 punktów, jedyne co wiemy, to że jest ono większe od tego szacowanego na 20 punktów, ale dokładna wartość mogłaby mieścić się w przedziale od 21 do 40 punktów. Przy czym porównując to kolejne wymaganie z innymi wcześniej wyszacowanymi nie możemy zapominać, że i 20 punktów oznacza w praktyce więcej niż 13 (czyli od 14 do 20).
Jeszcze lepiej to widać na szacunku 100 punktów: przypisanie go do jakiegoś wymagania oznacza, że jest ono większe niż te, którym przypisano oszacowania 40 story pointów, ale równie dobrze może to być 41, jak i 100 punktów. Inaczej mówiąc, 100-punktowe wymaganie może być zaledwie troszkę większe od tego 40-punktowego, ale może też być od niego dwuipółkrotnie większe.
W istocie dla estymaty 40 punktów możliwy błąd oszacowania wynosi blisko 50%, a dla 100 punktów aż około 60%.
Dekomponujmy wymagania!
Posługując się Planning Pokerem, Zespół powinien dążyć do umiejętności szacowania w miarę możliwości w dolnej części skali, którą proponuje metoda. Jest to ważne zwłaszcza dla wymagań uznawanych za możliwe do realizacji w czasie krótkiej iteracji (na przykład w Sprincie, jeśli Zespół posługuje się Scrumem). Wydaje się, że granicą rozsądną jest tutaj 13 punktów, a zatem estymaty 20, 40 lub 100 powinny oznaczać potrzebę dekompozycji zbyt opasłego, skomplikowanego lub niejasnego wymagania.
Jeśli Zespół posługuje się głównie oszacowaniami klasy 20 i 40 punktów dla wymagań realizowanych w czasie krótkiej iteracji, a jego prędkość (ang. velocity) liczona jest w dziesiątkach lub setkach punktów, warto zastanowić się nad podzieleniem tych szacunków przez dziesięć. W ten sposób skala ocen zostanie urealniona.
Natomiast jeśli Zespół posługuje się oszacowaniami zarówno z góry, jak i dołu skali (czyli szacuje wymagania zarówno na 1, 2 lub 3 punkty, jak i na 20, 40 lub 100), po czym realizuje te duże wymagania bez dekompozycji na mniejsze elementy, dyskusja o sposobie szacowania staje się krytyczna. Dlaczego? Bo tak duży rozrzut estymat dla wymagań, które da się zrealizować w porównywalnym czasie, jest mało prawdopodobny, o ile te oszacowania robione są choćby trochę na serio.
Gdy punkty sprawiają problemy
Czasami lepiej odejść od ciągów liczb z metody Planning Poker i użyć wartości oszacowań, które są jeszcze mniej podatne na próby sumowania, dzielenia i mnożenia ich przez siebie. Rozmiary koszulek, czyli XXS, XS, S, M, L, XL i XXL – to jeden z możliwych sposobów. Rzecz jasna na potrzeby wyliczania velocity (o ile Zespół posługuje się nim) trzeba przypisać im jakieś wartości liczbowe. Lub zacząć wyliczać przepustowość (ang. throughput), czyli zliczać ile wymagań udało się zrealizować w jednostce czasu, co w praktyce stanowi doskonałą alternatywę dla velocity.
Zdarzają się też Zespoły, które posługują się tylko trzema estymatami: „nie potrafimy oszacować”, „za duże”, „dostatecznie małe, by zrobić w krótkiej iteracji”. Wtedy można pokusić się o podejście #NoEstimates, choć trzeba cały czas pamiętać, że brak przypisania wartości liczbowej czy tekstowej jako estymaty nie oznacza, że szacowanie się nie odbywa. Aby dojść do poziomu „dostatecznie małe”, trzeba wcześniej dokonać dekompozycji i… oszacowania wymagań, które w wyniku tego procesu powstają. W tym przypadku owo szacowanie sprowadza się do oceny, czy wymagania są już dostatecznie małe, czy też wymagają dalszego podziału.
A wy jak szacujecie wymagania, które realizujecie?