Professional Documents
Culture Documents
rész)
infokukac.com/2009/12/a-product-backlog-ahogy-mi-szoktuk-scrum-sorozat-2-resz
A Scrum-ról szóló cikksorozatom első részében egy rövid összefoglalást adtam arról, hogy
mik a Scrum alapszabályai. Ígéretemhez híven folytatom azzal, hogy mi hogyan
alkalmazzuk a Scrum-ot.
Mi a product backlog?
Az összes hátralévő funkció listája. Semmi “cicó”, egy sima lista. Semmi hierarchikus
fastruktúra vagy az elemek között ide-oda mutató hivatkozások, függőségek. (Mint
ahogyan egyesek szeretik a követelménykezelést emígyen túlbonyolítani.)
Átutalás,
Számlatörténet lekérdezése,
…
1/7
Mi Excelt használunk. Sok programozó utálja (én szeretem). Soha nem akartam
célszoftvert a product backlog szerkesztéséhez. Meggyőződésem, hogy nem lehet semmi
sem olyan rugalmas erre a feladatra, mint maga az Excel.
(A) azonosító: S-001-től indultunk (“S”, mint sztori). A következő felmerülő sztori
a következő sorszámot kapja.
(B) sztori megnevezése: a sztori rövid megnevezése (pl. “számlatörténet
lekérdezése”),
(C) prioritás: egy szám (súly), ami minél nagyobb, annál fontosabb a sztori, (OK-t
írunk be, ha elkészültünk vele)
(D) sprint: melyik sprintben készült el a sztori (ha már kész van),
(E) becsült sztoripont: egy becslés, hogy az adott sztori mennyi ráfordítással
készül el,
(F) megjegyzés: bármilyen szabad szöveges információ.
(A) Az azonosító
2/7
A sztorik azonosításához az első felmerülő sztorihoz az S-001-et, a következőhöz az S-
002-et s.í.t. használjuk. A sorszám nem utal a prioritásra, csak egy “buta” egyedi
azonosító minden egyes sztorihoz.
(C) A prioritás
Valakik azt mondják, hogy úgy priorizáljuk a sztorikat, hogy ne legyen két olyan sztori,
amely ugyanazt a prioritást kapja. A szándékuk érthető, mert azt szeretnék hangsúlyozni,
hogy adott helyzetben mindig el lehessen dönteni két sztori közül, hogy melyik a
fontosabb. Az én tapasztalatom viszont az, hogy ha sok elemű a product backlog (több
tucatnyi sztori van benne), igencsak macerás egyedi prioritást adni minden sztorinak,
mert a product backlog folyamatosan változik.
Hogyan kezdjük a priorizálást, amikor épp egy nagy számosságú sztorihalmaz előtt ülünk?
Az első sztori, ami szembe jön, legyen – mondjuk – 1000 prioritású. Jöjjön a következő.
Hát, ez kevésbe fontos, mint az előző, legyen ennek a sorszáma 900. A harmadik sztori
vajon milyen prioritású legyen? Az elsőnél nem fontosabb, viszont a másodiknál igen.
Akkor legyen – mondjuk – 950.
Látható, ahogy egyre több sztorit priorizáltunk, egyre nehezebben találjuk meg az éppen
vizsgált sztori helyét a sorban, mert mindig végig kell néznünk az összes már bepriorizált
sztorit. Ezért célszerű inkább mérföldkövek alapján priorizálni. (Mi legalábbis erre
jutottunk.) Ld. esettanulmány a cikk végén.
Amikor egy sztori elkészül, beírjuk a táblázat megfelelő oszlopába, hogy melyik sprintben
készült el. Ezáltal utólag is látható, hogy milyen ütemben készültek el az egyes sztorik. (Pl.
ügyféllel történő találkozáskor.)
3/7
A sprint tervezéssel ellentétben, ahol a csapat közösen becsli meg, hogy az adott sprintre
betervezett sztori hány sztoripontot ér, a product backlog priorizálása közben a
sztoripontozást én magam végeztem. (Mivel elég stabil volt a projekt és a csapat is, ezért
viszonylag egyszerűen (és gyorsan!) ment a dolog. Utólag visszanézve stabilan 20%-kal
felé lőttem a valóságnak, de ez annak is tudható volt, hogy mindig biztonságosan
próbáltam előre több hónapra becsülni.)
(F) Megjegyzés
Ezt az oszlopot csak időnként töltjük, ha úgy látjuk, hogy egy sztori kapcsán felmerült
valamilyen releváns információ, amit célszerű feljegyezni. Akkor használjuk pl. ha a
sztori megnevezése nem elegendő, vagy pl. azt is beleírjuk, ha az ügyféllel előre egyeztetni
kell a sztori kapcsán.
Pár jótanács:
4/7
Ha az ügyfélnek menet közben jön ötlete: semmi gond, bele rakjuk a listába, és
bepriorizáljuk. Ha valóban fontos, akkor sorra fog kerülni, ha nem, akkor elsínylik.
Sokkal jobb annak az optikája, hogy mindent, amit mond, betervezünk, és majd az
idő (és pénz!) függvényében meglátjuk közösen, hogy tényleg belefér-e, mintha
egyből figyelmen kívül hagynánk, amit mond.
Nagy sztorik vannak a product backlog-ban, amiket később lebontunk. Előbb-utóbb
ki fog derülni, hogy vannak-e ilyenek, mert túl nagyok: nehezebben becsülhetőek, és
hogyha mind megcsinálnánk őket, kicsúsznánk az időből.
Sprint (implementáció) közben kiderül, hogy van valami, amire nem gondoltunk.
Ilyenkor két döntésünk van: vagy beleértjük a sprintbe az előre nem tervezett dolgot,
és ezzel a sikeres sprintet kockáztatjuk, vagy pedig új sztoriként bevesszük a
kérdéses elemet a product backlog-ba.
A későbbiekben a tesztelés során is kiderülhet, hogy valamire nem gondoltunk. Nem
arra gondolok, hogy a programozó hibázott, hanem arra, hogy egy probléma
hátterében valójában üzleti probléma áll. Mi rengeteg ilyennel találkozunk.
(A) az ügyfélnek májusban oda kell adni a szoftvert, hogy az ügyfél kulcsoktatói (3
fő) felkészülhessenek az oktatásra,
(B) júniusban kezdőnek az oktatások és egész nyáron át tartanak (a rengeteg
szabadságolás miatt), kb. 90 főt kell oktatni,
(C) október 1-jétől indul egy kéthónapos próbaüzem, amelynek célja, hogy a
felhasználók megállapíthassák, hogy alkalmas-e a szofver az éles használatra, és
kiderülhessenek valós felhasználás közben a szoftver hiányosságai,
5/7
(D) következő év (2009) január 1-jétől indul az éles üzem.
Szeretem ezt a mondatot. Annyiszor hallottam már. A háttérben arról van szó, hogy
mindenki a saját s*ggét védi. A valóság persze ennél sokkal árnyaltabb. Ha a dolgok mögé
nézünk, és ügyesek vagyunk, a mission impossible szituációkat is megoldhatjuk.
A product backlog nálunk akkoriban kb. 100 sztorit tartalmazott. Először elvégeztünk egy
gyors “vágást”, és kizártunk minden olyan sztorit, aminek nem kell még működnie a
2009. január 1-jei éles indulásra. Ezeket elláttuk a 100-as prioritással. Ezzel a vágással a
sztorik egy nagy részét sikerült a hatókörünkből eltávolítani. Minden sztorit, ami nem
100-as prioritást kapott, 1000-es prioritással láttunk el.
A következő lépés az volt, hogy meghatároztuk, hogy mik azok a funkciók, amik az (A) ill.
(B) mérföldkőhöz kellenek (azért így párban, mert viszonylag közel voltak egymáshoz, és
hasonlóak voltak az elvárások a két mérföldkőnél). A cél az volt, hogy azokat a sztorikat
valósítsuk meg addigra, amiket a felhasználók túlnyomó többsége a leginkább használ.
(Az nem annyira baj, ha van egy ritkán használt funkció, és nincs kész. Hiába oktatnák le a
felhasználóknak, mire október lesz, addigra úgyis elfelejtik, és úgyis meg kell nézni a
felhasználói kézikönyvet, vagy meg kell kérdezni a kulcsoktatót.)
A próbaüzemig (C) nagyjából mindennel készen kellett lenni. Ha egy funkciót nem tudtak
leoktatni (mert az oktatások során készültek el, vagy idő közben megváltoztak), azokról
készítettünk egy külön doksit a felhasználóknak.
Az időzítés nagyon fontos volt. Nem lehetett egy olyan rendszert oktatni, ami a
használatba vételig (próbaüzem) a felhasználók zöménél jelentősen megváltozik. Sokat
osztottunk-szoroztunk, sztorikat bontottunk fel kisebb sztorikra, abban a reményben,
hogy az egyik része fontos, a másik nem annyira, végül sikerült egy olyan prioritást
megalkotnunk, amely a mérföldkövekkel egybevágott. Az egyes mérföldkövekhez tartozó
prioritások nagyjából a következők voltak:
A: 1000,
B: 900,
C: 500,
D: 300,
egyéb: 100.
Az érdekesség az volt, hogy még tudtunk játszani azzal is, hogy az oktatások során milyen
sorrendben készüljenek el az újabb funkciók, ugyanis a felhasználók jól elkülöníthetően 3
csoportba tartoztak:
6/7
ügyintézők (kb. 75 fő),
vezetők (kb. 10 fő),
“admin jellegű” felhasználók (kb. 5 fő).
Így sikerült megoldanunk azt a helyzetet, amikor az ügyfél kijelentette, hogy júniusra
minden funkció kell.
7/7