Czym jest Scrum?

Interesując się tematyką IT, każdy z nas z pewnością usłyszał określenie „Scrum”. Jest to fraza, która bez odpowiedniej wiedzy może wydawać się niezwykle zagadkowa. Jej znaczenie, można wyjaśnić jednak, w bardzo prosty sposób. Zapraszam was na tekst, w którym odpowiemy sobie na pytanie „Co to jest Scrum?”

Jeśli zaczynasz czytać niniejszy tekst i nie znasz jeszcze odpowiedzi na pytania „Czym jest metodyka?” oraz „Czym jest agile?”,  zapraszam Cię do mojego poprzedniego tekstu poświęconemu wprowadzeniu w niniejsze tematy. Znajdziesz go pod tym linkiem.

Scrum – omówienie

Korzystając ze znanych już nam określeń, Scrum można opisać jako metodykę procesu wytwórczego złożonego oprogramowania, należącą do grupy metodyk zwinnych. Aktualnie jest to najpopularniejsza z metodyk agile, wykorzystywana w wielu firmach produkujących różnorodne oprogramowanie.

Istotę Scruma opisuje najlepiej cytat z samego „Scrum Guide” – szczegółowej instrukcji założeń tej metodyki:

Scrum nie jest procesem, techniką wytwórczą, czy też wyczerpującym opisem sposobu działania. Definiuje jedynie ogólne reguły postępowania, w obrębie których możliwe jest stosowanie różnego rodzaju procesów i technik

Źródło: https://scrumguides.org/docs/scrumguide/v2017/2017-Scrum-Guide-Polish.pdf

Rozpoczynając przybliżanie czym jest Scrum, przedstawię trzy główne role, będące filarami każdego projektu:

  • Właściciel produktu (Product Owner) – Jest to osoba której rola opiera się na posiadaniu spójnej wizji produktu i wyznaczaniu priorytetów w produkcji poszczególnych jego elementów. Co ważne, product owner nie musi być klientem! Może być to reprezentant firmy, który jest swego rodzaju pomostem między zespołem developerskim, a resztą przedsiębiorstwa.
  • Zespół developerski (Developer Team) – Zespół to grupa osób, które odpowiedzialne są za dostarczanie elementów produktów. W skład zespołu mogą wchodzić nie tylko programiści, lecz także graficy, analitycy i wszystkie osoby z kompetencjami potrzebnymi do wytworzenia produktu.
  • Scrum master – Jest to osoba czuwająca nad sposobem pracy zespołu developerskiego. Nie tylko pilnuje on, aby wszyscy trzymali się zasad, lecz także pomaga zespołowi udzielając rad i dzieląc się obserwacjami, jak również wspierając członków zespołu wiedzą.

Iteracje w Scrumie, mające zawsze stały okres czasu, określane są mianem Sprintów. Każdy z nich zawiera się w okresie od tygodnia do maksymalnie miesiąca.

To czym konkretnie zajmujemy się podczas pojedynczego sprintu, zależne jest od dwóch niezwykle ważnych elementów planowania, zwanych Artefaktami Scrumu (Scrum Artifacts): Backlog Produktu (Product Backlog) oraz Backlog Sprintu (Sprint Backlog). Pierwszy z nich jest listą wszystkich funkcjonalności, które posiadać ma finalny produkt, ułożonych według ważności ich implementacji. Lista ta tworzona jest przez Product Ownera. Sprint Backlog, tworzony jest natomiast przez sam zespół developerski i jest to lista funkcjonalności z backlogu produktu, które mają być dostarczone w trakcie pojedynczego sprintu.

Timeline

Wiedząc już jak wyglądają najważniejsze elementy Scrumu, możemy przejść do omówienia pojedynczego sprintu. Każdy z nich zaczyna się od planowania sprintu (Sprint Planning). Wtedy to właśnie zespół wyznacza w backlogu sprintu funkcjonalności, które mają być zaimplementowane podczas sprintu, korzystając z backlogu produktu. Elementy sprint backlogu przekładają się bezpośrednio na zadania.

W celu zobrazowania sobie tego, wyobraźmy sobie, że w tworzonej przez nasz zespół aplikacji mobilnej, podczas aktualnego sprintu zajmujemy się zakładką profilu użytkownika. Osoby odpowiedzialne za backend otrzymają zadanie przygotowania zapytań API, które zwracać będą potrzebne do wyświetlenia dane, grafik zajmie się stworzeniem odpowiednich ikon i grafik, a frontendowcy zaimplementują elementy interaktywne w tej zakładce.

Niech nikt nie pomyśli, że pracując w Scrumie, zespoły spotykają się raz na dwa tygodnie, na rozliczenie sprintu, po czym wracają do swoich biur, by pracować dalej bez kontaktowania się z żywą duszą przez następny okres czasu. Kluczowym elementem sprintu są codzienne „spotkania na stojąco” (z angielskiego daily standup), zwane też daily scrumem. Podczas takiego krótkiego spotkania, omawiane są postępy w pracy nad zadaniami, napotkane problemy oraz to co planujemy robić dalej. Spotkania te zapewniają stałe podsumowania, dając wgląd w pracę innych członków zespołu.

Źródło: https://blog.magnusdahlgren.com/agile-downloads-and-images/

Kontynuujmy wcześniej podany przykład aplikacji. Co jeśli jeden z programistów nie mógłby zaimplementować listy osiągnięć danego użytkownika, ponieważ przez drobny błąd, zapytanie do API nie działa? Dzięki daily standupowi, osoba odpowiedzialna za backend szybko dopisze priorytetowe zadanie naprawy, dzięki czemu cały zespół będzie mógł posuwać pracę do przodu.

Prezentacja

Każdy ze sprintów kończy się przeglądem (sprint review). Podczas niego wszystkie osoby pracujące nad projektem oraz klient spotykają się na prezentacji nowej funkcjonalności. Klient, mówi co przypadło mu do gustu i jaka funkcjonalność powiązana z wdrożonym elementem mogłaby pojawić się w kolejnych iteracjach. Dzięki temu product owner może dopisać nowe elementy do backlogu produktu, a zespół oddaje funkcjonalność wiedząc jednocześnie, czy sposób implementacji pasuje klientowi i product ownerowi.

Ostatnim, jednak nie mniej ważnym elementem, jest retrospekcja (sprint retrospective). Jest to podsumowanie i wyciągnięcie wniosków z pracy przez dany okres czasu. Podczas niego zespół omawia to co poszło dobrze, a co powinni poprawić, by kolejne sprinty przebiegały efektywniej. Retrospekcje mają niezwykły wpływ na stałą poprawę jakość pracy zespołu w Scrumie. Jest tak m.in. dzięki świadomości tego ile elementów z backlogu produktu, są oni w stanie wziąć na siebie podczas pojedynczego sprintu, czy poprawy komunikacji i współpracy wewnątrz zespołu.

Zalety

Popularność Scruma podyktowana jest m.in. prostotą ram postępowania (framework) – „Scrum Guide” nie opisuje tego jak pracownicy mają konkretnie działać w każdej z możliwych sytuacji, lecz nakłada ogólne ramy na sposób pracy. Na jego popularność wpływa również duże bezpieczeństwo pod względem czasowym – nawet jeśli implementacja danej funkcjonalności nie powiedzie się, lub nie spodoba się klientowi, Product Owner nie straci więcej czasu, niż długość trwania sprintu.

Dodatkowo dzięki ciągłemu otrzymywaniu informacji na temat produktu, istnieje stała możliwość wprowadzania nowych pomysłów do backlogu produktu, nie tylko przez klienta, lecz również przez sam zespół deweloperski. Jednocześnie, wszystkie nowe pomysły są filtrowane przez właściciela produktu, zapewniając tym spójność końcowego oprogramowania.

Podsumowanie

Scrum jest metodyką która znacząco usprawnia proces produkcyjny. Właśnie dlatego jest on tak chętnie wykorzystywany przez wiele zespołów i firm. Mimo wszystkich superlatyw przedstawionych powyżej, nie jest on lekiem na wszystkie bolączki projektów IT. Nie mniej jednak, jest on niesamowitym narzędziem do organizacji pracy zepołu, które warto znać.

Jeśli wciąż jesteście ciekawi i chcecie dowiedzieć się więcej na temat Scruma, jego szczegółowe zasady znajdziecie w „Scrum Guide”, który znajduje się pod tym linkiem.

You Might Also Like
Dodaj komentarz