Refinement, to proces ciągłego udoskonalania elementów w Product Backlogu. Celem Refinement jest umożliwienie zespołowi lepszego zrozumienia elementów Backlogu i lepsze przygotowanie ich do realizacji.
Refinement może obejmować:
- Uzupełnianie elementów Backlogu o szczegóły i wymagania
- Uporządkowywanie elementów Backlogu według priorytetu
- Określanie sposobów mierzenia sukcesu elementów Backlogu
- Estymowanie skomplikowania elementów Backlogu
- Udzielanie wyjaśnień i odpowiedzi na pytania dotyczące elementów Backlogu
Refinement jest ważny, ponieważ pomaga zespołowi lepiej zrozumieć i przygotować się do realizacji elementów Backlogu, co pozwala uniknąć opóźnień i nieporozumień podczas pracy nad projektem. Refinement jest również ważny dla Product Ownera, ponieważ pomaga mu lepiej zarządzać oczekiwaniami dotyczącymi produktu i decydować, co powinno być realizowane w najbliższym czasie.
Przykładowy refinement może wyglądać następująco:
- Uczestnicy: Product Owner, Scrum Master, członkowie zespołu
- Miejsce: sala konferencyjna lub online
- Czas trwania: 1-2 godziny
- Product Owner przedstawia nowy element Backlogu, który chce uwzględnić w najbliższym sprincie.
- Scrum Master prowadzi dyskusję, w której zespół pyta Product Ownera o szczegóły dotyczące elementu i uzgadnia wymagania.
- Product Owner odpowiada na pytania i uzupełnia element o brakujące szczegóły.
- Zespół ocenia skomplikowanie elementu i określa, ile punktów zmiennych (story points) przypisać mu w ramach procesu estymacji.
- Product Owner i zespół omawiają sposoby mierzenia sukcesu elementu i uzgadniają kryteria akceptacji.
- Refinement kończy się, gdy element jest gotowy do rozpoczęcia pracy nad nim przez zespół.
Ważne jest, aby Refinement był ciągłym procesem, a nie jednorazowym wydarzeniem. Product Owner i zespół powinni regularnie uzupełniać i ulepszać elementy Backlogu, aby zapewnić, że są one dobrze przygotowane do realizacji.
Product Owner: Dziś chciałbym przedstawić nowy element Backlogu, który chcę uwzględnić w najbliższym sprincie. Chodzi o rozszerzenie funkcjonalności naszej aplikacji o możliwość tworzenia grup i zapraszania do nich innych użytkowników.
Developer: Ok, rozumiem. A jakie będą wymagania dla tej funkcjonalności?
Product Owner: Chcielibyśmy, aby użytkownik mógł tworzyć grupy o różnych typach (np. rodzina, praca, znajomi) i ustalać reguły dostępu do nich. Użytkownik powinien też mieć możliwość zapraszania innych użytkowników do swoich grup poprzez podanie ich adresu e-mail lub numeru telefonu.
Developer: Czy będziemy musieli integrować tę funkcjonalność z jakimś innym systemem, np. kontaktami w telefonie użytkownika?
Product Owner: Nie, nie będziemy integrować tej funkcjonalności z żadnym innym systemem. Użytkownik będzie mógł podawać adresy e-mail lub numery telefonów ręcznie.
Developer: A jakie będą kryteria akceptacji dla tego elementu?
Product Owner: Chcielibyśmy, aby użytkownik mógł tworzyć i zarządzać grupami oraz zapraszać innych użytkowników do swoich
grup za pomocą adresu e-mail lub numeru telefonu. Funkcjonalność powinna działać poprawnie na wszystkich obsługiwanych urządzeniach i przeglądarkach.
Developer: Ok, rozumiem. A jaki będzie poziom trudności tego elementu?
Product Owner: Myślę, że to będzie średnio skomplikowane zadanie. Potrzebować będziemy dodatkowej bazy danych do przechowywania informacji o grupach i użytkownikach oraz interfejsu użytkownika do tworzenia i zarządzania grupami.
Developer: Ok, rozumiem. Dziękuję za wyjaśnienie. Myślę, że damy radę to zrealizować w ciągu jednego sprintu.
Product Owner: Dziękuję za rozmowę. Tak, myślę, że jeden sprint powinien wystarczyć. Dziękuję za zaangażowanie w ten projekt.