Showing posts tagged scrum

A Scrum bővebben

Korábban már írtam a Scrum-ról. Most találtam ezt a részletesebb leírásomat a témában.

A scrum-ot elsősorban szoftverfejlesztéshez találták ki, de persze máshol is alkalmazható. Azért terjed, mert kezelni tudja a menet közben érkező ügyfél oldali változtatásokat. 1-2 hónapos ciklusokból épül fel a menetrend. A ciklusok elején egy sima listába felírjuk az ügyféllel közösen, hogy mit szeretne/énk elérni a ciklus végére. A listát addig rágjuk, amíg mindkét oldal megérti és ugyan azt érti az egyes feladatok alatt. A feladatokhoz prioritást rendel az ügyfél. Ekkor még csak azt tudjuk tehát, hogy mik a feladatok és az ügyfélnek melyik milyen fontos. Ezután leülünk a fejlesztőkkel és átbeszéljük, hogy melyik feladat milyen konkrét tennivalókra bontható, és melyik tennivaló mennyi órát vesz igénybe. Így kijön, hogy a ciklus végére mennyi feladattal tudunk végezni. Ezzel az infóval visszamegyünk az ügyfélhez és meggyőzzük róla, hogy a listája alján lévő dolgokat ebben a ciklusban nem fogjuk tudni megcsinálni. Ekkor ezt elfogadja, vagy kicsit átpriorizálja, de a lényeg, hogy ennek a megbeszélésnek a végén befagyasztjuk a feladatlistát. Az ügyfél szinte végig jelen van a ciklus tervezésnél, és majdnem minden ponton beleszólhat. Ezzel zárul a tervezés, és megkezdődnek a ciklus hétköznapjai.

A fejlesztők által összeállított tennivalók akkorára vannak szabva, hogy egy embernek kb. 1, max 2 napját tegye ki. A ciklus közbenső napjain mondjuk reggel átbeszéljük az előző napot, ki hol tart, és mit szeretne a tennivalók közül ma megcsinálni. Mindenki kérhet neki tetsző feladatot. Frissítjük a táblázatban, hogy mennyi feladat van hátra, így minden nap pontos képünk van arról, hogy hány órányi munka marad a ciklus végéig.

Ciklus hétköznapjai alatt a feladatlista nem változhat! Se mi, se az ügyfél nem változtathatja meg. Ha erre mégis szükség van, akkor - elvileg - le kéne lőni a ciklust és újra csinálni, persze csak nagyobb változtatásokhoz. A gyakorlatban, ha ilyen szitu van, akkor egyezkedések kezdődnek: ok bevesszük még ezt a feladatot, de akkor ezt meg ezt kivesszük stb. Ilyenkor résen kell lenni a rendszer függőségei miatt.

Fontos, hogy egy feladat az egy komplett feature, egy elejétől a végéig befejezett funkciója a rendszernek, egy olyan dolog, aminek elkészültsége könnyen mérhető. Hiába van meg pl. egy kalkulációs rész logikája, ha nincs rendesen kivezetve a felületre, akkor még nem használható így nincs készen.

Ciklus végén megmutatjuk az elkészült funkciókat az ügyfélnek. Ez konkrétan azt jelenti, hogy fogunk egy projektort és a fejlesztők ki-ki a maga által (vagy pont mások által) készített részt bemutatja, ledemozza. Az ügyfél ezt a prezentációt végignézi és, ha minden megbeszélt feladat elkészült, akkor elfogadja a ciklust. Ez azt jelenti, hogy megkapja a terméket, és fizet az addigi munkáért. Ha nem fogadja el a ciklust, akkor nem kell fizetnie, de (ez is egyezkedés eredménye) esetleg a termék újabb feature-eit sem kapja meg. A fejlesztő cégnek ott a kockázat, hogy 1-2 havi munkáját nem fizetik ki, az ügyfélnek meg ott, hogy 1-2 hónapot vár és esetleg nem kap semmit.

Fontos, hogy a határidők (pl. ciklus vége) nem változtatható. Nincs olyan, hogy megleszünk az összes feladattal, de egy hetet csúsznánk. Olyankor meg kell beszélni az ügyféllel, hogy figy. az a helyzet ,hogy nem lesz meg minden feladat. Lelövöd a ciklust, vagy még így is akarod?

A módszer bizalomra épül. Az ügyfél belelát a munkába. Bármikor megnézheti az előrehaladást a feladatlistában. Ott lesz, hogy ki melyik tennivalót csinálja és mennyi van még hátra. (persze lehet trükközni, kijátszani az ügyfelet, de csak legvégső esetben érdemes.

A felelősségek szerepekre vannak bontva. Van Project Owner-i szerep. Ő képviseli az ügyfelet. Ügyfél oldali döntéshozó. A fenti leírásban ami ügyféllel kapcsolatos feladat azt mind ő látja el. Őt az ügyfél adja. Vele tartjuk a kapcsolatot. Kicsit olyasmi mint egy projekt manager.
Van a Scrum Master szerep. ő a mentora a fejlesztő csapatnak. ő vezeti a reggeli megbeszéléseket. Hozzá fordulnak a fejlesztők ha bármi problémájuk, panaszuk van. Lassú a számítógép, a Józsi nem hagy békén stb. Célja, hogy a csapat hatékonyan működjön. Utasítani nem utasíthat, csak javasolhat, tanácsolhat.
Végül van a Team. Ő a fejlesztő csapat (a scrum master is tagja). Olyan mint egy cserkész őrs: együtt szívunk, együt örülünk. Ha valaki nem dolgozik, vagy elkalandozik, lusta stb. akkor nem az egyén szív, hanem az egész csapat, ha emiatt bebukják a ciklust, tehát a Team szól rá az egyénre, nem egy főnök vagy ilyesmi. A team tartja kézben saját magát.

Nem minden projekt esetében tud az ügyfél egy teljes embert teljes időben a projektre szánni. Ilyenkor van lehetőség rá, hogy a fejlesztő cég adjon Project Owner-t az ügyfélnek. Az ügyfélnek teljesen meg kell bíznia abban az emberben és minden döntési jogkört meg kell kapjon, ezért ez elég ritka. Inkább csak összeszokott partnereknél fordul elő.

Létezik olyan is, hogy kívülről (ügyfél irányból) nem látszik, hogy scrum-mal dolgozik a cég, mert minden szerepet a fejlesztő cég lát el, és kvázi belső projektként kezelik. Belső meetingek vannak a feladatlistát is belül állítják össze. Persze le lehet egyezteti az elkészült feladatlistát. A ciklusok végén lehet prezentációt csinálni. de a ciklus elfogadása/elutasítása már nem tudom hogyan kivitelezhető.

Gondolatok scrum kapcsán

Egyszer összeírtam pár gondolatot a scrum kapcsán, íme.

Hiba átgondolatlanul belecsapni a scrumba, és ettől várni, hogy jól működjön a csapat. Ha felkészületlenül vágunk bele, lehet hogy csak csalódunk, persze kiderül: ha frusztráltak, feszültek maradunk, akkor valamit rosszul csinálunk.

Cserkészet és Scrum párhuzama

A cserkészet egyik alapvető nevelő ereje, hogy hatalmat, és felelősséget kap a gyerek. Ez a nyomás fejleszti a különböző képességeit. Ezért van, hogy 14 éves általános iskolások vezetnek 6-7 fős, 6-8 éves gyerekeket sikeresen.

Ugyan ezt a hatalom és felelősség átruházást látom a scrum-ban, akkor amikor a teamekről beszélünk. Többször elhangzott, hogy a team osztja be az idejét, a team vállalja el a backlog item-eket, ő dönt, hogy mire képes. A felelősséget ezek tekintetében, ugyanúgy megkapja. Vagyis tényleg bebukja a sprint-et, ha félreszámol, rosszul becsüli a teljesítőképességet, de akkor is, ha rosszul méri fel a saját kvalitását, és képtelen valamit elvégezni. Egy ilyen hibának tényleg lehetnek következményei.

A scrum master, pedig nem vezető fejlesztő, vagy felelős vezetője a team-nek, hanem egy különleges tag, aki arra koncentrál, hogy kinek milyen a hangulata, ki milyen személyiség, ki miben erős, vagy gyenge. Nem csak az egyénekről formál véleményt, hanem a csapatról is. A scrum master képes nevelni a csapatot, de nem dönt helyettük. Hagyja, hogy a csapat döntsön magáról. Mivel csapattag, neki is beleszólása van a döntésbe. Azáltal, hogy feladata ismerni a csapatot és benne a tagokat, a tagok hallgatnak rá, mert olyan összefüggéseket láthat, amiket a tagok nem, de nem dönt egyszemélyben.

Fontosabb, hogy a scrum master kb. 50-ig csapattag legyen, aki a csapattal együtt dolgozik, és másik 50-ban legyen scrum master mint az, hogy ő legyen a teamek scrum mastere, és ne legyen egyik csapatnak sem a tagja.

A fejlesztőknek különböző szintjei vannak, azonban egy senior úgyan úgy fejleszt, mint a kezdő. A különbség, hogy több taskot tud megcsinálni a kezdőnél.

Még egy jutott eszembe: amikor a team bebukik egy sprintet, akkor megmagyarázza, hogy miért történt. Efféle számonkérés, megbeszélés eddig is volt nálunk, ehhez nem kell scrum. Ilyenkor jöttek elő, hogy szar volt a spec, nem ment a szerver, ezérazéramazér nem tudtunk hatékonyan dolgozni, és ezzel kb a fejlesztő csapat ki is vonult a felelősség alól. Ennek a scrumban vége, hiszen a scrum master pont azért felel, hogy csak olyan hibák okozhassák a sprint bukását, ami a team tagokon múlott. Ugyanis bármi akadályozza a munkát, akkor egyből szól a tag a scrum masternek, aki közbenjár a megoldásért, vagy az ominózus másik tagnak, ha ő okozza a problémát. Ha nem jelezzük a problémát sprint közben, akkor nehéz a végén arra fogni.

Scrum

Cégünknél bevezettük a Scrum projekt menedzsment módszert. Az átállást leginkább a fejekben nehéz elérni. Hirtelen mindenki alól kihúzták a talajt. Többünknek megszűnik a munkaköre és most fel kell fedeznünk, hogy ebben a módszerben kinek hol a felelőssége.

Sokan leírták már előttem a scrum lényegét. Nekem is van a fejemben erről elég sok minden, de pl. itt találhattok egy értelmes összefoglalót:

http://www.google.hu/search?q=scrum

Belső projekteken keresztül ismerjük meg és csak ezután állunk az ügyfelek elé, szemükbe mondva, hogy vagy alkalmazkodnak a scrum diktálta felálláshoz, vagy viszlát.

Múlt hét végén két teljes napon keresztül oktatáson vettünk részt. Az oktató teljes mélységében bemutatta a módszertant, amit ő a gyakorlatban napmintnap használ.