Blog
Skąd wiadomo, że praca jest ukończona?

Skąd wiadomo, że praca jest ukończona?

Definicja “Ukończenia”

Kiedy rozpoczniecie pracę w Scrumie, szybko zorientujecie się, że konieczne jest wypracowanie umowy pomiędzy Zespołem, a Właścicielem Produktu, która pozwoli na zrozumienie, kiedy dana historyjka, zadanie faktycznie zostaje uznane za zrobione.

Scrum nazywa to Definicją “Ukończenia” (ang. Definition of Done, DoD).

Definicja Ukończenia bywa traktowana obsesyjnie, jak dogmat religijny. Jest ona również jednym z ważniejszych elementów związanych z Planowaniem Sprintu.

Skąd wziąć Definicję Ukończenia?

Definicja Ukończenia to zbiór norm i standardów technicznych i technologicznych, które powinny być spełnione dla każdego realizowanego elementu. Obowiązkowo zawarte w niej muszą być wszystkie istniejące standardy i normy naszej organizacji IT. Zwykle, każda większa firma IT taki zespół norm posiada. Gdy organizacja nie posiada takiego zbioru zasad, zespół musi go utworzyć we własnym zakresie. Zwykle jest to lista czynności sprawdzających i technicznych, z których część może być wykonana przy pomocy narzędzi automatycznych.

Czym jest Definicja Ukończenia?

Definicja Ukończenia określa kiedy element Rejestru Produktu lub Przyrost uznajemy za “Ukończony”. Definicja ta musi być zrozumiała dla wszystkich uczestników procesu. Różne zespoły definiują ten stan w różny sposób. Dlatego kluczowe jest, aby każdy członek Zespołu rozumiał, co oznacza stwierdzenie że praca została ukończona. 

Definicja Ukończenia spisana jest zwykle w postaci listy kontrolnej. Dzięki niej, realizując kolejne jej etapy weryfikujemy, czy realizowany element Rejestru Sprintu jest już gotowy.

To właśnie zrozumiała i jasna Definicja Ukończenia pozwala Zespołowi zadecydować ile i które elementy Rejestru Produktu można wybrać do realizacji w bieżącym Sprincie podczas jego Planowania. Celem Sprintu jest bowiem dostarczenie Przyrostu – gotowych do wydania funkcjonalności zgodnych z aktualną Definicją Ukończenia.

Definicja Przyrostu nie pozwala więc na to, aby Definicja Ukończenia była jedynie opcjonalna.

Każdy Przyrost jest rozszerzeniem wszystkich poprzednich Przyrostów. Jest on dokładnie przetestowany w celu zapewnienia iż wszystkie one działają razem jako całość.

Definicja “Ukończenia” zapewnia transparentność stanu każdego elementu Rejestru Sprintu. Transparentność jest jednym z filarów Scruma, ponieważ kiedy rozumiemy jaki jest stan obecny, to możemy podejmować odpowiednie decyzje — stosować empiryzm. Pozwala ona określić, jaką jeszcze pracę trzeba wykonać, aby Przyrost mógł zostać wydany na środowisko produkcyjne.

Rozwój Definicji Ukończenia

W miarę nabywania doświadczenia przez Zespoły Scrumowe, oczekuje się iż definicja “Ukończenia” zawierać będzie coraz bardziej rygorystyczne kryteria, coraz wyższej jakości. Nowe wersje tej definicji mogą ujawniać pracę niezbędną do wykonania na poprzednio “Ukończonych” Przyrostach.

Co może zawierać Definicja Ukończenia?

Potencjalna lista składowych definicji ukończenia:

  • przeprowadzone testy jednostkowe,
  • zaliczony przegląd kodu,
  • zgodność z wytycznymi stylu kodu,
  • brak znanych defektów,
  • wprowadzenie do głównego odgałęzienia deweloperskiego,
  • udokumentowane publicznie API,
  • zaliczone testy akceptacyjne,
  • zaliczone testy regresji,
  • zaktualizowane informacje o wydaniu,
  • zaliczone testy wydajnościowe,
  • zaktualizowana instrukcja użytkownika,
  • zaktualizowana instrukcja pomocy technicznej,
  • zaliczone testy zabezpieczeń,
  • zaktualizowany dokument zgodności.

Automatyczne testowanie i integracja

Automatyzacja testów bywa kosztowna, ale ze wzgl. na ciągłe kompilowanie i testowanie oprogramowania, warto ponieść te koszty – zwrócą się szybko dzięki ograniczenia testów manualnych i zwiększeniu niezawodności. Wczesne zdiagnozowanie problemu znacznie redukuje koszt testowania dzięki zmniejszeniu czasu potrzebnego na znajdowaniu i usuwaniu problemów później. Automatyzacja testów i włączenie ich jako części procesu ciągłej integracji jest ważne, by tworzony kod był czysty i łatwy do zrozumienia. Jest to szczególnie istotne, gdy nad produktem pracuje więcej zespołów.

Jak sobie poradzić z tworzeniem Definicji Ukończenia?

Mitch Lacey w swojej książce “Scrum. Praktyczny przewodnik dla początkujących” w Rozdziale 7 szczegółowo opisuje warsztat tworzenia DoD. Ćwiczenie zawiera następujące etapy:

  • burza mózgów,
  • sesja kategoryzacji,
  • analiza sesji,
  • tworzenie definicji ukończenia i jej opublikowanie.

Stworzenie i opublikowanie Definicji Ukończenia oznacza osiągnięcie trzech celów:

  • pomaga w nawiązaniu więzi między członkami zespołu,
  • do zainteresowanych stron wysłany jest komunikat, że zespół przyjmuje odpowiedzialność za jakość wytwarzanego produktu,
  • zespół trzyma się wskazanej ścieżki działań i utrzymuje wysoki stopień koncentracji.

Podsumowanie

Warto zwrócić uwagę na jedną istotną sprawę. W wielu przypadkach firmy nie potrafią dostarczyć przyrostu gotowego do wydania na koniec każdego Sprintu. Pomimo to skupiają się na dostarczaniu coraz to większej liczby elementów Rejestru Produktu. Nie tędy droga.

Konieczne jest skupienie się na dostarczeniu działającego przyrostu produktu na koniec każdego sprintu. Niech zawiera on mniej elementów, ale w pełni działających, przetestowanych i zintegrowanych.

Literatura:

Bittner K., Kong P., West D., “Nexus czyli skalowalny Scrum”, APN Promise, 2018

Chrapko M., “Scrum. O zwinnym zarządzaniu projektami”, Helion, 2015

Kaczor K., “Scrum i nie tylko. Teoria i praktyka w metodach Agile”, PWN, 2016

Lacey M., “Scrum. Praktyczny przewodnik dla początkujących”, Helion, 2014

McGreal D., Jocham R., “Profesjonalny właściciel produktu. Jak Scrum zwiększa przewagę konkurencyjną”, APN Promise, 2019

Wykowski T., “Biznes Odczarowany. Scrum: jak osiągać cele, gdy wszystko się zmienia?”, ProCognita, 2019

Dodaj komentarz