Agilis szervezeti működés Stylers 2016. április 13. 1 Csutorás Zoltán Adaptive Consulting Kft. zoltan.csutoras@adaptiveconsulting.hu www.adaptiveconsulting.hu http://lnkd.in/bpycgmz https://twitter.com/csutorasz scrummate.hu 2
Azért vagyunk ma itt, hogy elindítsuk a Stylerst egy fejlődési úton. Ezért szeretek a Stylersnél dolgozni Ez néha frusztrál a működésünkben Én azzal fogok hozzájárulni a mai nap sikeréhez, hogy 3 Miért érdekes a mai téma? 100% 29% 9% Bukott Kritikus Sikeres 75% 49% 50% 57% 25% 42% 0% 14% Vízesés Agilis Minden jog fenntartva! Kizárólag a Stylers - 2016.04.13-i tréning résztvevői Forrás: számára! The Chaos Manifesto, Standish Group 2012 4
Hogy érzem magam a munkahelyemen? 100% 14% Egyéb Jól vagy nagyon jól 75% 60% 50% 86% 25% 40% 0% Korábban Agilis bevezetést követően Forrás: salesforce.com 5 Ajánlaná-e másoknak az agilis módszerekre történő átállást? 100% 8% Igen Nem 75% 50% 92% 25% 0% Ajánlaná az agilis megközelítést? Forrás: salesforce.com 6
A követelmények avulása Követelmények érvényességének felezési ideje 10-12 év 2-3 év 6 hónap 1980 2000 2011 7 8 University of Missouri, Kansas City
Mozgó célpont Nem lehetünk biztosak abban, hogy hogyan változnak a körülmények A legfontosabb cél a gyors reakciókészség megőrzése 9 Agilis ernyő Scrum Lean/Kanban Lean Startup extreme Programming SAFe DSDM 10
Scrum 11 Scrum 1993 - Első implementáció : Jeff Sutherland 1995 - Scrum paper : Ken Schwaber 2001- Agile Manifesto 2003 - Első CSM képzés 12
1986 The new new product development game Beépített instabilitás Önszervező projekt teamek Átlapoló fejlesztési fázisok Hirotaka Takeuchi Multilearning Csekély irányítás Tudásmegosztás a szervezet felé Ikujiro Nonaka Rugby módszer 13 Scrum csapat Elkötelezett, erős motivációval rendelkező, állandó csapat Minden, a megvalósításhoz szükséges szakértelem jelen van a csapatban Tanulási hajlandóság Nagyon világos, jól definiált cél 14
Motiváció Cél: tudom, hogy miért dolgozunk. Tudom, hogy mikor győztünk Önállóság: beleszólásom van abba, hogy hogyan érjük el a célt Fejlődés: látom a továbblépést, a fejlődési lehetőséget abban, amit csinálok. A fejlődés örömet okoz! 15 Követelmények helyett célkitűzések! A Scrum csapat folyamatosan célokat tűz ki maga elé és ennek elérése érdekében dolgozik 16
Scrum csapat Aki tagja......és aki nem 17 Fejlesztők Mindenki, aki a termék előállításában tevékenyen részt vesz Szoftver fejlesztők Tesztelők Üzleti elemzők 18
Scrum Master 19 Product Owner A projekt vízióját alakítja ki és kommunikálja a csapat felé Miért fejlesztjük ezt a terméket? Kik fogják használni? Kik fogják megvenni? Miért pont a mi termékünket fogják választani? Mit kell tudnia a terméknek? Mikorra kell tudnia? Mennyit ér meg nekünk a kifejlesztése? 20
Csapat méret Összes ráfordítás azonos méretű fejlesztés elvégzésére 283 167 31 48 69 1-3 fő 3-5 fő 5-7 fő 9-11 fő 15-20 fő Minden Doug jog Putman, fenntartva! QSM Kizárólag (2006), 491 a Stylers projekt, - 2016.04.13-i 2003-2005 között, tréning 1-20 résztvevői fős teamek számára! között, 35.000-95.000 kódsor 21 Scrum Sprint Időkeretbe szorított munkavégzési időszak A Kész kritériumrendszernek megfelelő eredmény előállítása Jól megfogalmazott célja van Sprint tervezés, napi scrum-ok, fejlesztési munka, sprint review, sprint retrospective 22
Scrum Product backlog (termék hátralék) Az a funkcionalitás, amit a termékhez még hozzá kell adni Megvalósítási sorrendben Felhasználói érték megfogalmazásával Az elemek méretére rendelkezünk becsléssel 23 Online merülési napló búvároknak younderwater Octavio Aburto National Geographic http://onebigphoto.com/diver-in-front-of-thousands-of-fish/ 24
Merülés sorszáma Merülés dátuma Összes merült idő a merülés előtt Merülés helyszíne Merülés időtartama Összes merült idő a merülés után Látási viszonyok Legnagyobb mélység Merülőtárs aláírása és minősítése, igazolvány száma Merülés időtartama Megjegyzések 25 YoUnderwater Túrán lévő búvárként rögzíteni szeretném az alapvető merülési adatokat, hogy a papír alapú naplóval egyénértékű információkkal rendelkezzek. Búvárbázis üzemeltetőként a túráimon résztvevő búvárok naplóbejegyzései közül a legjobbakat meg akarom jeleníteni a honlapunkon azért, hogy bemutathassam, hogy mennyire jó merüléseket szervezünk. Merülésvezetőként hitelt érdemlő bejegyzések alapján szeretném látni, hogy a búvárcsapatom tagjai mennyire tapasztaltak, hogy tudjam mire számíthatok a merülés során. YoUnderWater tulajdonosként hirdetési felületeket akarok árusítani, hogy a hobbibúvár ipar szereplőitől reklámbevételhez juthassak. Hobbibúvárként fényképeket és videókat akarok csatolni a merülési naplóbejegyzéseimhez azért, hogy az élményeket színesebben megörökíthessem. 26
Product backlog jéghegy Sztori Sorrend Eposz Méret 27 Product backlog Túrán lévő búvárként rögzíteni szeretném az alapvető merülési adatokat, hogy a papír alapú naplóval egyénértékű információkkal rendelkezzek. Búvárbázis üzemeltetőként a túráimon résztvevő búvárok naplóbejegyzései közül a legjobbakat meg akarom jeleníteni a honlapunkon azért, hogy bemutathassam, hogy mennyire jó merüléseket szervezünk. Merülésvezetőként hitelt érdemlő bejegyzések alapján szeretném látni, hogy a búvárcsapatom tagjai mennyire tapasztaltak, hogy tudjam mire számíthatok a merülés során. YoUnderWater tulajdonosként hirdetési felületeket akarok árusítani, hogy a hobbibúvár ipar szereplőitől reklámbevételhez juthassak. Hobbibúvárként fényképeket és videókat akarok csatolni a merülési naplóbejegyzéseimhez azért, hogy az élményeket színesebben megörökíthessem. 28
Merülés dátuma Merülés sorszáma Összes merült idő a merülés előtt Merülés helyszíne Merülés időtartama Összes merült idő a merülés után Látási viszonyok Legnagyobb mélység Merülőtárs aláírása és minősítése, igazolvány száma Merülés időtartama Megjegyzések 29 Túrán lévő búvárként rögzíteni szeretném az alapvető merülési adatokat, hogy a papír alapú naplóval egyénértékű információkkal rendelkezzek. Megfelelés feltételei A következő adatokat akarom rögzíteni: legnagyobb mélység, merülés időtartama, helyszíne, sorszáma, összes merült idő, merülőtársam neve és igazolása, merülőtársam minősítése, szabad szöveges megjegyzés. Ha szabálytalan merülést akarnék rögzíteni, akkor a rendszer figyelmeztessen erre. Ettől függetlenül bármilyen merülési adatot rögzíthessek. Választhassak hogy méterben, vagy lábban akarom rögzíteni a merülés mélységét. A merülés rögzítését bármikor félbeszakíthassam, majd később folytathassam. A következő bejelentkezéskor kiválaszthassam, hogy a félbeszakított rögzítést akarom folytatni, vagy egy új merülés rögzítésébe kezdek. Demó forgatókönyvek Bekapcsolom a mobil alkalmazást és egy új merülés rögzítésébe kezdek Megpróbálok szabálytalan merülési adatot rögzíteni (pl. éjszakai merülés, 45m mélységgel) Félbeszakítjuk a rögzítést (1) rögzítés közben felhívnak telefonon (2) draftként rögzítem a merülést 30
A rendszer frissíti a merülésem sorszámát és az összes merült időmet minden rögzített merülés után. Választhatok, hogy milyen mértékegységben akarom rögzíteni a merülési mélységet. A merülés alapadatait (helyszín, legnagyobb mélység, időtartam) tudom rögzíteni egyetlen mértékegység használatával. A rendszer figyelmeztet, ha szabálytalan merülési adatokat akarok rögzíteni. Túrán lévő búvárként rögzíteni szeretném az alapvető merülési adatokat, hogy a papír alapú naplóval egyénértékű információkkal rendelkezzek. Böngészni a tudom a korábbi merüléseim adatait. Félbe tudom szakítani egy merülés rögzítését. Keresni tudok a korábbi merüléseim között. Megoszthatom a merüléseimet más búvárokkal. Rögzíthetem a merülőtársamat. Ha ő is a rendszer felhasználója, akkor az ő naplójában is megjelenik ez a merülés. 31 Backlog grooming Product backlog elemeinek rendszerezése, kifejtése, szétbontása, összevonása, priorizálása. 32
A product backlog táplálása Menedzsment Support Értékesítés Fejlesztő team Marketing Kiemelt ügyfelek 33 Priorizálás 34
Szórakoztató, vagy hasznos legyen ez a tréning? Inkább szórakoztató Egyik sem igazán v. Mindkettő egy kicsit Inkább hasznos 35 Milyen legyen a tréning? Hasznos 36 Szórakoztató
Fix kategóriák Sürgős Fontos Kritikus Normál Alacsony... 37 ScrumMate 38
Becslés 39 Mekkora fejlesztési munka ez? Túrán lévő búvárként rögzíteni szeretném az alapvető merülési adatokat, hogy a papír alapú naplóval egyénértékű információkkal rendelkezzek. 40
Miről szól a becslés? Nincs értelme precíznek lenni, amíg azt sem tudjuk, miről beszélünk. A nagyjából helyes jobb, mint a precíz de hibás Neumann János John Maynard Keynes 41 Fontos fogalmak Becslés : a feladat nagyságrendjét igyekszünk meghatározni Tervezés : a feladat végrehajtásának várható ütemezését alakítjuk ki Vállalás : a feladatok elvégzésére vállal felelősséget a csapat Mérés : a megvalósításhoz kapcsolódó tényeket értékeljük 42
43 Story points 1/2 1 2 3 5 8 20 13 40 44 100
2 3 5 8 13 Product Backlog 45 Így csináltuk 46
Becsüljük meg 1 2 3 Backlog elem Méret Elolvasni és megérteni egy 10 oldalas összefoglaló cikket az agilis szoftverfejlesztésről a menedzser magazinban. 3 Elolvasni és megérteni egy 5 oldalas tudományos szakmai cikket az agilis szoftverfejlesztésről. A nagynénid fodrászüzletet vezet és interneten keresztüli foglalási rendszert akar bevezetni. Írni egy kezdeti product backlogot, ami alapján tendereztetni tudja a lehetséges beszállítókat. 4 Elolvasni egy jelentkező önéletrajzát és felkészülni a vele folytatandó állásinterjúra. 5 Készíteni egy 60 perces összefoglaló előadást erről a tréningről a munkatársaimnak. 6 Letakarítani ennek a tárgyalónak az ablakait kívül-belül. 7 Elolvasni és megérteni egy 200 oldalas, angol nyelven írt könyvet az agilis szoftverfejlesztésről. 8 Udvarias elutasító levelet írni egy állásajánlatra. 1, 2, 3, 5, 8, 13, 20, 40, 100, 200 47 Planning poker 48
Sebesség Mekkora mennyiségű feladatot képes a csapat elvégezni adott időszak alatt? 49 ScrumMate 50
Scrum Sprint backlog Egy cél, amit a sprint végén el szeretnénk érni A product backlog kiválasztott elemei Cselekvési terv arra, hogy mit kell tennünk a cél elérése érdekében Vállalás arra, hogy a célt a csapat el fogja érni 51 Scrum Sprint tervezés A sprint backlog összeállítása Célkitűzés megfogalmazása Feladatlista összeállítása Kapacitás ellenőrzés és vállalás megtétele Sprint ready 52
Sprint tervezés 2 3 5 5 3 2 3 3 5 1 3 5 3 53 Scrum Sprint tervezés 2. fázis A csapat tervet készít arra, hogy hogyan fogja megvalósítani a kiválasztott backlog elemeket és hogyan fogja elérni a sprint célját A csapat ellenőrzi, hogy van-e elég kapacitása a projekt terv végrehajtásához A csapat elvállalja a terv végrehajtását 54
A PO minél gyorsabban biztosítani akarja a felhasználók számára a regisztrációt, hogy minél több felhasználótól gyűjthessen be valós visszajelzéseket. Elfogadási kritériumok A felhasználói azonosító legyen egyedi A jelszót kérjük be kétszer és ellenőrizzük az egyezőséget, hogy a felhasználó véletlen jelszó elgépeléssel ne zárhassa ki magát a rendszerből A felhasználóktól kérjük be az email címüket, hogy kérdőíveket küldhessünk nekik a felhasználói tapasztalatokról A regisztráció a lehető leggyorsabb legyen, hogy ne ijesszük el a potenciális érdeklődőket a regisztrációtól (pl. Google, Facebook regisztráció) Regisztrációs felület grafikai tervezése Email regisztrációs felület megvalósítása Email regisztráció back-end megvalósítása Integráció és integrációs tesztek Google Account regisztráció megvalósítása Facebook regisztráció megvalósítása Tesztelés, javítás 55 Scrum task board Várakozik 43 Folyamatban Kész! 6 5 Feladat elvégzéséig hátralévő becsült munkaóra 3 3 5 2 5 10 4 56
ScrumMate 57 Napi Scrum Scrum A sprint cél elérése érdekében összehangolni a munkát Minden nap, ugyanott, ugyanakkor Maximum 15 perc Mit értem el az előző napi scrum óta? Mit tervezek elérni a következő napi scrum megbeszélésig? Látok-e bármilyen akadályt, ami veszélyezteti, hogy elérjük a sprint célját? 58
Team board Várakozik 29 Folyamatban 11 Kész! 2 6 3 5 3 6 3 5 2 5 10 4 59 Team board Várakozik 29 21 Folyamatban 11 9 Kész! 3 1 3 5 2 5 10 4 60
Burn-down chart 45 40 35 30 25 20 15 10 5 1 2 3 4 5 6 7 8 9 10 61 Sprint review Jó terméket fejlesztünk? Scrum Jól haladunk? Sprint retrospective Hogyan lehetnénk jobbak, mint csapat? Hogyan lehetnének jobbak a folyamataink? 62
Termék demo A sprint során elkészített termék funkciók bemutatása Visszajelzés gyűjtés Jó terméket fejlesztünk-e? 63 Retrospective Mennyire jók a folyamataink? Milyen hibákat követtünk el? Hogyan működünk, mint csapat? Mit teszünk azért, hogy jobbak legyünk? 64
Mutatószámok Végfelhasználói elégedettség, NPS Sikeres / nem sikeres sprintek Mozgó átlagsebesség : SP/Sprint Rendszerben lévő ismert hibák száma Végfelhasználók által felfedezett hibák száma Veszteségeket jelző mutatók alakulása (svn revert szám, ToDo kommentek száma a kódban, részletes tervezéstől az élesbe állításig eltelt átlagos idő) 65 Terv felülvizsgálat Mekkora a projekt mérete? Változott-e valami a termék koncepcióban? Mekkora az átlagos sebességünk? 66
Scrum Működő termék bővítmény Minden sprint végén bemutatható eredmény Tesztelt, hibamentes többlet képesség A Kész! fogalmának konzisztens, szigorú kezelése 67 Definition of Done Konzisztens kritériumrendszer a Kész fogalmára Fejlesztés kész Fejlesztői teszten átment Automatizált tesztekkel lefedve Integrációs teszten átment Demo környezetbe telepítve Dokumentálva Felhasználói elfogadási teszten átment Éles környezetbe telepítve 68
ScrumMate 69 Kanban 70
Lean alapelvek Érték A vevő számára hasznos értékek felismerése és azonosítása Tökéletesség Hibamentes termelés, a folyamatok állandó javítása Veszteségmentes értékáram Csak az értéket termelő tevékenységek megtartása Húzóelv Akkor állítsuk elő, ha szükség van rá: reagálóképesség az igények változására Áramlás A termék megszakítás nélkül haladjon a munkafázisok között a vevő felé 71 Szoftverfejlesztési veszteségek Felesleges funkciók Extra papírmunka, újratanulás Részben elkészített munkák Feladat váltás Információ tologatás Várakozás Hibák +1 kiaknázatlan kreativitás 72
Kontextus váltás 100% Feladatvégzéssel töltött idő aránya 80% 60% 40% 20% 0% 1 2 3 4 5 Párhuzamos feladatok száma 73 Clark and Wheelwright (1993) Áramlás Felmérés Megvalósítás Teszt/javítás Dokumentálás Telepítés Funkció Funkció Funkció Funkció Funkció 74
14 Cumulative flow 12 10 9 kész elem 8 6 4 Ciklusidő 5 nap WIP : 5 elem Felmérés Megvalósítás Tesztelés, javítás Dokumentálás Telepítés Kész! 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 75 Készletezés Felmérés Megvalósítás Teszt/javítás Dokumentálás Telepítés Funkció Funkció Funkció Funkció Funkció Funkció 76
14 Cumulative flow 12 10 8 6 Felmérés Megvalósítás Tesztelés, javítás Dokumentálás Telepítés Kész! 4 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 77 14 Cumulative flow 12 10 9 kész elem 8 6 4 Ciklusidő 5 nap WIP : 5 elem Felmérés Megvalósítás Tesztelés, javítás Dokumentálás Telepítés Kész! 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 78
Húzó elv és a WIP korlát Ne engedjük a készletek felhalmozódását! Felmérés Megvalósítás Teszt/javítás Dokumentálás Telepítés 3 2 1 1 3 Funkció Funkció? Funkció Funkció! Funkció 79 ScrumMate 80
Scrum és Kanban összehasonlítása 81 Feladatok számának korlátozása ToDo Doing Done 82
Feladatok számának korlátozása 2 2 2 Kiválasztva Előkészítés Megvalósítás Teszt/Javítás Kész! 83 Egy tábla, egy csapat ToDo Doing Done 84
Több csapat/tábla is lehet 2 2 2 Kiválasztva Előkészítés Megvalósítás Teszt/Javítás Kész! 85 Agilis kontrolling 86
Ütemterv Projekt előrehaladás 100 SP/sprint 87 Projekt követés Projekt előrehaladás 1200 1150 Projekt méret 1120 1100 1100 1050 1000 1000 1000 1000 960 1050 1030 980 880 800 770 660 600 580 480 400 400 280 200 150 100 0 0 0 1 2 3 4 5 6 7 88 8 9 10
Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 89 Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 90
Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 91 Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 v=100 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 92
Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 v=50 600 Átlag (100, 50) 75 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 93 Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 v=130 Átlag (100, 50, 130) 93,3 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 94
Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 720 600 350 v=120 Átlag (100, 50, 130, 120) 100 100 (150) 0 1 2 3 4 5 6 7 8 9 10 95 Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 520 350 v=80 Átlag (50, 130, 120, 80) 95 100 (150) 0 1 2 3 4 5 6 7 8 9 10 96
Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 97 Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 98
Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 99 Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 100
Burndown bar chart Backlog Hozzáadott Sebesség 1100 850 600 350 100 (150) 0 1 2 3 4 5 6 7 8 9 10 101