Ocena zakresu przebudowy procesu CI/CD
Jak oszacować nakład pracy związany z przebudową procesu CI/CD: w przypadku prac nad potokiem nie ma wersji demonstracyjnej, więc należy podzielić zadania na części, które można usunąć. Zadanie trwające cały kwartał, które figuruje w rejestrze zadań jako refaktoryzacja.
W przypadku prac nad potokiem nie ma wersji demonstracyjnej. Proszę zawęzić zakres do „które kompilacje można dzisiaj usunąć”, aby umożliwić oszacowanie nakładu pracy.
Przebudowy procesów CI/CD to najtrudniejsze do zdefiniowania zadania w rejestrze zadań. Nie wiążą się one z żadnym rezultatem widocznym dla użytkownika, nie ma prezentacji ani zrzutu ekranu, który można by umieścić w informacjach o wydaniu. Praca ma charakter strukturalny: zastąpienie jednego potoku innym, migracja systemu kompilacji, konsolidacja trzech narzędzi do uruchamiania testów w jedno oraz przejście z ręcznie napisanego skryptu powłoki na prawidłowy plik przepływu pracy. Zespół zdaje sobie sprawę, że prace te muszą zostać wykonane. Zespół wie również, że zajmie to jeden kwartał, a ten kwartał będzie niewidoczny dla osób spoza działu inżynierii.
Sposób, w jaki szacunki zawiodą, jest przewidywalny. Zespół przyznaje ocenę 13, ponieważ „to refaktoryzacja, a więc duże przedsięwzięcie”. Po trzech sprintach stary potok nadal działa równolegle z nowym, dwa systemy są częściowo skonfigurowane, a każdy inżynier ma inny model mentalny dotyczący tego, z którego z nich należy korzystać. Zadanie nie zostało ukończone, ponieważ brakuje definicji ukończenia — potoki nie są „wypuszczane”; są one wdrażane, a ich wdrożenie to kwestia odrębna od samego faktu, że „nowe rozwiązanie istnieje”.
O czym się mówi w tym pomieszczeniu
SRE: „Musimy zakończyć dotychczasowy cykl. Dwa sprinty.”
Wstęp: „Jaka jest definicja »zakończonego«?”
SRE: „…ten nowy działa.”
Wstęp: „Ten nowy model sprawdza się już w połowie naszych zadań”.
Backend: „Ale stara wersja nadal działa dla drugiej połowy.”
Wstęp: „Zgadza się. A więc skończymy, gdy będziemy mogli usunąć stary plik”.
O to właśnie chodzi. Zadaniem nie jest „zbudowanie nowego potoku” — zespół prawdopodobnie stworzył go już kilka miesięcy temu w ramach eksperymentu przeprowadzonego w wolnym czasie. Istotą zadania jest „usunięcie starego potoku”. Dopóki stary system kompilacji nie zostanie usunięty, przebudowa nie jest zakończona; jest to równoległa infrastruktura, która generuje wszystkie koszty, nie przynosząc żadnych korzyści. Określenie tego zadania jako usunięcie, a nie utworzenie, daje zespołowi definicję zakończenia, nad którą może przeprowadzić głosowanie.
Jak to pokroić
Proszę sporządzić wykaz zadań nadal uruchomionych w starym systemie. W odniesieniu do każdego zadania: co należałoby zrobić, aby usunąć jego starą wersję? To stanowi osobny element pracy. Niektóre przypadki są trywialne (zadanie zostało już skopiowane do nowego potoku; wystarczy usunąć stary plik YAML). Inne wymagają prawdziwej pracy (zestaw testów zawiera na stałe zakodowaną ścieżkę; etap wdrażania zależy od starej zmiennej środowiskowej). Każde usunięcie stanowi niewielki element, który zespół może wdrożyć i zaprezentować. „Usunęliśmy plik Jenkinsfile dla usługi uwierzytelniania” to wynik, który można zaprezentować.
Każde usunięcie można oszacować w zwykły sposób: najpierw należy zidentyfikować niewiadome (czy to zadanie ma odbiorców, o których nie wiemy?), a następnie oszacować usunięcie w oparciu o referencyjne usunięcie, które zostało już wdrożone. Większość fragmentów mieści się w przedziale 2 lub 3 punktów. Zadanie oznaczone jako „13, refaktoryzacja, duże” w rzeczywistości składało się z piętnastu elementów o wartości 2 oraz jednego o wartości 3, ukrytego pod płaszczem.
Pytania, które warto zadać przed oddaniem głosu
- Co zostanie usunięte po zakończeniu tej historii?
- Jakie zawody nadal opierają się na starym systemie?
- Czy istnieje jakiś odbiorca danych ze starego potoku, o którym nie wiemy — zewnętrzny zespół, zaplanowane zadanie?
- Jakie są możliwości przywrócenia poprzedniego stanu, jeśli nowy potok zacznie działać gorzej po usunięciu starego?
- Kto jest autorytetem w kwestii twierdzenia, że „nowy kanał informacyjny jest źródłem prawdy”?
- Czy ktoś na bieżąco śledzi, które zadania są wykonywane w starym, a które w nowym systemie?
Jeśli odpowiedź na pytanie „co zostanie usunięte” brzmi „w tym sprincie nic”, oznacza to, że zespół nadal znajduje się w fazie infrastruktury równoległej, a zadanie nie spełnia kryteriów gotowości.
Prace związane z potokiem danych przeprowadza się po usunięciu starej wersji. Należy usuwać elementy pojedynczo, szacując nakład pracy dla każdego usunięcia z osobna.
Zobacz podział poziomy a pionowy, aby dowiedzieć się, dlaczego „budowa nowego systemu” jest niewłaściwą osią podziału, a także inne przykłady udanych szacunków. Rozpocznij bezpłatną sesję planowania pokerowego, gdy zespół będzie już dysponował listą elementów do usunięcia.