Scrum – przegląd metody
Poniżej nagranie z pierwszego e-seminarium Polskiej Grupy Scrum.
Pomożecie?
Polska Grupa Scrum – Polish Scrum Users Group – zaczęła się od konferencji Scrum Gathering w Sztokholmie w 2007 roku. Na konferencji tej Ken Schwaber rzucił hasło by organizować grupy praktyków i zainteresowanych Scrumem po to przede wszystkim, by ludzie mogli lokalnie (i w ojczystym języku) wymieniać się doświadczeniami.
Scrum jest bowiem bardzo prostą metodą – można go przedstawić w godzinę, a kursy certyfikacyjne trwające dwa dni umożliwiają omówienie go naprawdę dogłębnie – jednak jak to zwykle bywa z metodami prostymi prawdziwa trudność ukryta jest w ich stosowaniu. Wymaga ono dyscypliny w dążeniu do jak najlepszych efektów ale i elastyczności w dostosowaniu się do lokalnych warunków i możliwości. Dlatego wydaje się, że ludzie pracujący w Scrumie – i z użyciem innych metod agile takich jak XP czy popularny ostatnio Kanban – powinni mieć potrzebę wymiany doświadczeń z innymi. Wskazuje na to dynamiczny rozwój podobnych grup w innych krajach.
PSUG powstał w listopadzie 2007 roku nie tylko po to by propagować Scrum, ale także by stworzyć możliwość wymiany doświadczeń dla już przekonanych. Działamy już jakiś czas i nie narzekamy na brak uczestników na naszych spotkaniach, wciąż jednak brakuje nam chętnych by na tych spotkaniach mówić, by pisać artykuły na stronę www.scrum.org.pl, by organizować spotkania w swoim mieście czy w inny sposób włączyć się w działalność PSUG-u.
Dlatego spotkania nie odbywają się tak często, jak byśmy chcieli i wciąż nie udało się rozpocząć działalności w innych niż Kraków ośrodkach. Wydaje mi się, że czas to zmienić – ale nie dam rady zrobić tego sam, z okazjonalną pomocą kolegów z Krakowa.
Dlatego zwracam się z apelem: jeśli pracujesz w agile/Scrum, wdrażasz gdzieś Scruma albo inną metodę agile i jesteś entuzjast[k]ą tego podejścia, to możesz:
- opowiedzieć coś ciekawego o Scrumie, XP, Kanban czy innych metodach agile na spotkaniu,
- zorganizować i poprowadzić spotkania w swoim mieście,
- napisać ciekawy artykuł o Scrumie, XP, Kanban czy innych metodach agileowych,
- pomóc PSUG w inny sposób (np. masz rewelacyjny pomysł jak rozwinąć naszą działalność, na którą my nie wpadliśmy).
Napisz do nas i przyłącz się! Pokaż, że w naszym “polskim światku agile” są nie tylko bierni słuchacze! Właśnie planujemy nasze po-wakacyjne spotkania, to dobry czas żeby teraz się do nich przygotować.
Nie jesteśmy formalną organizacją, więc nie możemy obiecać honorariów, wierszówek i innych korzyści materialnych. Możemy za to zapewnić, że dzielenie się z innymi swoimi doświadczeniami daje wiele satysfakcji i samo w sobie jest rozwijającym doświadczeniem.
Czekamy na Wasze maile: info@scrum.org.pl .
Lista kontrolna Scrum
W zeszłym roku znany na świecie CST Hernik Kniberg opracował listę kontrolną Scrum. Dzięki niej zespoły mogą dokonywać własnej ewaluacji żeby zobaczyć na jakim etapie znajdują się w procesie implementacji tej metodyki.
Większość materiałów o Scrumie (i Agile w ogóle) jest dostępna w języku angielskim. Dla niektórych nie jest to przeszkodą, ale bywa że jest inaczej. Właśnie w związku z tym postanowiłem przetłumaczyć Scrum Checklist na polską “Listę Kontrolną Scrum”, która dostępna jest tutaj.
Poniższy tekst jest tłumaczeniem artykułu umieszczonego na stronie: http://www.crisp.se/scrum/checklist i pozwala zrozumieć czym ta lista jest i jak jej używać.
Co to jest?
“Lista Kontrolna Scrum” jest prostym narzędziem pozwalającym wystartować ze Scrumem lub sprawdzić na etap implementacji Scruma.
To nie są zasady. To są wytyczne. Zespół liczący 2 osoby może zdecydować się nie robić codziennego Scruma (Daily Scrum), ponieważ programują w parze przez cały dzień i nie potrzebują osobnego spotkania na synchronizację. To jest w porządku. Świadomie ominęli praktykę Scruma, ale zapewnili że cel przyświecający tej praktyce został osiągnięty w inny sposób. I to się liczy!
Jeżeli już stosujesz Scrum może warto żeby zespół przeszedł wspólnie przez tą listę na retrospekcji? Oczywiście, traktując ją jako narzędzie do dyskusji, nie do oceniania.
Jak korzystać z listy kontrolnej?
• Robert: “Przyniosłem użyteczną listę kontrolną na tą retrospekcję. Jest coś na tej liście czego nie robimy?”
• Monika: “Hmmm, zobaczmy. Wygląda na to że na pewno nie mamy ‘Kryterium ukończenia’ i nie mierzymy prędkości”
• Robert: “‘Kryterium ukończenia’ jest wymienione jako ‘Podstawa Scruma’ więc wydaje się być całkiem ważne! Prędkość jest pod ‘Rekomendowane ale nie zawsze potrzebne’, więc poczekajmy z tym i zacznijmy z rzeczami podstawowymi”
• Monika: “Popatrz, nie spełniamy także ‘Dostarczanie działającego, przetestowanego oprogramowania co 4 tygodnie lub szybciej’. To jest wymienione jako ‘Kwintesencja’. Brzmi sensownie, bo marketing zawsze na to narzeka!”
• Robert: “Może koncepcja ‘Kryterium ukończenia’ może nam pomóc w braniu mniejszych porcji do sprintu i umożliwi częstsze robienie wydań?”
• Monika: “Dobry pomysł, spróbujmy!”
Jak NIE używać listy kontrolnej?
• Wielki szef: “Ok zespole, zobaczmy jak zgodny ze standardem jest Wasz Scrum. Wypełnijcie proszę listę kontrolną”
• Robert: “Szefie, cieszę się że mogę Ci powiedzieć że robimy wszystko. W zasadzie wszystko poza Burndown chart””
• Wielki szef: “Niedobry, niedobry zespół! Z listy wynika że powinniście robić te…burny…czy coś! Ja je chcę!”
• Monika: “Ale my robimy 2-tygodniowe sprinty i prawie zawsze dostarczamy to, do czego się zobowiązaliśmy, a klienci są zadowoleni. Na tym etapie Sprint burndown chart nie wniesie żadnej wartości.”
• Wielki szef: “Z listy wynika że powinniście to robić, więc nie pozwólcie żebym znowu Was przyłapał na oszukiwaniu, albo wezwę Policję ds Scruma!”
Czy to oficjalna lista kontrolna?
Nie. Lista została zrobiona przez Henrik Kniberga i wyraża jego osobiste i subiektywne opinie na temat tego co tak naprawdę jest ważne w Scrumie. Poświęcił kilka lat pomagając firmom zacząć pracę ze Scrumem, spotkał setki innych praktyków, trenerów i coachów; i przekonał się że stosowanie list kontrolnych jest pomocne, jeżeli odpowiednio się z nich korzysta.
Co ze starą wersją?
Stara lista kontrolna (w postaci mindmapy) jest ciągle dostępna. Jednak jest już w obiegu dosyć długo, a nowa jest wg Henrika dużo lepsza.
Gdzie mogę podzielić się swoją opinią?
Jeżeli chciałbyś podzielić się opinią na temat listy kontrolnej lub zaproponować jej usprawnienie napisz emaila na henrik.kniberg(AT)crisp.se (po angielsku). Jeżeli masz uwagi do polskiego tłumaczenia napisz na b.kobylecki(AT)gmail.com lub po prostu napisz komentarz poniżej.
Darmowy test wiedzy Scrumowej
Wprowadzony przez Scrum Alliance egzamin – który nota bene jest wciąż w fazie testowej, a więc jego wynik nie jest nadal brany pod uwagę przy wydawaniu certyfikatu CSM – nie jest dostępny dla osób, które nie brały udziału w szkoleniu CSM po wrześniu 2009. W związku z tym nie ma możliwości oceny swojej wiedzy o Scrumie czy szans na zdanie tego egzaminu kiedy wreszcie stanie się on naprawdę podstawą wydawania i przedłużania certyfikatów.
Dlatego interesującą opcją jest darmowy test wiedzy o Scrumie, który na swojej stronie scrum.org udostępnia Ken Schwaber. Test składa się z 80 pytań, w większości jednokrotnego wyboru, na które należy odpowiedzieć w ciągu 80 minut. Jego cenną cechą jest to iż od razu jesteśmy informowani, z uzasadnienem, jeśli wybierzemy błędną odpowiedź – można zatem nie tylko sprawdzić, ale i poprawić swoją wiedzę.
Osoby, które zdadzą test z wynikiem co najmniej 75% dobrych odpowiedzi są wymieniane na specjalnej liście, która jest dostępna w formacie PDF na tej samej stronie.
Ken choć nie kieruje już Scrum Alliance nadal pracuje nad rozwojem Scruma i jego nauczania, w ramach czego przygotował nową generację szkoleń Certified Scrum Master II. Jak się wydaje testy, które przygotowuje mają służyć sprawdzaniu wiedzy uczestników tych szkoleń.
Aby rozpocząć test należy udać się na jego stronę i wcisnąć duży, zielony guzik. Do rozpoczęcia testu niezbędne jest hasło – “assessment2″ – podane zresztą na tej samej stronie.
Powodzenia!
Scrum a kultura bylejakości
Ostatnio miałem okazję obserwować jak w pewnym zespole (a właściwie dwóch) Scrum nie daje oczekiwanych rezultatów. Pomimo szkoleń, zatrudnienia Certyfikowanych Scrum Masterów nadal problemem jest niska jakość tworzonego oprogramowania, chaotyczność pracy, nieprzewidywalność rezultatów.
Jak się wydaje wynika to z jednego podstawowego problemu, który trudno określić inaczej niż “kultura bylejakości”. Jest to połączenie niemożności osiągnięcia zakładanego poziomu jakości tworzonego systemu z akceptacją tego stanu rzeczy przez otoczenie obu zespołów. Ta akceptacja jest pełna rezygnacji, by nie powiedzieć fatalizmu, zwłaszcza ze strony kluczowych odbiorców systemu (oba zespoły budują systemy wewnętrzne) – ale jest. Efektem jest funkcjonowanie całkiem poważnie nastawienia, które najlepiej oddał jeden ze Scrum Masterów mówiąc do zespołu “wydajmy to na produkcję – juzerzy nam to przetestują”. Najbardziej niebywałe jest tu to, że nikt nie zaprostestował.
Przy takim podejściu katastrofa (w postaci spektakularnego padu krytycznego dla firmy systemu) tylko czeka aby się wydarzyć, a praca obu zespołów jest pasmem “marszów śmierci”, następujących po nich okresów letargu i stałego gaszenia pożarów.
Nie wchodząc zbytnio w szczegóły warto pochylić się nad tymi przypadkami, bo mają one – niestety – nie tylko szanse stać się przykładem, że Agile ogólnie a Scrum szczególnie “nie działa”, ale wydają się być dość typowe.
Jak mi się wydaje najistotniejszym wnioskiem jaki z nich wypływa jest taki, abyśmy zawsze pamiętali to, co wbijane jest do głów na każdym (porządnym) szkoleniu scrumowym – Scrum nie rozwiązuje sam ze siebie żadnych problemów, Scrum jedynie czyni je widocznymi. Scrum to nie panaceum, nie uczyni cudów.
Nie da się zatem przy pomocy Scruma i Agile przerobić grupy studentów bez solidnych podstaw informatycznych na sprawny zespół programistów. Zanim zacznie się stosować praktyki XP i pracować w krótkich sprintach w Scrumie trzeba na początek umieć dobrze obiektowo modelować i programować, trzeba umieć pisać czytelny kod (np. mieć nawyk stosowania sensownych nazw obiektów, metod i zmiennych czy pisania sensownych komentarzy), mieć pojęcie o wzorcach projektowych, umieć je stosować i tak dalej. Trzeba wreszcie posiadać wiedzę o stosowanej technologii, a więc o języku w którym się pisze i jego właściwościach, właściwościach stosowanych kompilatorów czy interpreterów i innych związanych z danym językiem narzędzi.
Trzeba też umieć korzystać z frameworków i bibliotek – a więc przede wszystkim mieć świadomość ich istnienia, a także wad i zalet by móc odpowiednio dobrać je do swojego projektu. Trzeba wreszcie umieć właściwie wykorzystać środowisko pracy, takie jak systemy kontroli wersji, błędów, automatycznych buildów itp. No i oczywiście cały szeroki świat testów – nie dość, że trzeba mieć nawyk ich pisania oraz wykonywania – trzeba także mieć umiejętności i narzędzia. To właśnie braki tej podstawowej wiedzy i związanych z nią praktyk decydują o wspomnianej wyżej niemożności jaka trapi oba zespoły.
Oczywiście, wszystkiego można się nauczyć – ale trzeba mieć od kogo. Jeśli w zespole wszyscy są mniej-więcej równie początkujący jego rozwój jest znacznie utrudniony jeśli nie niemożliwy. Zdecydowanie lepiej jest, jeśli w zespole przynajmniej część stanowią doświadczeni programiści i testerzy, którzy mogą pomóc “świeżym” kolegom w rozwoju. W przeciwnym razie praktyki takie jak przeglądy kodu czy programowanie w parach niewiele dają – przeciwnie, petryfikują wręcz niski poziom i jako “bezsensowne” są szybko zarzucane.
Równie toksyczna i prowadząca do utrwalania się dysfunkcji zespołu – który miast miejscem rozwoju staje się miejscem walki z problemami dawno już rozwiązanymi gdzie indziej – jest akceptacja marnych wyników przez odbiorców i kierownictwo.
I tu dotykamy innego problemu – otóż niezwykle często myli się u nas samoorganizację i inne cechy Scruma z brakiem zarządzania. Tymczasem samoorganizacja dokonuje się wokół celów, które to cele ktoś z zewnątrz musi postawić i wymagać ich osiągania. Jakość jest jednym z takich celów – jakość nie jest jakimś regulowalnym parametrem (niczym na linii produkcyjnej), przeciwnie – pewien ustalony poziom jakości tego co jest budowane (będący potem podstawą kryterium ukończenia) jest jednym z celów służących samoorganizacji zespołu.
Ale samoorganizacja wymaga nie tylko celów – wymaga również presji. Samoorganizacja nie nastąpi jeśli zobowiązanie zespołu do wykonania tego co wziął “do sprintu” nie jest traktowane poważnie. A poważne traktowanie oznacza nie tylko świętowanie osiągnięcia celu sprintu podczas przeglądu (sprint review) – oznacza także poważne traktowanie porażek. Wymaga to od zarządzających takimi zespołami subtelności, stanowczości ale przede wszystkim konsekwencji – zespół musi dobrze rozumieć, że zawiódł; musi zdawać sobie sprawę z tego, że nie jest dobrze (no bo jeśli jest dobrze – to po co coś poprawiać?).
I tu dochodzimy do najistotniejszego – dobra firma czy dział tworzący oprogramowanie to taki, gdzie sprawy takie są dla wszystkich oczywiste. A więc jest dla każdego jasne, że fuszerka to fuszerka i trzeba się jej wstydzić (niezależnie od tego czy na wierzchu działa czy nie), że system krytyczny dla firmy ma działać zawsze a wszelkie zaburzenia tego stanu rzeczy są porażką dla zespołów i plamą na ich profesjonaliźmie. To jest właśnie kultura jakości, w której metody agile kwitną i pomagają. Bez niej – w kulturze bylejakości, a więc akceptacji marności rezultatów i mierności wysiłków – Scrum, Agile – czy w ogóle inne metodyki działające na innym poziomie abstrakcji nie przyniosą oczekiwanych efektów.
Dlatego zanim będziemy próbować wdrażać gdzieś Scruma upewnijmy się, że środowisko w ogóle się do tego nadaje – że sypiemy ziarno na żyzną glebę kultury jakości, a nie na uklepany nawykiem ugór bylejakości. I jeśli to konieczne lepiej zacząć pracę od postaw, od budowania kultury jakości, nawet jeśliby to była przysłowiowa “orka na ugorze”.
Andrzej K. Brandt
Code Sprinters
Kryterium Gotowości
Widoczną tendencją w społeczności praktyków i trenerów Scruma jest rosnące docenienie roli Product Ownera. Efektem tego są propozycje praktyk i rozwiązań, które mają usprawnić pracę Product Ownerów. Jedną z nich przedstawiam poniżej.
Po dobrym wdrożeniu Scruma (i innych praktyk agile) w zespołach często występuje efekt „odkurzacza” na backlogu. Polega on na tym, że wraz ze wzrostem efektywności zespołu „czyści” on backlog z zadań powodując, że Product Owner nie nadąża z dobrym definiowaniem odpowiedniej liczby nowych zadań. Kończy się to najczęściej tworzeniem przez Product Ownera zadań naprędce podczas spotkania Planowania Sprintu po to tylko, by zespół miał co robić – by jakoś wypełnić sprint. Oczywiście, takie wymyślone na poczekaniu zadania mają małe szanse być naprawdę wartościowe.
Aby temu zapobiec praktycy Scruma tacy jak Jeff Sutherland czy Serge Beaumont proponują usprawnienie zarządzania backlogiem przez wprowadzenie do Scruma nowej, dodatkowej definicji jakościowej.

Jak wiadomo w każdym projekcie prowadzonym w Scrumie ustala się kryterium ukończenia (ang. definition of done). Określa ono kiedy realizowane zadanie można uznać za wykonane. Jeśli zadanie kryterium tego na końcu sprintu nie spełnia, to niezależnie od tego jak zaawansowane były prace na nim spada ono z powrotem na backlog – nie jest dostarczone.
Najczęściej kryterium ukończenia wyrażone jest mniej więcej tak: „Historyjka użytkownika zaimplementowana, pokryta testami jednostkowymi, zatwierdzona w teście akceptacyjnym, skonsolidowana z resztą projektu, nadająca się do wydania na serwer produkcyjny.”

Innowacja polega na wprowadzeniu analogicznego kryterium na początku sprintu – kryterium gotowości (ang. definition of ready), które określa jakie cechy ma posiadać zadanie aby mogło być wzięte przez zespół „do sprintu” podczas Planowania Sprintu. Zadania nie spełniające tego kryterium nie są brane pod uwagę – nie będą przy planowaniu sprintu rozpatrywane.
Kryterium takie może wyglądać na przykład tak: „Zadanie w pełni zrozumiałe dla zespołu, oszacowane przez zespół, z przygotowanym wstępnym projektem sposobu realizacji, bez otwartych pytań do product ownera”.
Rolę obu kryteriów można porównać do swego rodzaju filtrów. Kryterium ukończenia „odsiewa” nieukończone zadania – określa się je po to, by ustalić pożądaną jakość produktu końcowego. Kryterium gotowości „odsiewa” zadania źle lub niejasno zdefiniowane – określa się je po to, by zespół pracował nad wartościowymi i zrozumiałymi dla niego zadaniami.
Konsekwencją wprowadzenia kryterium gotowości jest pojawienie się różnych stanów (statusów) zadań na backlogu projektu. W najprostszym przypadku będą to przynajmniej dwa stany: zadania „nowe” i „gotowe”. Zadania świeżo wprowadzone na backlog są „nowe”, zadania spełniające kryterium gotowości – „gotowe”. Product Owner stara się doprowadzić zadania do stanu „gotowe”, a więc do tego by spełniały one kryterium gotowości.
Zakłada się, że Product Ownerowi pomaga w tym także i zespół. Dobrą okazją do tego jest oszacowywanie zadań. Niewątpliwie zadania oszacowywać powinien zespół, zarazem, powinno się to odbywać nie tylko podczas spotkań Sprint Planning. W praktyce Scruma zaleca się, aby zespół (wraz z Product Ownerem) poświęcał przynajmniej 5% czasu w sprincie na tak zwaną pielęgnację baclogu. Czas ten można spożytować na dyskusję z Product Ownerem nad najważniejszymi jego zdaniem zadaniami „nowymi” tak, by stały się one dla zespołu na tyle jasne i zrozumiałe, by mógł dokonać ich dobrego oszacowania i uznać je za „gotowe”.
W najprostszym wydaniu proces przechodzenia od zadań „nowych” do „gotowych” wygląda zatem następująco:
- Product Owner umieszcza nowe zadanie na backlogu (w części dla zadań „nowych”).
- Product Owner sortuje zadania “nowe“.
- Zespół oszacowuje pewną liczbę zadań nowych (znajdujących się na szczycie backlogu w części dla zadań „nowych”).
- Jeśli są pytania, wątpliwości – następuje dyskusja z Product Ownerem. Czasem potrzebuje on zwrócić się do interesariuszy by wyjaśnić pewne kwestie, czasem zadanie trzeba rozbić na mniejsze lub zmienić na bardziej zrozumiałe, precyzyjniej określone.
- Zespół oszacowuje zadanie, jest ono oznaczanie jako „gotowe” i przenoszone do właściwego backlogu.
Oczywiście, można sobie wyobrazić więcej kroków prowadzących od „nowe” do „gotowe” zależnie od potrzeb danej organizacji czy projektu. Przykładowo, może istnieć publiczny backlog (tzw. lodówka – ang. „cooler”), gdzie każdy w organizacji może zgłaszać pomysły. Z „lodówki” Product Owner wybiera zadania i przenosi do backlogu dla zadań „nowych”, skąd po wyjaśnieniu i oszacowaniu trafiają na backlog „gotowe”.
W każdym przypadku zaleca się, aby status „gotowe” miało przynajmniej tyle zadań, by przy średniej prędkości (ang. velocity) zespołu wystarczyło ich na około 2 sprinty pracy. Dzięki temu nawet kiedy wystąpi jakieś spowolnienie w „dostawach” nowych zadań zespół będzie w stanie przepracować kolejny sprint robiąc coś sensownego i wartościowego.
Warto zauważyć, że o ile kryterium ukończenia w dużym stopniu wynika z konkretnych uwarunkowań projektu (np. inne będzie dla zespołu pracującego nad aplikacją desktopową, inne dla pracującego nad aplikacjami webowymi) i powinno być określane przy dużym udziale Product Ownera (jeśli nie wprost przez niego), tak kryterium gotowości bardziej zależy od wymagań konkretnego zespołu i powinno być przez ów zespół określane. Ponadto, o ile kryterium ukończenia może się zmieniać w czasie (np. z chwilą przejścia od fazy budowy wewnętrznego prototypu do fazy, w której wyniki pracy trafiają na serwer produkcyjny), o tyle kryterium gotowości jest stabilne.
Ze swojej praktyki mogę dodać, że istotnie często zdarza się, że bałagan wprowadzany przez Product Ownera utrudnia osiągnięcie płynnego przepływu zadań przez zespół, a przez to osiągnięcie przezeń pełnej możliwej wydajności. Zgodnie z założeniami Scruma w każdej chwili można drastycznie zmienić kierunek prac, jednak kiedy zespół jest w kolejnym sprincie zaskakiwany zadaniami, których się nie spodziewał powoduje to spowolnienie jego pracy. Innymi słowy, zmiany kierunku – choć możliwe – kosztują. Dlatego w praktyce jest lepiej jeśli już w czasie bieżącego sprintu zespół wie jakie mniej-więcej zadania czekają go w następnym. Dużo lepsze efekty osiągnie się zatem, jeśli w czasie bieżącego sprintu zespół przeznaczy 5% czasu na wspólne z Product Ownerem oszacowanie i przygotowanie zadań na następne 1-2 sprinty.
Podsumowując, wprowadzenie kryterium gotowości ma na celu poprawę współpracy pomiędzy Product Ownerem (a więc za jego pośrednictwem także i innymi interesariuszami) a zespołem doprowadzając do utworzenia płynnego przepływu zadań (ang. flow) do zespołu. Ponieważ przy takiej organizacji pracy zespół z góry wie jakie zadania czekają go w następnym sprincie praca ma szansę przebiegać płynnie, a co za tym idzie jeszcze bardziej wydajnie. Dlatego właśnie warto poważnie rozważyć wprowadzenie tej praktyki.
Andrzej K. Brandt
Code Sprinters

