Jestem członkiem zespołu projektowego złożonego z 4 programistów, w tym mnie. Od dłuższego czasu dyskutujemy o tym, jak poradzić sobie z dodatkową pracą, która pojawia się w ramach jednego elementu pracy.
Ta dodatkowa praca to zwykle rzeczy nieco związane z zadaniem, ale nie zawsze konieczne do osiągnięcia celu przedmiotu (może to być opinia). Przykłady obejmują między innymi:
- refaktoryzacja kodu zmienionego przez element pracy
- kod refaktoryzacji sąsiadujący z kodem zmienionym przez element
- przebudowując większy obszar kodu wokół biletu. Na przykład, jeśli element wymaga zmiany jednej funkcji, zdajesz sobie sprawę, że cała klasa może zostać ponownie wykonana, aby lepiej uwzględnić tę zmianę.
- ulepszenie interfejsu użytkownika w właśnie zmodyfikowanym formularzu
Kiedy ta dodatkowa praca jest niewielka, nie mamy nic przeciwko. Problem polega na tym, że ta dodatkowa praca powoduje znaczne rozszerzenie elementu poza pierwotne oszacowanie punktu cechy. Czasami 5-punktowy przedmiot zajmuje 13 punktów. W jednym przypadku mieliśmy 13-punktowy przedmiot, który z perspektywy czasu mógł wynosić 80 punktów lub więcej.
W naszej dyskusji krążą dwie opcje, jak sobie z tym poradzić.
Możemy zaakceptować dodatkową pracę w tym samym elemencie pracy i zapisać ją jako błędne oszacowanie. Argumenty za tym to:
- Planujemy „dopełnienie” na końcu sprintu, aby uwzględnić tego rodzaju rzeczy.
- Zawsze zostawiaj kod w lepszej formie niż go znalazłeś. Nie melduj się w pracach na wpół ocenianych.
- Jeśli zrezygnujemy z refaktoryzacji na później, trudno jest zaplanować i może się nigdy nie skończyć.
- Jesteś teraz w najlepszym „mentalnym” kontekście, aby poradzić sobie z tą pracą, ponieważ jesteś już w talii głęboko w kodzie. Lepiej jest usunąć go z drogi teraz i być bardziej wydajnym niż stracić ten kontekst, gdy wrócisz później.
Rysujemy linię dla bieżącego elementu pracy i mówimy, że dodatkowa praca przechodzi do osobnego biletu. Argumenty obejmują:
- Posiadanie osobnego biletu pozwala na nową wycenę, więc nie okłamujemy siebie, ile punktów tak naprawdę jest, ani nie musimy przyznać, że wszystkie nasze oceny są okropne.
- „Padding” sprintu jest przeznaczony do nieoczekiwanych wyzwań technicznych, które stanowią bezpośrednie przeszkody w spełnieniu wymagań dotyczących biletów. Nie jest przeznaczony do przedmiotów ubocznych, które są po prostu „ładne”.
- Jeśli chcesz zaplanować refaktoryzację, po prostu umieść go w górnej części zaległości.
- Nie ma sposobu, aby właściwie uwzględnić te rzeczy w oszacowaniu, ponieważ wydaje się to nieco arbitralne, gdy się pojawia. Kontroler kodu może powiedzieć „te elementy sterujące interfejsu użytkownika (których tak naprawdę nie zmodyfikowałeś w tym elemencie pracy) są nieco mylące, czy możesz to naprawić?” co jest jak godzina, ale mogą powiedzieć: „Cóż, jeśli ta kontrola dziedziczy teraz od tej samej klasy podstawowej, co pozostałe, to dlaczego nie przeniesiesz całego tego (setki wierszy) kodu do bazy i nie przeszukasz wszystkich tych rzeczy , zmiany kaskadowe itp.? ” A to zajmuje tydzień.
- „Zanieczyszcza miejsce zbrodni”, dodając do zgłoszenia niepowiązaną pracę, dzięki czemu nasze pierwotne szacunki punktów fabularnych są bez znaczenia.
- W niektórych przypadkach dodatkowa praca opóźnia odprawę, powodując blokowanie między programistami.
Niektórzy z nas mówią teraz, że powinniśmy zdecydować się na odcięcie, na przykład, jeśli dodatkowe rzeczy są mniejsze niż 2 FP, to idzie w tym samym bilecie, jeśli jest więcej, uczyń to nowym biletem.
Skoro mamy tylko kilka miesięcy, aby używać Agile, jaka jest opinia wszystkich bardziej doświadczonych weteranów Agile tutaj, jak sobie z tym poradzić?
źródło
Punkty opowieści są oszacowaniem względnej złożoności danej historii użytkownika. Wygląda na to, że używasz punktów opowieści, aby powiedzieć, że zajmie to X osobiście dni / godzin. Zamiast tego dąż do dwóch celów
Z czasem da ci to podstawową wartość prędkości. Każda pięciopunktowa opowieść nie zajmie tyle samo czasu co inne, ale średnia prędkość na sprint (ile punktów historii może ukończyć drużyna) będzie spójna.
Martwienie się o to, ile czasu zajmie konkretna historia, przynosi efekty odwrotne do zamierzonych. Szacunki uśredniają się tylko w stosunku do objętości konsekwentnie wielkości (IE jeden wskaźnik 5 może potrwać nieco dłużej z powodu refaktoryzacji, ale czerpiesz korzyści z tego wysiłku na pokrewnym).
źródło
Powinno być względne ograniczenie tego, ile mieści się w oryginalnym elemencie pracy, a ile jest czegoś innego. Historie użytkowników są punktami wyjścia do dyskusji, a zatem mogą istnieć wszelkiego rodzaju elementy lunety, które można ustalić podczas sprintu podczas pracy nad historią.
Może się zdarzyć, że w planowaniu sprintu historia może zostać dodana do dodatkowych kryteriów, aby uniknąć „pełzania zakresu”, co może się zdarzyć, gdy użytkownik chce nowego formularza, a następnie 101 zmian w tym formularzu, które nie są realistyczne skończ czasem w 2-tygodniowym sprincie.
Drugą stroną, o której należy pamiętać, jest to, ile zyskuje się dzięki tej dodatkowej pracy. Może być mnóstwo możliwych refaktoryzacji, które można by zrobić, ale ile korzyści może przynieść ktoś za całą tę pracę? W tym miejscu muszą istnieć pewne wytyczne, które pomogą utrzymać zespół w dobrej pracy, ale nie zgubić się w próbach udoskonalenia kodu.
źródło