Szacowanie
autorstwa Mitcha Laceya.Właściciel, Mitch Lacey & Associates, Inc. Firma specjalizuje się w przyjmowaniu i ulepszaniu Agile i Scrum.
Styczeń 2012
Mitch Lacey omawia trudności otaczające szacowanie projektów programistycznych i podaje porady i wskazówki dotyczące korzystania z dwóch technik zwinnego szacowania oprogramowania przy szacowaniu projektów.
Dotyczy
Zarządzanie cyklem eksploatacji aplikacji; Team Foundation Server
Zawartość
Wprowadzenie
Dlaczego szacowanie jest trudne
Techniki szacowania
Punkty wątku jako jednostka miary
Poker planujący
Szacowanie ścienne
Szacunek
Określanie priorytetów
Wnioski
Szacowanie prac twórczych i nieprzewidywalnych jest po prostu trudne.Wybieranie sposobu zrobienia tego może być równie trudne.Fred Brooks mówi najlepiej: „Jest bardzo trudno aktywnie, wiarygodnie i z determinacją bronić oszacowania, które nie powstało za pomocą metody ilościowej, jest wspierane przez mało danych i potwierdzane głównie przez przeczucia kierownictwa.”
Jeszcze jesteśmy proszeni o podawanie szacunków dla naszych projektów tworzenia oprogramowania, na początku i wcześnie — i pomimo wszystkich naszych wysiłków, aby przypomnieć kierownictwu, że te oszacowania są przybliżone, zbyt często nasze wstępne oszacowania stają się zobowiązaniami.
W tym artykule pokażę, dlaczego jest trudno szacować projekty na początku, jak pomagają techniki zwinnego szacowania oprogramowania i w jaki sposób oszacować zaległość produktu przy użyciu pokera planującego i punktów historyjek.
Dlaczego szacowanie jest trudne
W większości projektów jesteśmy proszeni o oszacowanie na początku.Aby zrozumieć, dlaczego jest taki problem, należy zbadać stożek niepewności, który Barry Boehm wprowadził w 1981, a Steve McConnell wprowadził ponownie w 1997 r. w swojej książce Software Project Survival Guide.
Stożek pokazuje, że najwięcej niepewności występuje na początku każdego projektu (odchylenie w zakresie od 4 do 0,25 x).Odchylenie to oznacza, że to, co szacujemy na jednoroczny projekt, może faktycznie zająć od 3 do 48 miesięcy.Początek każdego projektu to czas, gdy najmniej wiadomo o projekcie, a już trzeba dostarczyć bardzo dokładne szacunki dotyczące nakładu pracy.
W zwinnym projektowaniu staramy przejść od niepewności do pewności w tak krótkim cyklu, jak to możliwe.Osiąga się to poprzez maksymalizowanie wczesnej nauki o systemie i sposobu, w jaki powinien być zaprojektowany.Aby to zrobić, tworzymy pojedynczą ścieżkę poprzez system, kompletny wątek roboczy.W ten sposób wcześnie uzyskaliśmy założenia i wymagania projektu, co pozwala nam szybciej nabrać pewności i zaufania.
Techniki szacowania
Istnieje szereg odpowiednich technik szacowania, w tym zliczanie, ekspertyza (indywidualna i grupowa), dekompozycja, analogia, szacowanie proxy, poker planujący i szacowania ścienne.Możemy również użyć narzędzia, takiego jak Cocomo II.Wszystkie te techniki wymagają, aby wybrać jednostkę szacowania — godziny, dni, tygodnie, miesiące, idealne dni, rozmiary koszulkowe, punkty — lub je wszystkie.Jeśli nie rozumiemy jednostki, oszacowanie jest bezwartościowe.Biorąc to wszystko pod uwagę, nic dziwnego, że mamy problemy z szacowaniem.
Chociaż zwinne zespoły mają skłonność wybierania określonego rodzaju jednostek i technik szacowania w celu oszacowania zaległości produktu (punkty historyjki i poker planujący), zespół powinien czuć się swobodnie przy wyborze metody najlepiej pasującej do jego potrzeb.Moje doświadczenie mówi, że wyrażanie oszacowań w kategorii punktów historyjek, używając pokera planującego lub szacowania na ścianie, daje najlepsze rezultaty.W następujących ustępach poznasz koncepcję punktów historyjek jako jednostki miary i dwie techniki szacowania, które preferuję: poker planujący i szacowanie na ścianie.
Punkty wątku jako jednostka miary
Mike Cohn podsumowuje najlepiej punkty historyjek: „Punkty historyjek są jednostką miary dla wyrażania całkowitego rozmiaru historyjki użytkownika, funkcji lub innego elementu pracy.„Punkty historyjki mówią nam, jak duża jest historyjka w porównaniu z innymi — pod względem rozmiaru lub złożoności.Mike często odnosi się do „psiej punktacji” podczas pomagania zespołom zrozumieć pojęcie względnego ustalania rozmiaru.2-punktowy (mały) pies byłby chihuahuą.13-punktowy (duży) pies byłby dogiem niemieckim.Mając na uwadze te dwie wskazówki, stosunkowo łatwo określić rozmiar psów innej rasy względem chihuahua lub doga.Beagle, który jest dwa razy większy od chihuahuy, mógłby mieć 5 punktów.Labrador, który jest większy niż beagle, ale mniejszy niż dog niemiecki, może mieć 8 punktów.
Jeśli rozpoczynasz naukę używania punktów historyjki, Twój zespół musi ustanowić własne stałe punkty porównania.Aby to zrobić, wybierz wątek z zaległości produktu, który zgodnie uznany za mały (pod względem rozmiaru lub złożoności) i jeden zgodnie uznany za wielki.Lubię, kiedy moja mała historyjka jest dwupunktowa, ponieważ jeśli trzeba przejść na mniejszy poziom (na przykład odkrywam zabawkową chihuahuę), mogę to zrobić.Jeśli ograniczę swoją najmniejszą znaną historyjkę do jednopunktowej historyjki, po czym muszę jeszcze ją zmniejszyć, jestem w kłopocie.Długość innych historyjek można zmienić względem tych.
Jeśli chodzi o wybieranie numerów do reprezentowania tych rozmiarów, okazało się, że sekwencja Fibonacciego działa najlepiej.Ciąg Fibonacciego jest sumą dwóch poprzednich liczb.1 i 2, następny jest 3.3 i 2, następny jest 5.5 i 3, następne jest 8, itd.Preferuję Fibonacciego wobec na przykład rozmiarów koszulkowych lub wzrostu wykładniczego (4/8/16/32/64/128/256 itd.), ponieważ jako ludzie dobrze radzimy sobie z podstawą dziesiętną.Jeśli wyjdziemy poza ten zakres, nawet jeżeli zawiera xs, s, m, l, xl — staje się to mylące.Liczby Fibonacciego są proste, łatwo zrozumiałe i wystarczająco dokładne, aby doprowadzić nas do celu — dostarczenia względnych szacunków.Można wybrać inny zestaw liczb, ale należy pamiętać, że ważną rzeczą jest zachowanie spójności.
Punkty wątku są wartościami względnymi — nie są stałe.Nie ma bezpośredniej współzależności między godzinami i punktami.Na przykład nie można powiedzieć z jakimkolwiek stopniem pewności, że dwupunktowa historyjka jest równa 12,2 godzinom, ponieważ historyjki w zakresie dwóch punktów różnią się znacznie pod względem liczby godzin rzeczywistej pracy potrzebnych do ich ukończenia.Nie można porównywać szczegółów wątku danego zespołu z innym, mając przy tym jakąkolwiek pewność.Punkty wątków są tworzone przez dany zespół, który je ocenia i dla którego są określone. Jest szansa, że będą w pewnym stopniu skomplikowane i zrozumiałe tylko dla nich oraz że nie są wartością bezwzględną.
Poker planujący
Po wybraniu jednostki miary i ustaleniu skali jest czas na szacowanie.Większość zwinnych zespołów korzysta z pokera planującego do szacowania względnej wielkości historyjek.Jest popularny wśród zwinnych zespołów, ponieważ jest obiektywną miarą, która obejmuje kilka subiektywnych technik szacowania, w tym analogie i oceny ekspertów.Kluczowy w metodzie planning poker jest udział.Wszyscy członkowie zespołu muszą uczestniczyć — tak, wszyscy.Testerzy funkcjonalności oszacują zadania programistyczne i odwrotnie.Funkcjonalni menedżerowie projektów mogą również szacować zadania programistyczne.W ten sposób zapewniasz, że obiektywne liczby zawierają jak najwięcej subiektywnego szacowania.
Zacznij od zestawu planowania kart do pokeraKarty pokera planującego powstają z łatwością przy użyciu kart indeksu, dzięki użyciu kart do gry lub przy zakupie. Można to uzyskać nawet dzięki Visual Studio.Każda karta ma jeden z numerów z wybranego zakresu punktów historyjki (1, 2, 5, 8, 13 itp.).Każdy uczestnik otrzymuje „rękę” zawierającą pełny zakres dostępnych punktów historyjki.
Po rozdaniu kart rozpocznie się gra.
Mistrz Scrum prezentuje zespołowi górny element zaległości produktu.
Zespół omawia wątek.
Właściciel produktu wyjaśnia pytania, założenia i niejasności — oraz kryteria akceptacji.
Każdy członek zespołu decyduje prywatnie, jak duża jest ta historyjka względem historyjki referencyjnej, serii historyjek referencyjnych lub wszystkich historyjek w zaległości produktu.
Na trzy wszyscy jednocześnie pokazują swoje wybrane karty.
Jeśli wszyscy zagrali tą samą kartą, zespołu może zarejestrować oszacowanie i przejść do następnej historyjki.
Jeśli odchylenie jest szerokie (na przykład wyświetlane cyfry sięgają od 1 do 8), zespół spędza czas na omawianiu historyjki.Aby skupić dyskusję, licytujący nisko i licytujący wysoko muszą uzasadnić swoje oszacowania.W tym przypadku cenna jest konwersacja, a nie wartość liczbowa, ponieważ jest to czas nauki i dokonywania wszelkich założeń.Po krótkiej dyskusji (30 sekund - minuta) zespół powtarza kroki 4 i 5.Ten proces jest kontynuowany do momentu, w którym zespół zgodzi się na oszacowanie wątku.
Wydaje się to stosunkowo proste, ale jest ważne zrozumienie niektórych podstawowych zasad.Po pierwsze, jeśli zespół nie dojdzie do jakiegoś porozumienia, nie należy przechodzić dalej.Na przykład załóżmy, że występuje w zespole jedna osoba, która wybiera numer osiem, ale wszystkie inne wybrały pięć.Jeśli organizator spotkania mówi „Wystarczająco blisko.Nam wystarczy pięć, idźmy dalej." Co zrobi osoba, który miała osiem?Na podstawie swoich doświadczeń sądzę, że ta osoba pójdzie każdym kierunku wskazanym przez zespół, ale się w pełni nie zaangażuje.W ten sposób planowanie może zająć mniej czasu, ale można stracić coś cennego.Nie tylko ta osoba traci okazję do zrozumienia pracy, ale zespół traci uwagi i punkt widzenia jednego członka.Ponadto jest OK, aby się nie zgadzać.Wartościowy opis pochodzi z dyskusji o tym, dlaczego jedna osoba wybiera wyższy numer niż pozostałe osoby.Jeśli znajdziesz się w impasie, poproś organizatora o wypróbowanie techniki „pięciu palców pięści”.Działa cuda pod względem nadania spotkaniu tempa bez zniechęcania któregokolwiek z uczestników.
Ponieważ poker planujący wyraża oszacowania w punktach, jest idealny do szacowania zaległości produktu.Jednakże zaległości sprintu powinny być szacowane w godzinach.Teraz wiemy już, że poker planujący nie tylko może być, ale także jest z powodzeniem używany do oszacowania zaległości w sprincie; numery na kartach, zamiast punktami, stają się godzinami.Prosta zasada brzmi:
Oszacowania zaległości produktu są w punktach.
Oszacowania zaległości sprintu są w godzinach.
Poker planowania może być używany na początku każdego projektu i podczas całego jego cyklu, gdy pojawiają się nowe informacje, zmieniają się priorytety i powierzchnie jasności.
Szacowanie ścienne
Poker planujący jest znakomitym narzędziem służącym szacowaniu wątków użytkowników, ale zajęłoby to zbyt dużo czasu, aby oszacować setki wątków, jeden za drugim, korzystając z pokera planującego.Jeśli masz surową zaległość wypełnioną setkami historyjek, które nie zostały oszacowane lub spriorytetyzowane, potrzebujesz szybszego sposobu szacowania.
Szacowanie ścienne umożliwia zespołom wyeliminowanie dyskusji 2 przeciwko 3 i 5 przeciwko 8 i zastępuje myślenie grupowe w czysto względny liniowy sposób (przynajmniej początkowo).Umożliwia również zainteresowanym stronom nadawanie ogólnych priorytetów dużej grupie historyjek bez marnowania czasu na rozważanie, czy jedna historyjka jest nieco bardziej istotna niż inna.
Wykonanie szacowania ściennego wymaga najpierw wydrukowania wątków użytkownika na kartach.Następnie zbierz zespół i udziałowców w pomieszczeniu z dużą, czystą ścianą (około 4 metrów długości i 2,5-3 metrów wysokości). Wiedz o dwóch rzeczach na temat ściany:
Wysokość określa priorytet.U góry są wyższe wątki, natomiast u dołu niższe.Priorytet historyjki może opierać się na ROI, wartości biznesowej lub czymś tak prostym jak „jest to ważna, ale nie wiem dlaczego”.
Szerokość jest zarezerwowana dla rozmiaru.Po lewej stronie są mniejsze wątki, natomiast po prawej stronie większe.(Można to odwrócić i przełączyć ze strony prawej na lewą, jeśli na przykład jesteś w Japonii i to bardziej logiczne.) Ważną rzeczą jest wyobrażenie, że jedna linia przebiega poziomo, a druga pionowo.Członkowie zespołu i udziałowcy powinni zadać sobie pytanie: gdzie, względem innych wątków, pasuje ten wątek?
Zespół użyje tablicy do uszeregowania wątków pod względem rozmiaru.Zainteresowane strony użyją tablicy do nadania wątkom priorytetów.Tak jak w przypadku pokera planującego, używamy względnego ustalania rozmiaru, ale zamiast użyć dwóch referencyjnych historyjek dla porównania, ściana staje się stałą.Niewielki wątek?Przenieś w lewo.Duża sprawa?Przenieś w prawo.Ważna historyjka?Umieść na górze.Historyjka, bez której na razie możemy się obejść?Umieść na dole.
Mimo że zainteresowane strony nie muszą być obecne przy szacowaniu historyjek, zespół musi być w pomieszczeniu podczas priorytetyzowania historyjek.Mistrz Scrum i właściciel produktu musi uczestniczyć zarówno w czynnościach dotyczących oszacowania, jak i priorytetyzowania.
Teraz, jeśli masz już oszacowaną zaległość, możesz po prostu wykonać sekcję priorytetyzacji tego ćwiczenia.Jeśli właściciele produktu i zainteresowane strony przekazali już Ci spriorytetyzowaną zaległość, można tylko zrobić sekcję szacowania w ćwiczeniu.(Właściciel Twojego produktu prawdopodobnie będzie chciał zrewidować priorytety po wykonaniu oszacowania.W końcu koszt ma duży wpływ na priorytet.) Przyjrzyjmy się szczegółowo, w jaki sposób to będzie działać, począwszy od roli zespołu.
Szacunek
Daj zespołowi surową zaległość produktu i zacznij od szacowania.Poinstruuj zespół, że przy lewej krawędzi ściany powinny się znaleźć najmniejsze możliwe historyjki, a przy prawej krawędzi powinny się znaleźć największe możliwe historyjki, niezależnie od liczby.Zespół umieszcza wątki gdzieś na tablicy, w oparciu o te dwa bieguny.Zaletą takiego podejścia jest brak ustalania z góry, że historia ma być za dwa czy za trzy punkty. Poziom złożoności jest naprawdę względny i ustalany na podstawie jej wielkości oraz przydatności.
Jeśli zespół ma trudność ze zrobieniem tego, możesz nadać więcej struktury ścianie, dostarczając dodatkowe historyjki referencyjne w zakresie od 1 do 8 punktów.Nie nastawiaj się na tworzenie większej historyjki referencyjnej; każda większa będzie zwykle rozbita na mniejsze wraz ze wzrostem priorytetu.Gdy zespół zidentyfikuje pięć historyjek, należy je umieścić na ścianie w miejscu, które jest skorelowane z ich wielkością (ponownie idąc od lewej do prawej).Pozostaw nieco miejsca po prawej stronie ściany na historyjki większe niż osiem punktów.Umieść te wątki na ścianie i poinstruuj zespół, aby umieścił pozostałe wątki na ścianie, które dotyczą wątków referencyjnych, pamiętając, że mniejsze wątki powinny znajdować się po lewej stronie, a większe po prawej.
Z historyjkami na ścianie zespół może zidentyfikować logiczne przerwy między rozmiarami historyjek.Przyklej pionową linię pomiędzy grupami wątków, aby pokazać te podziały.Niebawem pojawi się ściana, która będzie wyglądała podobnie do przedstawionej tutaj.Wszystko w pierwszej grupie może mieć 2 punkty; wszystko w drugiej 3; wszystko w trzeciej 5; i wszystko w ostatniej grupie 8 punktów.Liczby nie mają znaczenia, ponieważ wszystkie historyki są obecnie szacowane względem siebie nawzajem.
Teraz gdy zostały oszacowane historyjki, należy zaangażować zainteresowane strony, tak aby historyjkom można było przypisać priorytet.
Określanie priorytetów
Chociaż klienci i zainteresowane strony będą chcieli wiedzieć, jak duża jest historyjka, aby pomóc im określić jej priorytet, będą znacznie bardziej skoncentrowani na znajdowaniu historyjek, które odnoszą się do nich, i upewnianiu się, że historyjki te zostaną uwzględnione.Oczekuj, że zainteresowane strony nie zgadzają się w sprawie priorytetu — właściciel produktu użyje tych informacji, aby pomóc w ustaleniu ostatecznego priorytetu.
Wyjaśnij koncepcję ściany zainteresowanym stronom.Poinformuj ich, że karty na ścianie odpowiadają funkcjom, jakie chcieliby widzieć w produkcie końcowym.Wyjaśnij, że zespół już oszacował każdą historyjkę i że może określić oszacowanie punktów dla historyjki oparte na tym, w której kolumnie jest ona na ścianie.Przypomnij wszystkim, że członkowie zespołu nie są aktywnymi uczestnikami procesu ustalania priorytetów.Ich zadania to obserwacja, sporządzanie notatek dotyczących zachowania i powodów, dla których priorytet określonych wątków wzrasta bądź spada.W razie potrzeby mogą one również odpowiedzieć na pytania zainteresowanych stron.Jeśli zespół nie może określić wielkości prac dla jednej lub więcej historyjek z pewnością, ponieważ są wymagane odpowiedzi od określonej zainteresowanej strony, zespół może również zadawać pytania o te historyjki, jeśli pozwala na to czas.
Poproś zainteresowane strony, aby pomogły określić względne priorytety wszystkich historyjek przez przeniesienie historyjek w górę lub w dół wewnątrz przyklejonych kolumn.Przypomnij, że im wyżej historyjka znajduje się na ścianie, tym ważniejsza jest dla firmy.Ustaw następujące zasady:
Jeżeli umieścisz historyjkę u góry, przygotuj się na uzasadnienie takiego umieszczenia.
Można wzajemnie zadawać sobie pytania, dlaczego jeden wątek jest ważniejszy niż drugi.Bez obaw zadawajcie sobie pytanie „Kto przeniósł tę do dołu (lub góry)?” albo mówcie głośno „Myślę, że ta wymaga przesunięcia.Kto jest przeciw?” Umożliwia to konwersację między zainteresowanymi stronami, bez ułatwień.
Jeśli przesuniesz historyjkę niżej na ścianie niż zrobił to ktoś inny, oznacz ją kolorową kropką, aby zasygnalizować zmianę.
Największa korzyść ustalania priorytetów w grupie polega na tym, że wszystkie zainteresowane strony mogą lepiej zrozumieć priorytety różnych historyjek.Jeśli dyskusja trwa zbyt długo bez rozstrzygnięcia, właściciel produktu powinien zebrać karty, zidentyfikować dwóch uczestników, którzy nie zgadzają się, i zanotować konieczność spotkania się z nimi prywatnie później.
Ćwiczenie może zająć 2-6 godzin, w zależności od liczby historyjek i udziałowców.Po zakończeniu ściana będzie wyglądała jak poniższy obraz.
Ściana rozpadnie się na cztery części.Wątki w lewej górnej części mają wysoki priorytet i są niewielkie, więc znajdą się w górnej części listy zaległości produktu.Wątki w prawej górnej części mają wysoki priorytet, ale są również duże.Wątki te powinny być szybko podzielone, aby mogły być wprowadzane do nadchodzących Sprintów.
Niższy kwadrant z lewej składa się z małych historyjek, które mają niższy priorytet.Prawdopodobnie spadną one na sam dół dziennika.Niższy kwadrant z prawej jest wypełniony długimi historyjkami, które również mają niższy priorytet.Wątki te są eposami lub motywami.Ostatecznie trzeba będzie podzielić je na mniejsze, łatwiejsze do zarządzania wątki, ale dopiero po wzroście ich priorytetu.
Poświęć trochę czasu, patrząc grupowo na ścianę.Jeśli historyjka jest w niewłaściwej ćwiartce, przenieś ją.Jeśli historyjkę o wysokim priorytecie trzeba podzielić na mniejsze i pozwala na to czas, wykonaj to, gdy wszyscy są w pokoju.
Na końcu szacowania ściennego uzyskasz początek planu wersji.Jeśli znasz historyczną prędkość pracy zespołu, można nawet zgrubnie oszacować, które historyjki w lewej górnej ćwiartce zostaną ukończone.
Szacowanie jest trudne, ponieważ jest tyle niepewności na początku projektu.Właściciele produktu i menedżerowie projektu Agile próbują zmaksymalizować wartość wczesnego uczenia się, poprzez rozmowy z ich właścicielami produktu i współudziałowcami produkującymi oprogramowanie i zbierającymi informacje zwrotne na temat tego oprogramowania, aby uzyskać stan gotowości do wprowadzenia na rynek.Ale nawet zwinne projekty muszą udostępniać pewne oszacowania, kiedy zbiór funkcji będzie gotowy do opublikowania.
Dwie zalecane techniki szacowania to poker planujący (odpowiedni dla mniejszych zestawów wątków) lub szacowanie ścienne (dobre w przypadku zarządzania dużymi dziennikami surowych produktów).Oba warianty dadzą dane potrzebne do rozpoczęcia tworzenia planu, co jest głównym celem oszacowania.
Zobacz też
Koncepcje
Tworzenie lub dodawanie informacji o zaległościach związanych z produktem
Optymalizacja i szacowanie zaległości
Mike Cohn, Agile Estimating and Planning, strona 36
Podejmowanie decyzji przez konsensus: sygnały ręczne (Wikipedia)