Симулација развоја пројекта Scrum приступом
У претходној лекцији упознао си се са теоријским основама Scrum методологије. Теорија, међутим, постаје јасна тек када се примени у пракси. Ова лекција није класична лекција са градивом, већ симулација скраћене верзију једног (или два) Scrum спринта на замишљеном софтверском пројекту.
Циљ ове вежбе
Циљ вежбе није да напишеш стваран код, већ да на осетиш динамику Scrum-а - поделу улога, писање и приоритизацију backlog-а, планирање спринта, свакодневну комуникацију кроз Daily Scrum, представљање резултата кроз Sprint Review и унапређење начина рада кроз Sprint Retrospective.
Организациона припрема (пре часа)
Потребан материјал
- Табла или веће парче папира, подељено на три колоне: To Do, In Progress, Done.
- Много post-it налепница и маркери - за писање ставки backlog-а и задатака.
- Тајмер или штоперица (може и мобилни телефон) - временско ограничење је кључно за осећај "правог" спринта.
- Празни листови папира за скицирање изгледа екрана апликације (wireframe).
Колико је времена потребно?
Идеално је да се вежба реализује на спојена два часа (90 минута), како би сви ученици у групи да прођу кроз читав циклус, а по могућности и кроз два скраћена спринта. Уколико располажеш само једним часом од 45 минута, упутство садржи и скраћену верзију (означену посебно у наставку).
Подела улога (5 минута)
За одељење од 9 или 10 ученика, предлог поделе улога је следећи:
- 1 ученик - Product Owner: Изабери ученика који добро комуницира и уме да доноси одлуке - он ће представљати "глас корисника" и одлучивати шта тим ради и којим редоследом.
- 1 ученик - Scrum Master: Изабери ученика склоног организацији и вођењу дискусије - он ће водити церемоније (Daily Scrum, Retrospective) и пазити на време.
- Остатак одељења (7-8 ученика) - Развојни тим: Сви остали ученици чине развојни тим и заједно раде на задацима из спринта.
Наставник преузима улогу "Клијента" (наручиоца) - особе која на почетку даје general идеју пројекта, а на Sprint Review-у оцењује да ли је урађено оно што је тражено. Ова улога наставнику омогућава да, по потреби, уведе и по неку "изненадну" промену захтева током вежбе (о чему више у Кораку 4).
Шта ако у одељењу има 10, а не 9 ученика?
Ако одељење има паран број ученика који омогућава поделу у два мања тима (нпр. 2x5), вежба се може извести и паралелно - оба тима добијају исти пројекат (или два слична), раде одвојено, а на Sprint Review-у упоређују решења. Ово повећава ангажованост свих ученика, јер ниједан тим није превелики.
Предлог пројекта за симулацију
Препоручује се једноставан, свима разумљив пројекат, тако да ниједан ученик не буде у предности само зато што "уме да програмира". Предлог:
"ШколскиБифе" - мобилна апликација која ученицима омогућава да унапред наруче и резервишу ужину у школском бифеу, како не би чекали у реду на одмору.
Ова тема је свима позната из свакодневног живота, не захтева стручно предзнање и довољно је обимна да генерише десетак различитих ставки за backlog.
Ток часа - корак по корак
Корак 1: Уводно предавање (5-10 минута)
Кратко подсети одељење на кључне Scrum појмове из претходне лекције (улоге, backlog, спринт, четири церемоније) - у виду брзог усменог "квиза" питање-одговор. Затим, у улози Клијента, представи пројекат "ШколскиБифе" кроз кратку, general реченицу циља (нпр. "Желим апликацију која ће ученицима скратити чекање у реду на одмору"), без уласка у детаље - детаље ће дефинисати Product Owner заједно са тимом.
Корак 2: Израда Product Backlog-а (10-15 минута)
Product Owner, уз помоћ целог тима, смишља ставке backlog-а у облику корисничких прича (енгл. User Stories), по обрасцу:
"Као [улога корисника], желим да [радња], како бих [циљ/корист]."
Пример: "Као ученик, желим да видим дневни мени бифеа, како бих знао шта могу да наручим."
Скраћена верзија (за час од 45 минута): Наставник унапред припрема 10-12 одштампаних корисничких прича (видети предлог листе на крају овог упутства), а тим само треба да их прочита и разуме - Product Owner тада директно прелази на приоритизацију.
Product Owner на крају овог корака приоритизује ставке - поставља их на таблу/папир од најважније ка најмање важној.
Корак 3: Планирање спринта - Sprint Planning (10 минута)
Договорите се да ће један симулирани спринт трајати одређени број минута (нпр. 15-20 минута представља "једну недељу" стварног спринта).
Развојни тим, заједно са Product Owner-ом, гледа врх приоритизованог backlog-а и бира онолико корисничких прича колико процењује да може да "заврши" у том временском оквиру. Овде уведи једноставну процену сложености - нека сваки ученик за сваку причу гласа једним прстом (1, 2 или 3), означавајући колико му прича делује једноставно (1) или сложено (3) - ово је поједностављена верзија технике процене помоћу story поена.
Тим на крају договара и циљ спринта (Sprint Goal) - једну реченицу која описује шта желе да постигну (нпр. "На крају спринта, корисник може да прегледа мени и наручи ужину.").
Корак 4: Спринт - симулација рада (15-20 минута)
Свака изабрана корисничка прича постаје задатак на табли, у колони To Do. Пошто ученици (вероватно) не пишу стваран код, "рад" се симулира кроз конкретну, опипљиву активност - за сваку причу тим треба да:
- нацрта скицу изгледа одговарајућег екрана апликације (wireframe) на папиру, и
- напише 2-3 реченице којима описује шта се на том екрану дешава када корисник кликне на дугме, шта апликација "у позадини" ради и слично.
Ученици по завршетку сваке приче померају картицу из To Do у In Progress, а када је скица и опис готов - у Done.
На средини спринта (после отприлике половине предвиђеног времена), Scrum Master заустави рад на 3-5 минута и води кратак Daily Scrum: сваки ученик у једној реченици каже шта је радио, шта планира даље и да ли има препреку. Scrum Master бележи препреке на видном месту.
Идеја за додатни реализам вежбе
На средини спринта, наставник (у улози Клијента) може да "упадне" са малом изменом или новим захтевом (нпр. "Заборавио сам да кажем - мени треба и опција да ученик плати преко апликације"). Циљ овог "изненађења" је да Product Owner и тим на лицу места одлуче да ли то укључују у текући спринт (ризикујући да не заврше све планирано) или то додају у backlog за следећи спринт - што дочарава стварну ситуацију из праксе и концепт заштите обима спринта.
Корак 5: Преглед спринта - Sprint Review (5-10 минута)
Развојни тим представља урађене скице и описе "Клијенту" (наставнику) и осталим ученицима (ако су подељени у два тима). Наставник, у улози Клијента, коментарише - похваљује оно што одговара првобитној идеји, а за делове који не задовољавају очекивања, објашњава зашто и враћа их у backlog за дораду. Ово је добар тренутак да се нагласи разлика између "готово по Definition of Done" (тим сматра да је задатак завршен) и "клијент задовољан" (стваран циљ спринта).
Корак 6: Ретроспектива спринта - Sprint Retrospective (5-10 минута)
Наставник (Клијент) сада напушта просторију/дискусију - ретроспектива је искључиво за развојни тим и Scrum Master-a. Препорука је коришћење једноставне технике "Почни / Престани / Настави":
- Почни - шта би требало да почнемо да радимо, а нисмо?
- Престани - шта нам је одмагало и требало би да престанемо да радимо?
- Настави - шта је добро функционисало и требало би да наставимо?
Scrum Master записује 1-2 конкретна закључка на табли.
Корак 7 (опционо, ако има времена): Други спринт
Уколико је час дужи (спојена два часа), понови скраћену верзију корака 3-6 за други спринт, узимајући у обзир измене договорене на ретроспективи и нове ставке из backlog-а. Ово помаже ученицима да осете ритам понављања који је суштина Scrum-а - управо оно што недостаје код waterfall и V-модела.
Завршна дискусија (5-10 минута)
За крај часа, постави одељењу питања за рефлексију:
- Да ли сте приметили разлику у начину размишљања између улоге Product Owner-а, Scrum Master-а и развојног тима?
- Да ли вам је временско ограничење (тајмер) помогло или одмагало у раду?
- Шта би, да сте имали више времена, урадили другачије?
- Да ли мислите да би за овај пројекат waterfall модел из ранијих лекција функционисао боље или лошије од Scrum-а? Зашто?
Предлог корисничких прича за пројекат "ШколскиБифе"
Уколико се одлучиш за скраћену верзију (Корак 2), можеш ученицима одштампати следеће ставке backlog-а, које они затим само приоритизују:
- Као ученик, желим да видим дневни мени бифеа, како бих знао шта могу да наручим.
- Као ученик, желим да наручим ужину унапред, како не бих чекао у реду.
- Као ученик, желим да платим наруџбину преко апликације, како не бих морао да носим кеш.
- Као ученик, желим да добијем обавештење када је наруџбина спремна, како бих знао тачно када да дођем по њу.
- Као ученик, желим да откажем наруџбину до одређеног времена, у случају да се предомислим.
- Као запослени у бифеу, желим да видим листу свих наруџбина за тренутни одмор, како бих их благовремено припремио.
- Као запослени у бифеу, желим да ажурирам дневни мени и доступне количине, како корисници не би наручивали оно чега нема.
- Као ученик, желим да оставим оцену и коментар на наручену ужину, како би бифе знао шта да побољша.
- Као родитељ, желим да ученику "допуним" виртуелни новчаник у апликацији, како не би морао да носи новац у школу.
- Као администратор школе, желим да видим статистику најпродаванијих артикала, како бих планирао набавку намирница.
Скраћена верзија за час од 45 минута
| Корак | Оригинално трајање | Скраћено трајање |
|---|---|---|
| Увод и подела улога | 10-15 мин | 5 мин |
| Backlog (готове приче, само приоритизација) | 10-15 мин | 5 мин |
| Sprint Planning | 10 мин | 5 мин |
| Спринт (рад + Daily Scrum) | 15-20 мин | 15 мин |
| Sprint Review | 5-10 мин | 7 мин |
| Retrospective | 5-10 мин | 5 мин |
| Дискусија | 5-10 мин | 3 мин |
Код скраћене верзије изостаје други спринт, а Daily Scrum се своди на свега један, кратак круг коментара.