To Scrum or Not To Be
Scrum je prvobitno bio namenjen razvoju softvera, ali se pokazao kao dobro rešenje za bilo koji složen i inovativan projekat. Danas se primenjuje u različitim industrijama kao što su razvoj satelitskih uređaja, komercijalnih softvera, in-house rešenja, projekte sa fiksom cenom, finansijske aplikacije, razvoj video igara i slično.
Pre par meseci, na ovom blogu mogli ste da pročitate moj tekst o agilnom pristupu. Ovog puta želim da zajedno odemo korak dalje i upoznamo se sa još jednim srodnim terminom.
Scrum.
Scrum najjednostavnije možemo da opišemo kao okruženje u kome se sprovodi agilni pristup. On omogućava pojedincima koji ga primenjuju da aktivno i efikasno izvršavaju kompleksne zadatke i da na kraju isporuče proizvode najviše vrednosti.
Tradicionalno ugovaranje projekata podrazumeva dogovaranje unapred, bez obzira na promenu uslova u kojima poslujemo. Pošto su zahtevi tržišta, pa samim tim i klijenata, vrlo promenljivi izvođači projekata moraju da budu fleksibilni da bi sprečili nezadovoljstvo klijenta krajnjim proizvodom, kada se projekat završi. Scrum je agilni način rada kojim se na brži način započinje projekat i omogućava da se u toku njegovog izvođenja odgovori na promene koje se neminovno pojavljuju.
Poštuje osnovna načela agilnog manifesta:
• Pojedinac i interakcija su važniji od procesa i alata;
• Saradnja sa klijentima u svim fazama projekta je važnija od poštovanja ugovornih aranžmana;
• Fleksibilan proizvod je važniji od dokumentacije;
• Reakcija na promenu je važnija od pridržavanja unapred definisanog plana.
Više o ovome možete pročitati u tekstu o agilnom pristupu.
Scrum je prvobitno bio namenjen razvoju softvera, ali se pokazao kao dobro rešenje za bilo koji složen i inovativan projekat. Danas se primenjuje u različitim industrijama kao što su razvoj satelitskih uređaja, komercijalnih softvera, in-house rešenja, projekte sa fiksom cenom, finansijske aplikacije, razvoj video igara i slično.
Njegova glavna odlika je jednostavnost, a mogućnosti koje nudi beskrajne. Glavni elementi Scruma su uloge, sastanci i artefakti.
Sve počinje tako što vlasnik proizvoda u saradnji sa klijentom kreira prioritetnu listu želja tj. product backlog koji predstavlja najgrublju sliku zahteva klijenta. To je specifikacija funkcionalnosti proizvoda koje će se razrađivati po fazama. Predstavljene su kroz „korisničke priče“ koje sadrže tri bitne informacije:
Ko (korisnička uloga) – klijent, zaposleni, administrator?
Šta (cilj) – Koja funkcionalnost mora biti postignuta/razvijena?
Zašto (razlog) – Zašto korisnik želi da postigne ovaj cilj?
Jedna korisnička priča može da izgleda ovako: „Kao korisnik, želim da se prijavim na sajt tako da mogu da pristupim pretplatničkom sadržaju.“
Vlasnik proizvoda, koji je uglavnom menadžer ili sponzor projekta, odlučuje o datumu implementacije, prioritizaciji zadataka, budžetu i transparentno prenosi informacije između klijenta i timova. On ažurira product backlog na osnovu novih zahteva klijenta ili povratne informacije Scrum Mastera.
Nakon kreiranja liste sledi sprint planiranje, sastanak na kome se Scrum tim upoznaje sa obimom posla koji treba da se uradi u sledećoj fazi tj. sprintu i odlučuje o stavkama iz liste koje će razvijati.
Sprint predstavlja vremenski okvir, fazu koja traje obično dve do četiri nedelje i tokom koje je tim u obavezi da sprovede ono što je na početku dogovoreno. Sprintovi kreću planiranjem, završavaju se retrospektivom, i uvek su iste dužine, za razliku od iteracija kod klasično vođenih projekata.
Na osnovu zaključaka iz faze planiranja priprema se sprint backlog kojim se precizira obim posla i vreme koje je potrebno da se svaki korak izvrši. Posao se razlaže na najjednostavnije korake sa ciljem da se svaki preuzeti zadatak obavi u toku jednog sprinta. Takođe, sprint backlog služi za praćenje svega što se dešava na sastancima. U svakom trenutku može da se ažurira informacijom o preostalom radu, a svaki član tima može dodati, izbrisati ili promeniti stavke.
Na kraju sprinta, posao koji je tim odradio trebalo bi da bude spreman za predaju kupcu ili prezentaciju zainteresovanoj strani.
Razvojni, ili Scrum timovi mogu da budu sastavljeni samo od programera, testera, dizajnera ili mogu da budu multi-funkcionalni. Uglavnom se sastoje od 5 do 9 članova čiji rad koordiniše Scrum Master. Pošto za primenu Scruma nije bitna hijerarhija već odgovornost, svako iz tima može da bude Scrum Master. Preporučljivo je da to bude neko sertifikovan za agilnu metodologiju, da bi na pravi način sprovodio Scrum vrednosti i prakse. Njegov osnovni zadatak je da ukloni prepreke i da održava timove produktivnim.
Da bi se osiguralo da na kraju sprinta tim isporuči ono na šta se obavezao, Scrum podrazumeva održavanje dnevnih sastanaka koji čine okosnicu čitavog koncepta.
Dnevni scrum sastanak traje u proseku 15 minuta i održava se stojeći. Iako mu može prisustvovati bilo ko, samo članovi tima, Scrum Master i vlasnik proizvoda mogu da govore. Cilj sastanaka jeste da svaki član tima odgovori na tri pitanja:
Šta si radio juče?
Šta ćeš uraditi danas?
Koje su prepreke?
Zbog ovakve organizacije gubi se potreba za dugim nepotrebnim sastancima i ostavlja se prostor članovima tima da rade ono u čemu su najbolji.
Celokupan proces prate i burndown charts ili grafikoni napretka koji služe kao grafički prikaz završenog posla i posla koji treba da se završi. Može da prikazuje napredak po zadatku, članu tima ili ukupan progres.
Na kraju svakog sprinta održava se revizija sprinta na kome tim predstavlja šta je postigao i koje je funkcionalnosti razvio. To je neformalan sastanak koji traje do dva sata i na kome učestvuje ceo tim. Vlasnik proizvoda najčešće prezentuje klijentu šta je rezultat rada nakon čega se taj deo posla smatra konačno završenim.
Kada je ono što je urađeno prihvati od strane klijenta, zakazuje se sprint retrospektiva gde vlasnik proizvoda zajedno sa timom diskutuje o naučenim lekcijama. Dok se kod tradicionalnog vođenja proizvoda naučene lekcije formalizuju na kraju projekta, pa mogu da posluže kao osnov za neki naredni projekat, u Scrumu je ovo faza nakon svakog sprinta. Tokom ovog internog sastanka članovi tima razmatraju probleme koje su imali, šta je dobro urađeno, a šta može da se poboljša kako bi u naredni sprint ušli spremniji.
Zbog svoje jednostavnosti i efikasnosti koriste ga neke od najvećih svetskih kompanija Microsoft, Google, Yahoo, IBM, Apple, Philips, Siemens, BBC, Electronic Arts i mnoge druge.
Zbog čega Scrum primenjuju najuspešniji?
Scrum timovi su samo-organizujući. Sve vreme rade na svakoj od faza projekta (analiza zahteva, dizajn, programiranje, testiranje) umesto da svaku od njih obavljaju sekvencijalno. Proizvod na kome se radi napreduje u serijama koje traju od dve do četiri nedelje tj. u sprintu. Na ovaj način timovi postaju fleksibilni i spremni da daju odgovor na promene koje se dešavaju tokom projekta. Na kraju oni zaista mogu da isporuče proizvod za vreme koje je ugovorom predviđeno.
Mada ima svoja generička pravila, da bi se stvorilo agilno okruženje koje omogućava planiran način isporuke, ne postoji propisana inženjerska praksa. Za Scrum je najbitnije da se odluke donose na osnovu rezultata pre nego na osnovu pretpostavki.
Njegova velika prednost je skalabilnost. Ona se odnosi na sve: vrstu primene, veličinu tima, njegovu distribuciju, trajanje projekta itd.
Scrum kao način vođenja projekata se zasniva na komunikaciji, saradnji i interaktivnosti svih članova. Na taj način omogućava da sa klijentom gradimo aktivan i kvalitetan odnos. Naša spremnost da odgovorimo na svaki njegov zahtev učiniće i klijenta spremnim da nam veruje. Zato Scrum ne treba posmatrati kao alternativu, već kao sledeći korak u evoluciji upravljanja projektima.
Lao Tzu[/kswr_iconboxinfo]