Većina kompanija i timova pokušava svoje probleme u razvoju softvera da reši primenom Agilnih metoda. Rešenje tih problema često vide u Scrum framework-u, jer im Scrum može pomoći da isporučuju svoj softver i rešenja “dva puta brže”. Jeff Patton je u svojoj knjizi “User Story Mapping” napisao: “Ukoliko vam je kvalitet sranje, sa Scrum-om ćete isporučivati duplo više sranja”. Ukoliko planirate da uvođenjem Scrum-a rešite problem vaše efikasnosti i da brže isporučite softver korisniku, zastanite na trenutak i pokušajte da vidite da li je to pravo rešenje za vas.
U nekim od prethodnih tekstova pisali smo o Mitologiji razvoja softvera i Zašto Scrum nije rešenje za sve probleme. U našem okruženju danas svi pokušavaju da rade Scrum, zbog toga što je to novi trend. Međutim postoje i drugi framework-i koji mogu bolje da koriste vašoj organizaciji i timu. Raditi Scrum ne znači biti Agilan. Agilnost je skup stanja svesti i vrednosti koje organizacija i njeni pojedinci imaju. Agilnost između ostalog znači da treba koristiti framework koji pristaje stanju sistema u kome se nalazimo ili radimo. Čuli ste već sigurno za framework-e kao što su XP Programing, Kanban, itd. Ukoliko razmišljate da koristite Kanban i voleli biste da saznate nešto više o njemu, na pravom ste mestu, ne menjajte kanal.
Šta je Kanban?
Kanban je pull sistem koji ograničava broj zadataka koji se mogu staviti u napredak. Kanban je nastao pre više od 50 godina u Tojoti u Japanu i povezuje se sa optimizacijom masovne produkcije automobila. Kanban je sistem kartica koje tačno označavaju gde se jedan određeni materijal nalazi u procesu proizvodnje. Iako je razvoj softvera kreativna aktivnost i nema mnogo veze sa masovnom proizvodnjom kola, neki od mehanizama sa proizvodne trake su našli svoju primenu i u IT industriji.
Kada bih trebao/la da koristim Kanban?
Ukoliko smo vas na trenutak zbunili informacijom da postoje drugi framework-i osim Scrum-a, verovatno se pitate kako da odlučite kada ćete koristi koji framework. Odgovor vam može dati Stacy matrica. Stacy matrica objašnjava četiri stanja u kome se jedan sistem može naći :
- Jednostavan
- Komplikovan
- Kompleksan
- Haotičan
Jednostavan sistem možemo objasniti poređenjem sa ključem za automobil. Prilikom prvog kontakta sa ključem jasna vam je njegova svrha i kako se koristi. Komplikovan sistem su automobili. Da biste predvideli ponašanje sistema, potrebne su prethodne analize i studije, ali na osnovu njih možemo u potpunosti predvideti stanje sistema i kako će se ponašati ukoliko stisnemo gas ili kočnice. Kompleksan sistem je saobraćaj u Nigeriji, u Lagosu recimo. Ukoliko želite da stignete iz tačke A u tačku B, trebaće vam više pokušaja i učenja pre nego što se budete osećali komforno da svaki dan putujete. Stanje sistema se ne može lako predvideti, ukoliko ne postoje prethodna znanja. U haotičnom sistemu, njegovo ponašanje i ishodi se menjaju svakog dana i ne mogu se predvideti.
Na osnovu prethodnog primera, Scrum bi se uklopio prilikom istraživanja saobraćaja u Lagosu. Kanban bi svoje mesto našao negde između ključa i samih kola. Kanban je preporučljiv za sisteme koji se nalaze na prelazu između jednostavnih i komplikovanih.
U razvoju softvera, Kanban se uklapa u zadatke koji su repetitivni i o kojima imamo prethodno znanje. Neki autori govore da je prikladan za održavanje softvera i podršku prilikom korišćenja softvera, ali ja bih dodao da je i jako zgodan prilikom uvođenja (eng. rollout) postojećih standardnih softverski rešenja na različita tržišta.
Koja je razlika između Kanbana i Scrum-a?
Scrum i Kanban dele neke principe i prakse, ali su dva različita pristupa i ne treba ih mešati. U tabeli ispod možemo videti glavne razlike.
Neki timovi pokušavaju da kombinuju prakse Scrum-a i Kanbana stvarajući “Scrumban”. Oni uzimaju uloge i sprintove iz Scrum-a, a fokusiraju su na limitiran broj zadatka u procesu rada i dužinu ciklusa iz kanbana. Za timove koji tek počinju da primenjuju agilnu metodologiju i njene framework-e preporučljivo je da izaberu jedan i da ga testiraju u svom okruženju.
U čemu nam Kanban pomaže?
Pre nego što započnemo naše kratko putovanje kroz Kanban, osvrnućemo se kratko na to šta je Lean i koji su osnovi otpadi koji se javljaju tokom razvoja produkta. Jednostavno objašnjeno Lean predstavlja kreiranje više korisničke vrednosti uz upotrebu što manjeg broja resursa. Biti Lean ne znači da morate da budete “mršavi” i da sklanjate većinu stvari koje vam prave troškove a ne donose korisničku vrednost. Ukoliko želite da budete Lean, potrebno je da imate prave resurse i veštine na pravom mestu, koje kreiraju vrednost korisniku sa pravim kvalitetom u pravo vreme. To se postiže maksimizacijom korisničke vrednosti preko minimizacije otpada. Kanban je način kojim se to postiže. Šta za nas u razvoju softvera predstavlja otpad? Otpadi mogu doći u različitim oblicima, a osnovnih 8 otpada (MUDA) koji se javljaju su:
- Delimično urađen posao
- Konstantno prelaženje sa jednog na drugi zadataka
- Dodatni korisnički zahtevi
- Neiskorišćavanje talenata i veština ljudi
- Ponovno učenje
- Predavanje zadatak
- Defekti
- Odlaganja
Lean je destinacija koja nam poručuje kako da se rešimo ovih navedenih otpada i “gužve na autotputu”. Kanban je sredstvo koje će nam pomoći da dođemo na našu destinaciju autoputem na kojem nije gužva.
Ukoliko ne radimo na umanjenju/uklanjaju otpada i stvaramo veliku gužvu, uticaćemo na naše specijaliste koji pokušavaju da poprave autoput i da ga održe u perfektnom stanju. Ukoliko je gužva, a neophodno je da se obave radovi na putu, naši specijalisti će biti pod pritiskom da reše probleme što pre. Tokom tog perioda vozači će biti nezadovoljni što su primorani da čekaju. Kako ovo veze ima sa programiranjem i kako to utiče na programere? Upravo se isto dešava sa programiranjem i razvojem softvera. Korisnici često nisu sigurni šta žele, sve im je prioritet i uvek ima mnogo stvari koje treba da se razvijaju. Ukoliko bismo pitali jednog programera kako počinje jedan njegov tipičan dan, njegov odgovor bi bio da:
- Radi na nekoliko projekata paralelno
- Radi neplanirane zadatke, isto paralelno
- Ne zna koji su prioriteti jer nisu vizualizovani
Kakav je ishod? Projekti neće biti završeni na vreme i naši korisnici će čekati. Programeri će biti pod stresom i radiće prekovremeno kako bi pokušali da ispoštuju zadate rokove. Slična stvar je sa primerom autoputa gde vozači čekaju i nervorzni su, dok specijalisti rade da poprave put. Niko nije na dobitku.
Kako možemo rešiti ove izazove sa kojima se susrećemo svaki dan? Optimizacijom otpada koji nastaju pri ovom procesu. Teško je optimizovati nešto ukoliko ga ne možemo videti? Kanban nam može pomoći da krenemo sa uklanjanjem i smanjivanjem otpada, jer:
- Nema novih uloga
- Nema novih procesa
- Lak je za učenje i primenu za članove tima
- Nizak rizik i troškovi implementacije
- Vizualizuje proces i gradi međusobno razumevanje.
Ukoliko treba da počnemo da koristimo nešto novo, glavni strahovi koje naši saradnici imaju su kako će to uticati na njih, njihovu ulogu i šta oni mogu imati od toga. Ukoliko ste se zainteresovali za Kanban, u narednih par nedelja pratite nove članke u kojima ćemo proći kroz ključne principe i prakse kanbana i pokazati kako timovi u kojima radite mogu da imaju koristi od njih.
Slike preuzete sa:
http://www.gp-training.net/training/communication_skills/consultation/equipoise/complexity/stacey3.gif
https://rosinadk.files.wordpress.com/2013/06/simple-kanban-board.jpg
Ostavi komentar