SCRUM jest jednym z kilku wiodących podejść do zarządzania projektami w ramach metodologii AGILE.
Zgodnie z definicją Scrum Guide, SCRUM jest lekkim frameworkiem, który pozwala zespołom i organizacjom tworzyć wartość poprzez zastosowanie adaptacyjnych rozwiązań do złożonych problemów.
Jeśli powyższa definicja SCRUMa brzmi dla Was zbyt abstrakcyjnie, niekonkretnie i teoretycznie, to po przeczytaniu tego artykułu z pewnością już taką się wydawać nie będzie.
Postaramy się ją przełożyć na język o wiele bardziej zrozumiały i konkretny.
W poniższym artykule przyjrzymy się z bliska teorii, filozofii, jaka legła u podstaw SCRUM-a.
Skupimy się na wartościach, jakie pozwalają osiągać i urzeczywistniać cele zespołom SCRUMowym.
Pokrótce postaramy się także omówić podstawowe różnice, jakie są widoczne w AGILE i SCRUMie.
Warto od razu zaznaczyć, że SCRUM i AGILE to nie są synonimy, ale pojęcia ze sobą powiązane. W jaki sposób? O tym będziemy opowiadać już za chwilę.
Jeśli jesteście ciekawi metod stosowanych w zarządzaniu projektami, które są najbardziej adekwatne do aktualnych uwarunkowań rynkowych, to zapraszamy do lektury poniższego artykułu.
Naprawdę warto!
Czym jest zwinne zarządzanie projektami?
Zapewne terminy, pojęcia takie jak: metodyka SCRUM, product backlog, Sprint backlog, product owner, Sprint review, definition of done, project manager, ramy postępowania, koniec Sprintu, daily SCRUM, daily meeting SCRUM, retrospektywa SCRUM, retrospekcja SCRUM obiły się Wam o uszy.
Są bardzo popularne wśród programistów, osób zarządzających projekatmi, specjalistów i projektantów UX.
Stanowią część branżowego żargonu, ale także element codziennej komunikacji w software house`ach, agencjach UX.
Opowieść o SCRUMie należy zacząć jednak nie tyle od przedstawiania jego słownika, co od odpowiedzi na pytanie, czym jest zwinne zarządzanie projektami - AGILE?
AGILE jest pojęciem szerszym, w którym SCRUM się zawiera. Nie stanowi dla niego kontrpropozycji, nie jest jego synonimem, nie jest konkurentem. Czym zatem jest SCRUM?
Metodyka zwinna SCRUM jest obok metodyki Kanban, Feature Driven Development (FDD), Extreme Programming (XP), Lean Software Development (LSD), Adaptive System Development (ASD), Dynamic Systems Development Method (DSDM), Crystal Clear jednym z podejść, jakie można wyróżnić w AGILE.
Zgodnie z danymi zaprezentowanymi w artykule pt. „Adopting Agile: The Latest Reports About The Popular Mindset” aż 56% zespołów developerskich deklaruje wykorzystywanie metodologii SCRUM w swoich projektach.
Czy istnieje moda na AGILE i SCRUMa? Z pewnością tak, ale uzasadniona. Wynikami, rezultatami - mierzonymi w liczbach, procentach, ale także uzasadniona subiektywnymi ocenami, które przecież także mają znaczenie.
AGILE jest metodologią, która polega na ustawicznej, ciągłej iteracji procesów cyklu życia oprogramowania.
Celem AGILE jest dostarczanie rozwiązań (np. określonych funkcjonalności) w krótkich, maksymalnie wartościowych cyklach.
W praktyce chodzi o to, by budować oprogramowanie (np. aplikację webową lub mobilną) w sposób elastyczny, kierując się zasadą małych kroków, mniejszych sukcesów.
Umożliwia to rozwijanie oprogramowania w sposób bardziej adekwatny do szybko zmieniającego się kontekstu rynkowego, biznesowego, technologicznego.
Zamiast myślenia w kategoriach dużych efektów i zmian, AGILE proponuje myślenie w kategoriach mniejszych zadań, które mogą być wykonywane w sposób ciągły, w określonej - zazwyczaj o wiele krótszej - jednostce czasu.
Zadań prowadzących do uzyskania konkretnej wartości - na przykład wdrożenia, czy udoskonalenia danej funkcjonalności.
Pozwala to zarządzać projektem w sposób elastyczny. Metoda ta pozwala także zmieniać priorytety, szybciej reagować na problemy.
AGILE w swej najważniejszej cesze pozwala zarządzać projektami efektywniej.
Umożliwia znaczne oszczędności budżetowe, czasowe. Czyni pracę także o wiele bardziej efektywną.
AGILE, SCRUM pozwalają także w pewien sposób poradzić sobie z problemem tak zwanej „pracy w toku”.
Praca w toku to pojęcie odnoszące się do prac, które są jednocześnie niezbędne do wytworzenia produktu końcowego, ale w danym momencie rozwoju produktu nie wiążą się z konkretną wartością. A może nią być na przykład konkretna funkcjonalność.
Klient, który zdecyduje się na tworzenie oprogramowania w metodologii AGILE otrzymuje konkretne rozwiązania (wartości) w stałych odstępach czasu.
Będzie także mógł zareagować na nie.
Manifest AGILE (AGILE Manifesto)
AGILE oparte jest na czterech wartościach i dwunastu zasadach, które zostały wyłożone w słynnym Manifeście AGILE (AGILE Manifesto).
Nie wchodząc - w dużym stopniu owianą legendą i trochę już zmitologizowaną - historię powstania manifestu powiedzmy, że wspomniane cztery wartości to:
- przedkładanie osób i interakcji zachodzących między nimi nad procesy i narzędzia
- przedkładanie działającego oprogramowania nad dokumentację
- przedkładanie reakcji na zmianę nad działanie zgodnie z planem
- przedkładanie współpracy z klientem nad negocjowanie umowy.
Dwunastopunktowy manifest Agile jest sfokusowany na:
- zadowoleniu klienta i zaoferowaniu wartościowego oprogramowania
- zmianach, które mają prowadzić, pozwolić uzyskać przewagi konkurencyjne
- częstotliwości dostarczania działającego oprogramowania
- codziennej współpracy developerów oraz interesariuszy
- motywacji pracowników, tworzenia im optymalnego środowiska pracy
- efektywności komunikacji face to face
- ocenach dostarczonego, działającego oprogramowania
- zrównoważeniu rozwoju, utrzymaniu stałego tempa zmian
- jakości projektu, oprogramowania
- prostocie, upraszczaniu sposobu pracy
- samoorganizacji zespołów
- nieustannym podnoszeniu wydajności, jakości, efektywności.
Korzyści ze stosowania metodologii AGILE jest naprawdę wiele, stąd też jej popularność, która dalece wykracza poza domenę IT, tworzenia oprogramowania, tworzenia aplikacji webowych i mobilnych.
Zgodnie z opracowaniem „AGILE i SCRUM. Charakterystyka środowiska w Polsce” przygotowanym przez serwis AGILE Polska, AGILE jest metodologią najczęściej wykorzystywaną w branży:
- IT
- konsultingu
- bankowości
- finansach i księgowości
- ubezpieczeniach
- telekomunikacji.
AGILE jest rekomendowane do projektów, w których istnieją obszary niepewności, w których nie wszystko da się zdefiniować, określić, skwantyfikować przed podjęciem prac.
AGILE sprawdzi się w szczególności podczas tworzenia oprogramowania dla branż, w których zmiany są:
- częste
- regularne
- nieprzewidywalne
- znaczące pod kątem biznesowym, organizacyjnym, czy dowolnym innym.
Warto także pamiętać, że metodologia AGILE jest o wiele bardziej otwarta, w mniejszym stopniu zależna od sztywnego, skonkretyzowanego, sprecyzowanego w najdrobniejszym calu planu.
Opiera się na zmianie - wymagań - oraz nieustannym procesie przekazywania informacji zwrotnej (feedback) od interesariuszy, użytkowników końcowych.
Celem każdej iteracji jest wytworzenie działającego produktu, który ma w założeniu lepiej, bardziej adekwatnie odpowiadać na potrzeby oraz skuteczniej realizować cele.
Celem interesariuszy biznesowych oraz developerów jest ścisła współpraca owocująca wytworzeniem oprogramowania, które lepiej pasuje do potrzeb klientów i celów (krótko- i długoterminowych firmy).
W praktyce, w czasie prowadzenia projektów w zwinnej metodyce prace programistyczne (developerskie), testowe przebiegają równolegle.
AGILE służy do skuteczniejszego pozyskiwania informacji zwrotnych i reagowania na nie.
Co to jest metodyka Scrum?
SCRUM to metodyka AGILE, która ma na celu tworzenie nowych produktów w środowisku podatnym na zmiany.
Jest jednym z najbardziej popularnych frameworków AGILE, który jest stosowany do wytwarzania i rozwijania złożonego oprogramowania.
SCRUM zbudowany jest na:
- przejrzystości (Transparency) – gwarantującej pełny i nieograniczony dostęp do informacji
- adaptacji (Adaptation)– pozwalającej zmieniać priorytety
- przeglądzie (Inspection) – umożliwiającym doskonalenie produktu i procesu.
SCRUM jest zorientowany na:
- interakcje i relacje
- synergię – uzyskiwanie efektu zbiorowej inteligencji
- empiryzm – decyzje są podejmowane w oparciu o doświadczenia i obserwacje
- lean thinking – myślenie wspierające ekonomizację działań, skuteczność
- przyrostowe, ewolucyjne podejście do optymalizacji oprogramowania.
Jego najbardziej elementarną jednostką jest zespół SCRUMowy, który składa się z pojedynczego SCRUM Mastera, Product Ownera oraz programistów.
W sensie struktury, hierarchii jest to układ płaski, wielofunkcyjny, który jest wewnątrzsterowny.
Członkowie zespołu samodzielnie ustalają zakres prac, obowiązków, odpowiedzialności oraz czas, jaki przeznaczą na dane działanie.
Wielkość oraz sposób organizacji w zespole nie jest przypadkowy. Pozwala zachować większą zwinność, lepszą komunikację oraz produktywność.
Warto także pamiętać, że SCRUM jest zbiorem ról, obowiązków, spotkań, które nadają procesowi wytwarzania oprogramowania stałą strukturę.
Zespół jest odpowiedzialny za wszystkie działania związane z produktem.
Co to jest SCRUM Sprint?
Każdy zespół SCRUMowy składa się z trzech ról:
- SCRUM Master
- Product Owner (Właściciel Produktu)
- SCRUM Team.
Co robi SCRUM Master?
Mówiąc najbardziej ogólnie, SCRUM Master jest odpowiedzialny za płynność, bezproblemowość przebiegu Sprintu.
Jego zdaniem jest:
- usuwanie przeszkód
- organizacja spotkań
- przygotowanie Sprint Backlogu Produktu
- utrzymanie standardów zgodnie z definicją w Przewodniku SCRUM
- wspieranie samozarządzania członków zespołu
- wspieranie tworzenia przyrostów spełniających Definicję Ukończenia
- wspieranie produktywności, także poprzez definiowania Celów Produktowych
- szkolenie organizacji w zakresie wdrażania SCRUMa.
Rolą Product Ownera jest przede wszystkim:
- stworzenie i przekazanie wizji produktu
- dopilnowanie spełnienia wszystkich wymagań - biznesowych, funkcjonalnych, rynkowych
- zarządzanie zaległościami
- motywowanie zespołu (Product Ownerem nie jest osoba kierująca projektem, więc nie ma i nie powinien mieć realnej władzy nad członkami zespołu)
- opracowywanie i komunikowanie tego, jaki jest Cel Produktu
- tworzenie i komunikowanie elementów Backlogu Produktu
- zapewnienie przejrzystości, widoczności, zrozumiałości Backlog Produktu.
SCRUM Team (w którym zacierają się tradycyjne role w Scrum, funkcje) z kolei jest odpowiedzialny za:
- rozwój produktu
- testowanie produktu
- tworzenie planu Sprintu
- przestrzeganie Definicji Ukończenia.
Zarządzanie projektami SCRUM w głównej mierze opiera się na pracy zespołu w ramach Sprintu, planowaniu Sprintu.
Mówiąc wprost - istotą SCRUMu są Sprinty, które zazwyczaj nie trwają dłużej niż jeden miesiąc.
Sprinty następują po sobie i są po prostu cyklami dostaw działającego oprogramowania. Oparte są na przyroście i powiązaniu z poprzednio wykonaną pracą.
Niezwykle istotne jest, że w trakcie Sprintu zespół nie może wprowadzać zmian, które godzą w Cel Sprintu.
Jakie są wady i zalety SCRUM?
Dzięki wyznaczonym rolom, zasadom, jasnym strukturom SCRUM zapewnia:
- lepszą przejrzystość projektu
- lepszą widoczność projektu
- lepszy przepływ informacji oraz lepsze zrozumienie i komunikację między członkami zespołu
- możliwość przewidywania problemów
- większy zakres oraz głębokość odpowiedzialności zespołu
- pożądaną autonomię, niezależność, samodzielność zespołu
- większą elastyczność
- głębszą świadomość celów, dzięki ciągłym informacjom zwrotnym
- szybszą reakcję na nowe informacje, dane, wyniki, obserwacje
- większą efektywność oraz ekonomiczność pracy
- możliwość szybszego wykrycia oraz naprawy błędów.
SCRUM, choć bardzo ceniony, nie jest pozbawiony wad.
Najczęściej zwraca się uwagę na fakt, że wymaga on:
- znacznego poziomu doświadczenia
- dużego zaangażowania i samodyscypliny zespołu.
Ponadto, SCRUM bywa krytykowany za:
- zwiększenie ryzyka rozszerzenia zakresu projektu
- zwiększenie ryzyka ciągłego dodawania funkcji
- dużą odpowiedzialność SCRUM Mastera, który musi posiadać specyficzne cechy osobowościowo-charakterologiczne, by urzeczywistnić cele, wartości Scrum zawarte w tej metodzie
- zwiększenie ryzyka budżetowego, podnoszenia kosztów projektu, jeśli zadania zostaną błędnie zdefiniowane.
Czym jest SCRUM? Podsumowanie
- SCRUM a AGILE, choć chętnie ze sobą zestawiane, używane jako pojęcia wymienne nie są tożsame.
- AGILE jest pojęciem szerszym, w którym SCRUM się zawiera.
- AGILE jest metodologią najczęściej wykorzystywaną w branży IT, konsultingu, bankowości, finansach i księgowości, ubezpieczeniach oraz telekomunikacji.
- AGILE jest metodologią, która polega na ustawicznej, ciągłej iteracji procesów cyklu życia oprogramowania (np. jego rozwój, testy).
- Celem AGILE jest dostarczanie rozwiązań (np. określonych funkcjonalności) w krótkich, maksymalnie wartościowych cyklach.
- Zamiast myślenia w kategoriach dużych efektów i zmian, AGILE proponuje myślenie w kategoriach mniejszych zadań, które mogą być wykonywane w sposób ciągły, w określonej - zazwyczaj o wiele krótszej - jednostce czasu.
- AGILE pozwala na zarządzanie projektem w sposób elastyczny. Umożliwia także zmienianie priorytetów, szybsze reagowanie na problemy.
- AGILE jest rekomendowane do projektów, w których istnieją obszary niepewności, w których nie wszystko da się zdefiniować, określić, skwantyfikować przed podjęciem prac.
- AGILE sprawdzi się w szczególności podczas tworzenia oprogramowania dla branż, w których zmiany są częste, regularne, nieprzewidywalne, znaczące pod kątem biznesowym, organizacyjnym, czy dowolnym innym.
- AGILE opiera się na zmianie wymagań oraz nieustannym procesie przekazywania informacji zwrotnych (feedback) od interesariuszy, użytkowników końcowych.
- Celem każdej iteracji jest wytworzenie działającego produktu, który ma w założeniu lepiej, bardziej adekwatnie odpowiadać na potrzeby oraz skuteczniej realizować cele.
- SCRUM jest jednym z kilku wiodących podejść w ramach metodologii AGILE.
- SCRUM to lekki framework, który pozwala zespołom i organizacjom tworzyć wartość poprzez zastosowanie adaptacyjnych rozwiązań do złożonych problemów.
- Metodologia SCRUM jest obok Kanbana, Feature Driven Development (FDD), Extreme Programming (XP) i kilku innych jednym z podejść, jakie można wyróżnić w AGILE.
- SCRUM to metoda AGILE, która ma na celu tworzenie produktów w środowisku podatnym na zmiany.
- SCRUM jest jednym z najbardziej popularnych frameworków AGILE, który jest stosowany do wytwarzania i rozwijania złożonego oprogramowania.
- SCRUM zbudowany jest między innymi na zasadzie przejrzystości (Transparency) oraz przeglądzie (Inspection).
- Najbardziej elementarną jednostką SCRUM jest zespół SCRUMowy, który składa się z pojedynczego SCRUM Mastera, Product Ownera oraz developerów.
- W sensie struktury, hierarchii jest to układ płaski, wielofunkcyjny, który jest wewnątrzsterowny.
- Członkowie zespołu samodzielnie ustalają zakres prac, obowiązków, odpowiedzialności oraz czas, jaki przeznaczą na dane działanie.
- SCRUM jest zbiorem ról, obowiązków, spotkań, które nadają procesowi wytwarzania oprogramowania stałą strukturę. Zespół jest odpowiedzialny za wszystkie działania związane z produktem.
- Istotą SCRUM-u są Sprinty, które zazwyczaj nie trwają dłużej niż jeden miesiąc. Sprinty następują po sobie i są po prostu cyklami dostaw działającego oprogramowania.
- Sprinty oparte są na przyroście i powiązaniu z poprzednio wykonaną pracą.
- W trakcie trwania pojedynczego Sprintu nie można wprowadzać zmian (istotny jest właściwy Sprint Planning - planowanie Sprintu, Sprint Retrospective), które godzą w Cel Sprintu.
- Dzięki wyznaczonym rolom, zasadom, jasnym strukturom SCRUM zapewnia lepszą przejrzystość projektu oraz widoczność projektu, lepszy przepływ informacji oraz lepsze zrozumienie i komunikację między członkami zespołu.
- SCRUM daje możliwość przewidywania problemów, większy zakres oraz głębokość odpowiedzialności zespołu, pożądaną autonomię, niezależność, samodzielność zespołów SCRUM.
- SCRUM bywa krytykowany za zwiększenie ryzyka rozszerzenia zakresu projektu, zwiększenie ryzyka ciągłego dodawania funkcji.
- SCRUM Master - jako rola, funkcja - także bywa krytykowany za zbyt dużą odpowiedzialność, jaką musi ponosić.
- SCRUM Masterem może zostać osoba, która posiada specyficzne cechy osobowościowo-charakterologiczne, by urzeczywistnić cele, wartości zawarte w tej metodzie
- AGILE, SCRUM pozwalają także w pewien sposób poradzić sobie z problemem tak zwanej „pracy w toku”.
- Praca w toku to pojęcie odnoszące się do prac, które są jednocześnie niezbędne do wytworzenia produktu końcowego, ale które w danym momencie rozwoju produktu nie wiążą się z konkretną wartością, którą może być konkretna funkcjonalność.