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ć?