Czym jest Definition of Done (DoD) w agile?
Definition of Done (w skrócie DoD) to szczególny rodzaj Working Agreement. Opisuje wspólne rozumienie przez zespół tego, co oznacza dla niego słowo „gotowe". Pojęcie Definition of Done spopularyzował framework Scrum.
Scrum Guide stwierdza:
„Definition of Done zapewnia przejrzystość, dając wszystkim wspólne rozumienie tego, jaka praca została ukończona w ramach Incrementu. Jeśli element Product Backlogu nie spełnia Definition of Done, nie może zostać wydany ani nawet zaprezentowany podczas Sprint Review. Zamiast tego wraca do Product Backlogu do rozważenia w przyszłości."
Wiele zespołów traktuje swoją Definition of Done jako rodzaj checklisty, aby upewnić się, że spełniły wszystkie niezbędne wymagania przed ogłoszeniem, że element jest gotowy. Oznacza to również, że DoD stanowi w istocie kontrolę jakości dla zespołu przez sam zespół.
Czym jest Definition of Done w SAFe i innych frameworkach skalowania?
Scaled Agile Framework, w skrócie SAFe, nie zawiera szczegółowego opisu Definition of Done – jedynie uznaje jej istnienie i promuje jej stosowanie. SAFe składa się z większej liczby zespołów Scrum/Agile, dlatego promuje również podstawowe zasady Scruma.
W przypadku każdego skalowanego podejścia do wytwarzania produktu, czyli gdy wiele zespołów pracuje razem nad tym samym produktem, zaleca się, aby zespoły te działały synchronicznie i dzieliły kluczowe elementy Definition of Done. Każdy zespół może dodawać do swojej Definition of Done kolejne elementy, ale żaden zespół nie powinien dostarczać elementów, których inne zespoły nie uznają za ukończone.
Dlaczego Definition of Done jest ważna i jakim celom służy?
Z chwilą rozpoczęcia pracy w zespole ważne jest stworzenie wspólnego rozumienia kilku kwestii. Każdy zespół powinien być zgodny co do wizji/misji zespołu. Każdy zespół powinien mieć wspólnie wypracowane Working Agreements. A jako element tych umów każdy zespół powinien być zgodny co do tego, co oznacza dla niego „gotowe".
Wspólne rozumienie słowa „gotowe" pozwala różnym osobom pracować nad różnymi elementami, a mimo to dostarczać spójną jakość i doświadczenie użytkownika. Upraszcza też wdrażanie nowych członków zespołu. Ponadto znacznie ułatwia współpracę między zespołami w środowisku skalowanym. I wreszcie zapewnia, że praca każdego zespołu i jego członków odpowiada wymaganiom organizacji.
Kiedy powstaje Definition of Done?
Zaleca się, aby zespoły tworzyły swoją Definition of Done jak najwcześniej, a najpóźniej przed pierwszym Sprint Planningiem. Bez wspólnego rozumienia tego, co oznacza „gotowe", praktycznie niemożliwe jest uzgodnienie, ile pracy zespół może wziąć na Sprint.
Jeśli zespół nie jest gotowy do stworzenia Definition of Done przed planowaniem pierwszego Sprinta, zorientuje się w trakcie Sprinta lub najpóźniej podczas Sprint Review, że jakość dostarczanych elementów nie jest spójna i najprawdopodobniej nie spełnia oczekiwań interesariuszy.
Kto tworzy Definition of Done w Scrumie?
W tworzeniu Definition of Done uczestniczy kilka stron. Ostatecznie to odpowiedzialność zespołu Scrum, aby wypracować to wspólne rozumienie. Powinni oni uwzględniać wkład różnych interesariuszy, aby spełniać ich oczekiwania.
Co zazwyczaj zawiera Definition of Done?
Typowa Definition of Done zawiera odpowiedzi na następujące pytania:
- Jak zapewniamy spełnienie wymagań biznesowych?
- Jak zapewniamy spójną jakość?
Przykładowa Definition of Done może wyglądać następująco:
- Wszystkie kryteria akceptacji są spełnione
- Wszystkie niezbędne testy zostały pomyślnie ukończone
- Praca została sprawdzona przez wiele osób
- Cała niezbędna dokumentacja została utworzona
- Product Owner przejrzał pracę i jest zadowolony
W zależności od obszaru pracy zespoły mogą mieć dłuższe (bardziej szczegółowe) lub krótsze (ogólne) Definition of Done. W większości przypadków Definition of Done ewoluuje w trakcie projektu i staje się coraz bardziej szczegółowa.
Jaka jest różnica między Definition of Done a Definition of Ready?
Definition of Done odnosi się do elementu w pełni wytworzanego, czyli ukończonego. Natomiast Definition of Ready opisuje wymagania wobec elementu, które muszą być spełnione, żeby zespół mógł rozpocząć nad nim pracę.
Definition of Done jest też wymieniona w frameworku Scrum, a Definition of Ready nie. To artefakt, który zespoły mogą dodawać. Jak zwykle, ma to swoje wady i zalety.
Czym jest Definition of Ready w Scrumie?
Definition of Ready opisuje wspólne rozumienie kroków, jakie zespół musi podjąć, aby wymaganie było dobrze zdefiniowane i mogło zostać przesunięte na kolejny Sprint.
Wiele zespołów stosuje akronim INVEST jako swoją Definition of Ready:
- I = Independent (Niezależny)... czy element jest niezależny lub czy w procesie priorytetyzacji uwzględniliśmy zależności?
- N = Negotiable (Negocjowalny)... czy rozmawialiśmy o tym elemencie?
- V = Valuable (Wartościowy)... czy mamy poczucie wartości, którą tworzymy dla użytkowników?
- E = Estimable (Szacowalny)... czy możemy oszacować nakład pracy potrzebny do dostarczenia tego elementu?
- S = Sized appropriately (Odpowiednio rozmiarowany)... czy mieści się w Sprincie lub czy widzimy możliwości jego zmniejszenia?
- T = Testable (Testowalny)... czy wiemy, czego się od nas oczekuje, tzn. czy udokumentowaliśmy kryteria akceptacji?
To tylko jeden z wielu sposobów tworzenia Definition of Ready. Najważniejsze jest, żeby żaden element nie był rozpoczęty bez wcześniejszej dyskusji zespołu.
Dlaczego Definition of Ready jest ważna?
Podobnie jak Definition of Done, Definition of Ready pomaga zespołowi lepiej współpracować. Dla Product Ownera ważne jest, żeby wiedzieć, czego oczekuje od niego zespół przy tworzeniu wymagania. Dla zespołu ważne jest, żeby wiedzieć, w której części procesu może wesprzeć Product Ownera w dostarczaniu lepszych wymagań.
Kiedy zmienić Definition of Done?
Zarówno Definition of Done, jak i Definition of Ready powinny być regularnie przeglądane i dostosowywane. Czy oznacza to, że dopracowujemy je w każdym Sprincie? Nie! Jednak z czasem zespoły zdają sobie sprawę, że powinny zaktualizować swoją Definition of Done.
Aby podać konkretny przykład z jednego z naszych własnych projektów: kilka lat temu zaczęliśmy budować portal z ofertami pracy. Początkowo był dostępny tylko na komputery. Zorientowaliśmy się, że 70% ruchu pochodzi z urządzeń mobilnych. Dlatego spędziliśmy cały Sprint na aktualizacji wszystkich istniejących stron i dostosowaniu ich do urządzeń mobilnych. To wymaganie trafiło następnie do naszej Definition of Done, dzięki czemu przy każdym kolejnym nowym serwisie od razu budowaliśmy go responsywnie.
Co mówi Scrum Guide 2020 o Definition of Done?
Na koniec polecamy lekturę Scrum Guide, a szczególnie nowego Scrum Guide 2020. Opisano w nim najważniejsze aspekty Definition of Done.
Definition of Done to formalny opis stanu Incrementu, gdy spełnia on miary jakości wymagane dla produktu. W chwili gdy element Product Backlogu spełnia Definition of Done, powstaje Increment.
Definition of Done zapewnia przejrzystość, dając wszystkim wspólne rozumienie tego, jaka praca została ukończona w ramach Incrementu. Jeśli element Product Backlogu nie spełnia Definition of Done, nie może zostać wydany ani zaprezentowany podczas Sprint Review. Zamiast tego wraca do Product Backlogu do rozważenia w przyszłości.
Jeśli Definition of Done dla Incrementu jest częścią standardów organizacji, wszystkie zespoły Scrum muszą przestrzegać jej jako minimum. Jeśli nie jest to standard organizacyjny, zespół Scrum musi stworzyć Definition of Done odpowiednią dla produktu.
Deweloperzy zobowiązani są do przestrzegania Definition of Done. Jeśli nad produktem pracuje wiele zespołów Scrum, muszą one wspólnie zdefiniować tę samą Definition of Done i jej przestrzegać.
Kurs online Scrum Master & Agile Coach
Rozwiń swoje umiejętności jako Scrum Master lub Agile Coach dzięki naszemu kursowi online.
Zanurz się w świecie Agile i Scrum i dowiedz się na podstawie praktycznych modeli i przykładów branżowych, jak lepiej pracować z zespołami zwinnymi.
Do kursu online