Abstrakt
Oszacowanie nakładu pracy w projektach zwinnych różni się zasadniczo od tradycyjnych metod estymacji. Tradycyjne podejście polega na szacowaniu przy użyciu techniki „bottom-up”: wyszczególnienie wszystkich wymagań i oszacowanie każdego zadania do wykonania tych wymagań w godzinach/dniach, a następnie wykorzystanie tych danych do opracowania harmonogramu projektu. Projekty zwinne, w przeciwieństwie do nich, używają podejścia „z góry na dół”, wykorzystując techniki szacowania na poziomie brutto dla zestawów funkcji, a następnie stosując metody progresywnego opracowywania i planowania kroczącego w celu drążenia do poziomu zadań na zasadzie „just-in-time”, iteracyjnie odkrywając coraz więcej szczegółów na każdym poziomie. W tym artykule omówione zostaną dwie wspólne techniki estymacji zwinnej (poker planistyczny i grupowanie pokrewieństwa), a także sposób, w jaki wyniki tych ćwiczeń zapewniają dane wejściowe do prognozowania harmonogramu i budżetu.
Top-down vs. Bottom-up
Tradycyjna metoda estymacji projektów polega na spędzeniu kilku tygodni lub miesięcy na początku projektu na definiowaniu szczegółowych wymagań dla budowanego produktu. Gdy wszystkie znane wymagania zostaną zebrane i udokumentowane, można stworzyć wykres Gantta pokazujący wszystkie zadania potrzebne do spełnienia wymagań wraz z oszacowaniem każdego zadania. Zasoby mogą być następnie przypisane do zadań, a działania takie jak ładowanie i poziomowanie pomagają określić ostateczną datę dostawy i budżet. Ten proces jest znany jako metoda bottom-up, ponieważ wszystkie szczegóły dotyczące produktu muszą być zdefiniowane zanim harmonogram projektu i koszt mogą być oszacowane.
W przemyśle oprogramowania, użycie metody bottom-up ma poważne wady z powodu dzisiejszej szybkości zmian. Szybkość zmian oznacza, że szybkość nowych narzędzi rozwojowych i szybkość dostępu do nowej wiedzy jest tak duża, że każde opóźnienie w dostawie pozostawia jedną otwartą na konkurencyjne alternatywy i w niebezpieczeństwie dostarczenia przestarzałego produktu (Sliger, 2010).
Metoda top-down odnosi się do tego kluczowego problemu, wykorzystując aktualnie dostępne informacje, aby zapewnić szacunki na poziomie brutto. Planowanie falowe jest następnie wykorzystywane do włączania nowych informacji w miarę ich pozyskiwania, dalszego udoskonalania szacunków i iteracyjnego opracowywania bardziej szczegółowych danych w miarę postępu projektu. Ta metoda uczenia się tylko tyle, aby rozpocząć, z planem włączenia większej wiedzy w miarę ewolucji wyników pracy, pozwala zespołowi projektowemu szybko reagować na przeciwności losu i zmieniające się zapotrzebowanie rynku.
Techniki szacowania
Techniki szacowania na poziomie brutto są w użyciu przez zespoły stosujące podejścia zwinne, takie jak Scrum i Extreme Programming, a niniejszy artykuł omówi dwie z najbardziej popularnych technik: Planning Poker oraz Affinity Grouping. Przeanalizowane zostaną również stosowane jednostki estymacji, ponieważ jednostki te powinny być takie, aby nie można ich było pomylić z czasem.
Planning Poker
Najpopularniejszą techniką estymacji poziomu brutto jest Planning Poker, czyli wykorzystanie ciągu Fibonacciego do przypisania wartości punktowej do cechy lub elementu (Grenning, 2002). Sekwencja Fibonacciego jest matematyczną serią liczb, która została wprowadzona w XIII wieku i wykorzystana do wyjaśnienia pewnych formatywnych aspektów natury, takich jak rozgałęzianie się drzew. Seria jest generowana przez dodanie dwóch poprzednich liczb razem, aby uzyskać następną wartość w sekwencji: 0, 1, 1, 2, 3, 5, 8, 13, 21, i tak dalej. Dla celów estymacji zwinnej niektóre z liczb zostały zmienione, w wyniku czego powstała następująca seria: 1, 2, 3, 5, 8, 13, 20, 40, 100.
Liczby te są reprezentowane w zestawie kart do gry (patrz rysunek 1). Członkowie zespołu grają w „Pokera planistycznego” (Załącznik 2), aby przedstawić szacunki w formie wartości punktowej dla każdej pozycji. Oto kroki:
- Każdy członek zespołu otrzymuje zestaw kart.
- Właściciel firmy (który NIE dostaje do oszacowania) przedstawia element do oszacowania.
- Przedmiot jest omawiany.
- Każdy członek zespołu prywatnie wybiera kartę reprezentującą jego/jej oszacowanie.
- Kiedy wszyscy są gotowi, wszystkie wybrane karty są ujawniane w tym samym czasie.
- Jeśli wszyscy członkowie zespołu wybrali tę samą kartę, to ta wartość punktowa jest oszacowaniem.
- Jeśli karty nie są takie same, zespół omawia oszacowanie z naciskiem na wartości odstające:
- Członek, który wybrał najniższą wartość, wyjaśnia, dlaczego wybrał tę wartość.
- Członek, który wybrał najwyższą wartość, wyjaśnia, dlaczego wybrał tę wartość.
- Wybieraj ponownie, aż oszacowania będą zbieżne.
- Jeśli wynikną długie lub „w chwastach” rozmowy, członkowie zespołu mogą użyć dwuminutowego licznika czasu, aby odmierzyć czas dyskusji, wybierając ponownie za każdym razem, gdy kończy się licznik, aż do konwersji.
- Powtórz dla każdej pozycji (Cohn, 2006, s. 56-57).
Wystawa 1. Planning Poker Cards
Exhibit 2. Gra Planowanie Poker (Photo courtesy of Museums and the Web. All Rights Reserved)
Istnieje kilka powodów, Fibonacci numery są używane, i używane w tym formacie. Pierwszym z nich jest przekonanie, że gdy zespoły wyeliminują czas jako podstawę szacunku, są mniej skłonne do żądania większej ilości szczegółów i szacunków padów. Liczby te zamiast tego reprezentują względną wielkość, a nie czas. W rezultacie, ćwiczenie szacowania przebiega dość szybko. Zespoły zazwyczaj poświęcają około dwóch minut na każdą pozycję, co pozwala na oszacowanie 30 pozycji w ciągu godziny. Fakt, że zespoły są ograniczone do tylko 9 wyborów (tj. wartości punktowych lub kart) również pomaga przyspieszyć proces.
Sekwencja zapewnia również odpowiedni poziom szczegółowości dla mniejszych i lepiej rozumianych cech, jednocześnie unikając fałszywego poczucia dokładności w przypadku wyższych oszacowań. Na przykład, element z wysokim oszacowaniem (20 lub wyższym) oznacza, że element jest duży i jeszcze nie jest dobrze zrozumiany. Debatowanie nad tym, czy element jest 20, 19 czy 22, byłoby stratą czasu, ponieważ po prostu nie ma wystarczającej ilości danych. Kiedy element zbliża się do iteracji, w której będzie pracował, można go podzielić na mniejsze części i oszacować w bardziej ziarnistych liczbach (1-13). Elementy z szacunkami punktowymi od 1-13 mogą być generalnie ukończone w ramach jednej iteracji (1-4 tygodnie).
Należy zauważyć, że punkty nie mają tego samego znaczenia w różnych zespołach; na przykład, „piątka” jednego zespołu nie równa się „piątce” innego zespołu. Tak więc prędkość zespołu, która pochodzi z punktów, nie powinna być używana do porównywania produktywności w różnych zespołach.
Grupowanie pokrewieństwa
Jeszcze szybszym sposobem szacowania i używanym, gdy liczba elementów do oszacowania jest duża, jest grupowanie pokrewieństwa. Członkowie zespołu po prostu grupują razem elementy, które są podobnej wielkości, w wyniku czego powstaje konfiguracja podobna do tej z rysunku 3. Metoda jest prosta i szybka:
- Pierwszy element jest czytany członkom zespołu i umieszczany na ścianie.
- Drugi element jest czytany i zespół jest pytany, czy jest on mniejszy czy większy niż pierwszy element; umieszczenie na ścianie odpowiada odpowiedzi zespołu (większy jest po prawej, mniejszy po lewej).
- Trzeci element jest czytany i zespół jest pytany, czy jest mniejszy lub większy niż pierwszy i/lub drugi element; element jest umieszczany na ścianie odpowiednio.
- Kontrola jest następnie zwrócona do zespołu, aby zakończyć grupowanie powinowactwa dla reszty elementów.
Zespoły mogą wybrać kontynuowanie w ten sam sposób, umieszczając jeden element na raz na ścianie po dyskusji grupowej. Jednakże, szybszym sposobem jest posiadanie każdego członka zespołu, który wybiera element i umieszcza go w oparciu o własne najlepsze zrozumienie. Odbywa się to przy równoległej pracy wszystkich członków zespołu, aż wszystkie elementy zostaną ocenione i umieszczone na ścianie. W stosunkowo krótkim czasie można oszacować kilkaset przedmiotów. Gdy wszystkie przedmioty znajdą się na ścianie, zespół dokonuje przeglądu grup. Przedmioty, które zdaniem członka zespołu znajdują się w niewłaściwej grupie, są omawiane i przenoszone, jeśli jest to właściwe.
Po zakończeniu grupowania pokrewieństwa można przypisać wartości jednostek szacowania, takie jak punkty. Na rysunku 3, pierwszy zestaw po lewej stronie będzie oznaczony jako mający wartość 1 punktu, drugi zestaw będzie miał 2 punkty, trzeci zestaw 3 punkty, czwarty zestaw 5 punktów, a ostatni zestaw 8 punktów.
Grupowanie pokrewieństwa może być również przeprowadzone dla innych jednostek szacunkowych, takich jak rozmiary koszulek. Na rysunku 4 pokazano przykład grupowania powinowactwa elementów oznaczonych rozmiarami koszulek zamiast punktów.
Wystawa 3. Affinity Grouping Example
Exhibit 4. Affinity Grouping Using T-Shirt Sizes (Graphic courtesy of Chris Sterling. All Rights Reserved.)
Estimation Units
Użycie rozmiarów koszulek (Extra Small , Small , Medium , Large , Extra Large ) jest innym sposobem myślenia o względnych rozmiarach cech. Jest to jeszcze większe odejście od systemu numerycznego, i jak wszystkie dobre jednostki szacunkowe na poziomie brutto, nie mogą być w żaden sposób powiązane z konkretną długością czasu.
Inne arbitralne żetony miary to Gummi Bears, NUTS (Nebulous Units of Time), i funty nożne. Zespoły mogą tworzyć swoje własne jednostki szacunkowe i jak widać, często mają z tego trochę zabawy.
Niniejszy dokument nie obejmuje użycia jednostek czasowych, takich jak idealne dni i/lub godziny rozwoju. Są one już powszechne i dobrze rozumiane, więc ich objaśnienia nie zostały uwzględnione. Warto jednak zauważyć, że szacowanie na poziomie brutto ma potencjał, aby być bardziej skuteczne, gdy jest oddzielone od pojęcia czasu. Ponieważ szacunki czasu są często przekształcane w zobowiązania przez kierownictwo i biznes, członkowie zespołu czują większą presję, aby być tak dokładnymi, jak to tylko możliwe. W rezultacie żądają coraz więcej szczegółów na temat szacowanego elementu. To zamienia szacowanie na poziomie brutto w bardziej czasochłonne szacowanie na poziomie szczegółowym i pokonuje oryginalny zamiar i cel.
Przewidywanie harmonogramu i budżetu
Gdy szacunki na poziomie brutto i prędkość zespołu są określone, można prognozować harmonogram i budżet. Zespoły określają swoją prędkość poprzez zsumowanie całkowitej liczby punktów za wszystkie elementy, które ukończyły w iteracji. Na przykład, zespół mógł wybrać pięć elementów, których łączna wartość punktowa wynosi 23 punkty (patrz rysunek 5). Na koniec swojej dwutygodniowej iteracji, byli w stanie ukończyć tylko cztery z pięciu elementów. Ich prędkość wynosi 15, czyli suma wartości punktowych z punktów 1-4. Zespoły nie otrzymują „częściowego uznania” za ukończenie części elementu, więc nawet jeśli zaczęliby od elementu 5, nie liczyłby się on, ponieważ nie został ukończony.
Wykaz 5. Określanie szybkości zespołu
Określanie harmonogramu
Średnia szybkość zespołu jest używana w prognozowaniu długoterminowego harmonogramu. Średnia prędkość jest obliczana poprzez zsumowanie pomiarów prędkości z ostatnich trzech iteracji zespołu i podzielenie tej sumy przez trzy. Jeśli więc zespół wykonał 15 punktów w swojej pierwszej iteracji i 20 punktów w każdej z dwóch kolejnych iteracji, średnia prędkość zespołu wynosi 18 (15+20+20 / 3). Jeśli zespół jest w stanie wykonać średnio 18 punktów w jednej iteracji, a w projekcie jest 144 punktów do wykonania, to wykonanie pracy zajmie zespołowi osiem iteracji (144 / 18). Jeśli każda iteracja trwa dwa tygodnie, to przewidywany czas ukończenia projektu wynosi 16 tygodni. Ta metoda pozwala nam odpowiedzieć na pytanie: „Kiedy skończymy całą tę pracę?”
Jeśli zespół posiada zapis danych dotyczących prędkości, możliwe jest określenie najbardziej optymistycznej daty ukończenia, najbardziej pesymistycznej oraz najbardziej prawdopodobnej. Średnia prędkość zespołu jest używana do obliczenia najbardziej prawdopodobnego scenariusza, podczas gdy prędkości z najgorzej radzących sobie iteracji zespołu są używane do obliczenia najbardziej pesymistycznej przewidywanej daty ukończenia. Użycie prędkości z iteracji, w których zespół był w stanie ukończyć więcej niż oczekiwano, zapewnia najbardziej optymistyczną prognozę.
Możemy również użyć tych liczb, aby odpowiedzieć na pytanie: „Musimy dostarczyć coś do tej daty – z tych cech, ile zrobimy do tego czasu?”. Zobacz rysunek 6, aby zobaczyć przykład prognozy najbardziej prawdopodobnej ilości do ukończenia, prognozy pesymistycznej i prognozy optymistycznej. Przykład ten dotyczy zespołu, którego średnia prędkość wynosi 20 i który ma prędkość najgorszych wyników równą 12 oraz prędkość najlepszych wyników równą 25. Biorąc to pod uwagę i mając tylko sześć tygodni (trzy iteracje), jak wiele może zostać ukończone? Prognoza pesymistyczna mówi, że tylko elementy 1-8 zostaną wykonane w ciągu sześciu tygodni. Optymistyczna prognoza mówi, że elementy 1-18 zostaną ukończone. A najbardziej prawdopodobna prognoza, oparta na średniej prędkości zespołu wynoszącej 20, jest taka, że elementy 1-13 zostaną ukończone w ciągu sześciu tygodni.
Jeśli zespoły używały nienumerycznych jednostek szacunkowych, takich jak rozmiary koszulek, algorytmy prognozowania będą bardziej złożone. Zaleca się konwersję rozmiarów na system numeryczny, aby łatwiej wygenerować podobne dane. Na przykład, Mały może być przekonwertowany na NUT równy 3, Średni na NUT równy 5, itd. Można je również przekonwertować na zakresy czasowe (na przykład Mały może wynosić 1-3 dni), ale jest to z natury ryzykowne, ze względu na problemy przytoczone już w sekcji Jednostki szacunkowe.
Wystawienie 6. Example Forecast for Item Completion
Determining Budget
W tej sekcji przyglądamy się odpowiedzi na pytanie: „Mamy tylko tyle pieniędzy – na jak długo starczy i ile zdążymy zrobić, zanim nam się skończą?”. Po pierwsze, do określenia kosztu za punkt używa się prostego wzoru:
Σ (obciążone pensje zespołu za okres n) / punkty zrealizowane w okresie n
Weź sumę pensji zespołu (obciążonych) za dany okres czasu, powiedzmy trzy dwutygodniowe iteracje, i podziel to przez liczbę punktów, które zespół zrealizował w tym samym przedziale czasowym. Tak więc zespół, którego całkowite obciążone pensje wynoszą 240 000 USD w ciągu sześciu tygodni i który wykonał 60 punktów pracy w tych trzech iteracjach, miałby koszt za punkt w wysokości 4 000 USD. Teraz użyj następującego wzoru, aby określić budżet:
(Koszt za punkt x całkowita wartość punktowa elementów do wykonania) + inne wydatki = przewidywany budżet
Dość często nie wszystkie cechy produktu są zdefiniowane na początku projektu, co jest zgodne z oczekiwaniami dla projektów zwinnych. Tak więc szacunki budżetu są oparte na tym, co wiemy dzisiaj, plus algorytm prognozy, który jest oparty na danych historycznych lub wskazówkach ekspertów. Na przykład, powiedzmy, że do tej pory wymieniono tylko 20 funkcji, ale biznes nie będzie w stanie dostarczyć żadnych dodatkowych żądań funkcji lub udoskonaleń, dopóki nie zobaczy, jak pierwsze wydanie zostanie odebrane przez klienta. W budżecie projektu, który jest przewidziany na trzy wydania, dostępne byłyby dane prognozowane tylko dla pierwszego wydania, a nie dla całego projektu. Zespół mógłby użyć powyższego algorytmu do prognozowania budżetu dla pierwszego wydania, a następnie założyć dodatkowe 20% dla drugiego wydania i dodatkowe 5% dla ostatniego wydania, bazując na doświadczeniach z przeszłości.
Podobnie jak prędkość, prognozy budżetu i prognozy harmonogramu są weryfikowane w każdej iteracji. Jest to część procesu planowania „rolling-wave”, do którego stosują się projekty zwinne.
Słowa końcowe
Najpewniej nie omówiono w tym dokumencie braku ustrukturyzowanych technik szacowania stosowanych w podejściach lean, takich jak Kanban. Zamiast spędzać (marnować) czas na szacowanie elementów, średnie czasy cyklu i realizacji są obliczane na podstawie rzeczywistych wskaźników przepustowości zespołu. Kanban wykorzystuje matematyczne twierdzenie prawa Little’a jako podstawę dla swoich formuł. Używając obliczeń czasu realizacji wywodzących się z diagramów przepływu kumulatywnego, zespoły prognozują harmonogramy projektów, nie poświęcając z góry czasu na przygotowanie szacunków. Czytelnik jest zachęcany do przeprowadzenia niezależnych badań na ten temat, które same w sobie mogłyby stanowić osobny artykuł.
Projekty zwinne mają na celu dostarczanie produktu lub jego przyrostów wcześnie i często, aby uwzględnić informacje zwrotne od klientów i inne doświadczenia w następnym wydaniu. Poświęcając więcej czasu na eksperymentowanie, wykonywanie i uczenie się, a mniej czasu na spekulacje, skraca się czas cyklu dostarczania produktu. Zwinne zespoły są w stanie lepiej konkurować na rynku i dotrzymywać kroku stale rosnącej prędkości zmian.