1. Co to jest SCRUM i zwinny rozwój?
SCRUM jest strukturą, która pomaga ludziom, zespołom i organizacjom w tworzeniu wartości poprzez adaptacyjne rozwiązania złożonych problemów. Zamiast dostarczać ludziom szczegółowych instrukcji, zasady SCRUM kierują ich relacjami i interakcjami. SCRUM opiera się na empiryzmie i szczupłym myśleniu. Empiryzm głosi, że wiedza pochodzi z doświadczenia i podejmowania decyzji na podstawie tego, co zostało zaobserwowane. Szczupłe myślenie redukuje marnotrawstwo i skupia się na tym, co istotne.
SCRUM stosuje podejście iteracyjne, inkrementalne, aby zoptymalizować przewidywalność i kontrolować ryzyko, angażuje grupy ludzi, którzy wspólnie posiadają wszystkie umiejętności i wiedzę specjalistyczną do wykonania pracy oraz dzielą się nimi lub nabywają je w miarę potrzeb. SCRUM opiera się na następujących wartościach:
Zaangażowanie, skupienie, otwartość, szacunek i odwaga
Filarami SCRUM są
- Przejrzystość: proces i praca muszą być widoczne zarówno dla osób wykonujących pracę, jak i dla osób ją odbierających. Przejrzystość umożliwia inspekcję. Inspekcja bez przejrzystości jest myląca i nieekonomiczna.
- Inspekcja: artefakty i postęp w osiąganiu uzgodnionych celów muszą być często i starannie kontrolowane, aby wykryć potencjalnie niepożądane odchylenia lub problemy.
- Adaptacja: Jeśli jakieś aspekty procesu odbiegają od akceptowalnych granic lub jeśli produkt końcowy jest nie do przyjęcia, należy dostosować stosowany proces lub produkowane materiały. Korektę należy przeprowadzić jak najszybciej, aby zminimalizować dalsze odchylenia.
Praktyki zwinne obejmują odkrywanie wymagań i doskonalenie rozwiązań poprzez współpracę samoorganizujących się i wielofunkcyjnych zespołów z ich klientami/użytkownikami końcowymi, planowanie adaptacyjne, ewolucyjny rozwój, wczesne dostarczanie, ciągłe doskonalenie oraz elastyczne reagowanie na zmiany wymagań, możliwości i rozumienie problemów do rozwiązania.
Wartości manifestu zwinności to:
- Osoby i interakcje ponad procesami i narzędziami. Narzędzia i procesy są ważne, ale ważniejsze jest, aby kompetentni ludzie efektywnie ze sobą współpracowali.
- Działające rozwiązania ponad obszerną dokumentacją. Dobra dokumentacja jest przydatna, ponieważ pomaga ludziom zrozumieć, jak zbudowane jest rozwiązanie i jak z niego korzystać, ale głównym celem rozwoju jest tworzenie rozwiązań, a nie dokumentacji.
- Współpraca z klientem a nie negocjowanie kontraktów. Kontrakt jest ważny, ale nie zastąpi ścisłej współpracy z klientem w celu poznania jego potrzeb.
- Reagowanie na zmiany zamiast podążania za planem. Plan projektu jest ważny, ale nie może być zbyt sztywny, aby nie dało się go dostosować do zmian w technologii lub środowisku, priorytetów interesariuszy oraz rozumienia problemu i jego rozwiązania przez ludzi.
Większość zwinnych metod rozwoju dzieli pracę nad rozwojem produktu na małe etapy, które minimalizują ilość wcześniejszego planowania i projektowania. Iteracje, czyli sprinty, to krótkie ramy czasowe, zwane też przedziałami czasowymi. Zespół pracuje nad wszystkimi funkcjami: analizą, planowaniem, projektowaniem, kodowaniem i testowaniem. Na koniec iteracji interesariuszom przedstawia się działający produkt. Minimalizuje to ogólne ryzyko i pozwala na szybkie dostosowanie produktu do zmian. Ważną zasadą jest „ponosić porażki często i wcześnie”, ponieważ na wczesnych etapach jest to zwykle znacznie tańsze niż w przypadku zbliżania się do ostatecznej daty wydania produktu. Celem jest – oczywiście – odniesienie w końcu sukcesu. Jednak wczesne niepowodzenia, takie jak nieporozumienia na bardzo wczesnym etapie, można lepiej rozwiązywać dzięki stałemu zaangażowaniu interesariuszy, a koszty i ryzyko niepowodzeń na wczesnym etapie prototypu są mniej istotne niż w przypadku gotowego rozwiązania.
Główną zaletą metodyki zwinnej jest szybkość wprowadzania produktów na rynek, ograniczanie ryzyka i większe zadowolenie klienta. Bliska współpraca z interesariuszami i użytkownikami skraca czas i koszty, a także zmniejsza ryzyko stworzenia produktu, który nie spełnia wymagań użytkowników.
Sprinty są sercem SCRUM, w którym pomysły są przekształcane w wartość. Są to wydarzenia zapewniające kontrolę i adaptację postępu w kierunku celu produktu. Gdy horyzont sprintu jest zbyt długi, Cel Sprintu może stać się nieważny, złożoność może wzrosnąć, a ryzyko może się zwiększyć. Krótsze sprinty mogą być stosowane w celu wygenerowania większej liczby cykli nauki oraz ograniczenia ryzyka związanego z kosztami i wysiłkiem do mniejszych ram czasowych. Każdy sprint może być traktowany jako krótki projekt.
Tematy dla każdego sprintu to:
- Dlaczego ten sprint jest wartościowy? Właściciel produktu proponuje, w jaki sposób produkt może zwiększyć swoją wartość i użyteczność w bieżącym sprincie. Zespół Scrumowy współpracuje nad określeniem celu sprintu oraz tego, dlaczego ten sprint jest wartościowy dla interesariuszy.
- Co można zrobić w tym sprincie? Dzięki dyskusji z właścicielem produktu programiści wybierają elementy z zaległości produktowych (czyli listy zadań do wykonania w ramach projektu, którym należy nadać priorytety), które mają zostać włączone do bieżącego sprintu. Wybór może być trudny, ale im więcej programiści wiedzą o swoich dotychczasowych osiągnięciach, nadchodzących możliwościach oraz o swojej Definicji Wykonania, tym pewniej będą podchodzić do swoich prognoz dotyczących Sprintu.
- W jaki sposób wybrana praca zostanie wykonana? Dla każdego wybranego elementu Backlogu Produktu programiści planują pracę niezbędną do stworzenia przyrostu, który spełnia definicję wykonania. Często robi się to poprzez dekompozycję pozycji zaległego produktu na mniejsze pozycje robocze.
Zespół SCRUM składa się z jednego Mistrza SCRUM, jednego Właściciela Produktu i programistów. W Zespole Scrumowym nie ma pod-zespołów ani hierarchii. Jest to spójna jednostka profesjonalistów skupiona na jednym celu w danym czasie – Celu Produktowym. Zespoły są wielofunkcyjne i samodzielnie zarządzane. Zespół jest odpowiedzialny za wszystkie działania związane z produktem: współpracę z interesariuszami, weryfikację, utrzymanie, eksploatację, eksperymenty, badania i rozwój oraz wszystko inne, co może być potrzebne.
Mistrz SCRUM pomaga wszystkim zrozumieć teorię i praktykę SCRUM, zarówno w zespole SCRUM, jak i w organizacji. Jest on odpowiedzialny za efektywność Zespołu SCRUM, poprzez umożliwienie Zespołowi SCRUM doskonalenia swoich praktyk w ramach SCRUM. Zazwyczaj będzie to robił poprzez coaching członków zespołu w zakresie zarządzania sobą i międzyfunkcjonalnością, pomagając Zespołowi SCRUM skupić się na tworzeniu przyrostów o wysokiej wartości, które spełniają Definicję Wykonania, usuwaniu przeszkód oraz poprzez zapewnienie pozytywnego i produktywnego pola pracy, mieszcząc się w budżecie i terminie. Mistrz SCRUM pomaga Właścicielowi Produktu w efektywnym definiowaniu celów produktu i zarządzaniu Backlogiem Produktu, a Zespołowi Scrumowemu w zrozumieniu potrzeby tworzenia jasnych i zwięzłych pozycji Backlogu Produktu. Pomaga w ustanowieniu empirycznego planowania produktu dla złożonego środowiska i ułatwia współpracę z interesariuszami.
Mistrzowie SCRUM prowadzą, szkolą i coachują organizację w zakresie przyjęcia SCRUM, planują i doradzają we wdrożeniach SCRUM w organizacji, pomagają pracownikom i interesariuszom zrozumieć SCRUM i usuwać bariery.
Właściciel Produktu jest odpowiedzialny za maksymalizację wartości produktu będącego efektem pracy Zespołu Scrumowego. Jest on również odpowiedzialny za efektywne zarządzanie Backlogiem Produktu, co obejmuje opracowanie i wyraźne zakomunikowanie celu produktu, tworzenie, porządkowanie i wyraźne komunikowanie pozycji Backlogu Produktu oraz zapewnienie, że Backlog Produktu jest przejrzysty, widoczny i zrozumiały. Aby Właściciele Produktu mogli odnieść sukces, cała organizacja musi szanować ich decyzje.
Właściciel Produktu to jedna osoba, a nie komitet!
Deweloperzy są tymi osobami w zespole SCRUM, które tworzą wynik. Często potrzebne umiejętności są szerokie i dlatego niezbędna jest ich wielo- lub transdyscyplinarność. Deweloperzy są zawsze odpowiedzialni za tworzenie planu sprintu, zapewnianie jakości, dostosowywanie swoich planów do celu sprintu oraz wzajemne rozliczanie się jako profesjonaliści.