Közérthetően és őszintén az agilis módszertanokról

Agile blog

Skillek és csapatok

2016. február 10. - Bodó Árpád Zsolt

A legtöbb hozzászólás eddig a “Scrum versus egyéni fejlődés, karrierút” postunkhoz érkezett. Köszönjük a hozzászólóknak az aktivitást, mivel az évvégi hajrában elmaradtunk a válaszadással, most hadd reagáljunk komment helyett inkább egy teljes postban.

Szerző: hrgy

"Csupán annyit jelent, hogy ne az határozza meg, mit csinálunk, hogy mire van emberünk, hanem az, hogy mire van szükségünk az üzleti sikerhez. "

Jujj, ezt nagyon gyorsan tisztaba kell tenni, mert eleg nagy gondok szoktak abbol szarmazni, hogy ezt emberek szo szerint veszik, es olyasmiket is bevallalnak projektbe, amire egyaltalan nincs szakertelem a csapatban.
...

Köszönjük a pontosítást! Az eredeti cikk a csapatban már meglévő skillekről szólt, a teljesen hiányzó tudásról nem szóltunk, bár valóban fontos kérdés. Amennyiben a felmerülő üzleti igények új szaktudást igényelnek, a következő szempontokat szoktuk figyelembe venni:

  • Biztosan kényszerítő erejűek a körülmények? Például ha egy java fejlesztőcsapat kap egy feladatot, amit python-ban kell megcsinálni, honnan jön ez az igény és valós-e?
  • Ha igen, akkor kérdés, hogy milyen sűrűn várható a jövőben ezt az új tudást igénylő feladat, illetve mennyi a betanulás költsége. Ha a betanulás drága, de ritkán lesz ilyen feladat, egyszerűen nem éri meg - túl nagy lesz az opportunity cost. Ebben az esetben érdemes a feladatot átadni másnak, akár cégen kívül is. De akár, ahogy hrgy a hozzászólása folytatásában írja, a feladat elengedése is opció.
  • Ami tovább árnyalhatja a döntést, az az új feladat elvárt minősége. István kedvenc példája, hogy ha egy 2 hétig élő promóciós website-ot fejlesztünk, amin termékvonalkódokat lehet feltölteni és ezzel pólót nyerni, ez egy olyan termék, aminél az elvárt minőségi szint nem feltétlen kell, hogy magas legyen. Rövid életű termék, tehát a továbbfejleszthetőség nem fontos, és valljuk be, nem is olyan kritikus termék, hogy egy-két hibától összedőljön a világ. Ellenben ha egy vakbélműtétet végző robotot programozunk, egészen más az elvárt minőségi szint. Az elsőhöz hasonló esetekben akár még a “pár óra google” utáni összetákolt megoldás is elegendő lehet - csak tisztán kommunikáljuk, mit lehet és mit nem lehet elvárni az elkészült terméktől.

Szerző: tnsnames.ora

Nekem más problémám van a posztbeli üzenettel. Nekem nagyon hiányoznak a számok.
Létezik egy valid(?) prekoncepció, hogy gazdaságilag a projekt szempontjából így lehet a legolcsóbb, csak sosem látom hozzá a valós és teljeskörű, pláne projektekre is aggregált visszaméréseket. Számok nélkül ködszurkálás is lehet az egészből: "vagy talált vagy nem".

A projektmódszertanon, megrendelőn, illetve gazdasági lehetőségeken felül vannak egyéb komponensek is a teljes rendszerben: pl:: résztvevő emberek és jövőik. Több lesz-e az ember és jövője avgy sem az ilyen szemlélet mentén? Akar-e, tud-e erre bárki is figyelmet fordítani? Arról nemis beszélve létezhet-e elfogadható optimum, pláne konszenzus, a felmerült szempontok felett?

Személyes tapasztalataink vannak a kérdésekkel kapcsolatban, sajnos publikálható (élő NDA-kat nem sértő) számaink nincsenek. És természetesen nincs is egyértelmű szabály sem, minden helyzet egyedi és átfogó megértést igényel. Vannak viszont konkrét példáink, amik segíthetnek alátámasztani az álláspontunkat:

  • Az “így lehet a legolcsóbb” mellett fontos szempont az is, hogy így lehet a leggyorsabb. Dolgoztunk olyan, 4 fős termékfejlesztő csapattal, ahol a termék négy modulra volt bontva, és mindegyik modulnak volt egy felelőse; csak ahhoz értett. A Product Owner minden sprint planningen küzdött, mert egyszerűen az üzleti célok és igények nem egyenlő arányban oszlottak el a négy modul között, volt olyan modul, aminek a fejlesztését a következő negyedévben egyáltalán nem tervezték. Természetesen nem akarták elengedni a megbízható fejlesztőt, aki az aktuálisan alacsony prioritású modul felelőse volt; szerencsére a csapat is gyorsan megértette a problémát, nyitott volt a változásra és mindenki megtanult egy másik modult.
  • Résztvevő emberek és jövőik” - A fenti példában ugyanabban az eszközben fejlesztett modulokról van szó. Ilyenkor is felmerülhet az ízlés kérdése - van olyan fejlesztő, aki csak back-endet, vagy csak front-endet szeret fejleszteni. Azokban az esetekben viszont, ahol már más eszköz megtanulása a kérdés, ez még nehezebb lehet. Személyesen ismerünk olyan ex-blackberry fejlesztőt, aki ha annak idején nem lett volna nyitott arra, hogy megtanuljon androidot fejleszteni, most lehet, hogy munkanélküli lenne. Ha elengedjük azt a - szerintünk irreális - célt, hogy mindenki mindenhez értsen, és behelyettesítjük azzal, hogy minél több csapattag minél több dologhoz értsen, akkor tapasztalatunk szerint megfelelően kommunikált célok mentén, a megfelelő körülmények (idő, támogatás, energia) biztosítása esetén a csapattagok nyitottá tudnak válni a tanulásra.

Hisszük, hogy létezhet pillanatnyi optimum, de mivel változó világban élünk, az ideális skill-elosztás is változhat (ahogy az első komment is utal erre). Erre megoldásként mi a skill matrix-ot szoktuk használni:

  • összegyűjtjük, hogy milyen technikai és soft skillek szükségesek a csapatban
  • minden csapattagnál bejelöljük, mennyire ért az adott témához - saját bevallás alapján, de a csapaton belül szinkronizálva, hogy reális képet kapjunk

Ez alapján látszik, milyen tudás hiányzik, mi az, ami megvan, de kockázatosan kevesen értenek hozzá. Fontos viszont, hogy csak akkor működik a skill matrix, ha rendszeresen - mondjuk negyedévente - frissítjük. Mind az aktuális tudásszinteket, mind pedig a szükséges skill-ek listáját.

Tréningen egy közismert csapatra elkészített skill matrix-szal szoktuk bemutatni az eszközt:

skillmatrix_copy.jpg

Agile és Lean

Közismert tény, hogy az agilitás Lean gyökerekkel rendelkezik. Sajnos azonban a kölcsönvett Lean alapelvek csak implicit kerültek beemelésre a módszertanba, eredeti formájuk elveszett. Emiatt lehet az, hogy úgy látjuk, a Lean a legtöbb esetben nem kap elég hangsúlyt és tudatos fókuszt agilis átállás / bevezetés során.

Leginkább a következő esetekben szokott felmerülni a Lean:

  • amikor egy csapat rájön, hogy a Scrum nem megfelelő módszertan nekik, ezért elkezdenek Kanbanozni (“Lean Kanban”)
  • amikor a szervezetben felmerül az igény, hogy az agilitás kezdjen el az IT-n túl is terjedni a szervezetben (“Lean Software Development”, pl.: value stream mapping, silóbontás)
  • olyan skálázási módszertan bevezetésekor, ami készítői szerint Lean technikákat használ (pl.: SAFe)
  • vagy teljesen függetlenül az IT-től, amikor például egy bank szeretné a folyamatait optimalizálni.

Természetesen mind a négy helyzetben lehet érték. Még több értéket kaphatunk azonban a módszertantól, ha rögtön az elejétől kezdve tudatosan kimondjuk és követjük a Lean alapelveket is. A Lean központi gondolata, hogy a szervezet célja maximális értéket teremteni és szállítani az ügyfeleinek, miközben a folyamatokban lévő veszteséget, felesleget (waste) minimálisra csökkenti, úgy, hogy ezalatt egy öntanuló-önfejlesztő céges kultúrát épít fel és tart meg.

Az értékteremtés megjelenik az Agile Manifesto első alapelvében: “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software”.
Az önfejlesztés pedig az utolsóban: “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly”.
A veszteségminimalizálás kapja a legkisebb hangsúlyt. A Scrum - ha jól implementáljuk - nagyon erős abban, hogy a termékfejlesztés legnagyobb potenciális veszteségét kiküszöböljük, mégpedig azt, hogy olyan terméket fejlesztünk, ami utána nem kell senkinek. Erről szól a rendszeres szállítás és feedback.

Mindhárom pont tovább erősíthető azonban a tudatosság növelésével, Lean technikák beemelésével. Ezért is működünk együtt az IdeaLean Consultinggal, amely a szolgáltató cégek Lean tanácsadójaként az agilis bevezetési projekteket is segíti. Mindák Ildikó közérthető, közvetlen hangvételű Lean blogját szeretnénk ajánlani nektek: idealean.blog.hu. Jó olvasást! :)

Csapat, vagy csak csoport?

Gyakori jelenség a csapat (team) és csoport (group) fogalmának keverése. Fognak néhány embert, azt mondják nekik, hogy ti egy csapat vagytok, esetleg még közös irodába is ültetik őket, aztán várják a csodát. A csoda pedig nem jön. Mert annak, hogy egy csoport csapattá váljon és akként is működjön, feltételei vannak:

  • Közös cél. Egy pék, egy festőművész és egy ipari alpinista sohasem lesznek csapat. Mindhárman fontos, értékes munkát végeznek, de nem tudják egymást támogatni a feladatuk elvégzésében és nincs közös céljuk. Haverok lehetnek, de csapat soha. Egyesek közös feladatnak, mások közös küldetésnek (mission) nevezik ugyanezt.
  • Tiszta keretek, korlátok. Divatos kifejezés az önszerveződés az agilitásban, de veszélyes. Az egyértelmű keretek nélküli önszerveződésből káosz lesz. A csapatnak tudnia kell, milyen kérdésekben dönthet, miben nem, illetve milyen folyamatok mentén működhet együtt a szervezet többi részével. A legegyszerűbb példa a sok cégnél ismert törzsidő fogalma: mi az az idősáv, amikor a munkahelyen kell tartózkodni?
  • Hatalom. Szerencsétlen fordítás, az eredeti angol authority kifejezés jobban leírja, miről van szó. A csapatnak kell legyen joga az előbb említett korlátokon belül, saját hatáskörben döntéseket hozni. Kézenfekvő scrumos példa a feladatkiosztás: a csapat a napi standup meetingen megbeszéli, melyik csapattag melyik feladattal fog foglalkozni. A csapaton kívül ebbe senkinek nincs beleszólása.
  • Stabilitás. A gyakran változó összetételű csoport soha nem válik csapattá. Idő kell az embereknek ahhoz, hogy megismerjék egymást emberileg és szakmailag, megtanuljanak együtt dolgozni, kialakítsák a saját munkamódszereiket, nyelvezetüket, stb. Minden alkalommal, amikor valaki csatlakozik a csapathoz, vagy kiválik belőle, ez a folyamat újraindul.

A fenti feltételek megteremtésén túl is van pár trükk, ami segíthet felgyorsítani a csapattá válást:

  • Identitás. Nem véletlen, hogy sok csapat nevet választ, ez erősíti az összetartozás érzését, segíti a megkülönböztetést a “mi” és a “többiek” között.
  • Fizikai környezet. Az agilis team-ekre jellemző rengeteg low-tech vizualizációs eszköznek (information radiator, story map, kinyomtatott chartok, stb.) az információ megjelenítésén kívül az is nagy haszna, hogy egyedivé, otthonossá teszi a csapat területét.
  • Közös erőforrások. Közös, de a csapat számára allokált erőforrások, melyek beosztása a csapat felelőssége és feladata. A fizikai környezethez hasonlóan a “miénk” élményt erősíti.
  • Értékek. Közös értékek, nem csak vezényszó vagy marketing jelmondatok, de közös értelmezés által is szintén segíthetnek összehozni a csapattagokat.

Acceptance Criteria vs Definition of Done

Egy időre megtörve a korábbiakban vizsgált cikk elemzését, pár, sokszor félreértett fogalom tisztázásáról szeretnénk írni nektek. Kezdjük rögtön az Acceptance Criteria és a Definition of Done kérdésével. Sok csapat keveri a kettőt: D.o.D-nek hívja azt, ami valójában az A.C., és ami ennél sokkal nagyobb baj; a D.o.D. az ilyen csapatoknál teljesen hiányzik.

Akkor tekintünk késznek egy backlogelemet, ha mind az Acceptance Criteria-nak, mind a Definition of Done-nak megfelel. A kettő között a különbség az, hogy az A.C. azoknak az egyedi feltételeknek (elfogadási kritériumoknak) a gyűjteménye, amik csak az adott backlogelemre vonatkoznak, míg a D.o.D. azon közös feltételek gyűjteménye, amit minden egyes feladatnak teljesíteni kell a készség kimondásához.

Nézzünk egy konkrét példát!

Legyen a termékünk egy mobilalkalmazás, ami kottaolvasás gyakorlásában segíti a felhasználókat. A termék backlogjának egy eleme lehetne a következő user story:

Én, mint kezdő zongorista
Szeretnék violin- és basszuskulcsban írt kottákon is gyakorolni
Azért, hogy mindkét kulcsban megtanuljak blattolni.

A story Acceptance Criteria-ja lehet pl.:

  • A gyakorlás indításakor az alkalmazás megkérdezi, milyen kulcsban szeretne gyakorolni a felhasználó (violin / basszus)
  • A hangjegyek elhelyezése a kiválasztott kulcsnak megfelelő
  • A kotta scrollozása közben a kulcs nem scrollozódik, fixen látszik a sor elején
  • stb.

Mivel a Definition of Done a teljes termékre, a termék minden backlogelemére vonatkozik, abban általánosabb elvárások vannak, pl.:

  • Minden változás be van commit-olva a fő branchbe
  • Minden felület megfelel a UX guideline-nak
  • Az alkalmazás minden képernyője mind portrait, mind landscape módban használható (a teljes képernyőtartalom látszik, minden interakció elérhető, …)
  • stb.

A Definition of Done-ban mi a következő 6 kategóriát szoktuk megkülönböztetni:

  • Kódminőségi elvárások
  • Fejlesztői tesztelési elvárások
  • Funkcionális tesztelési elvárások
  • Dokumentációs elvárások
  • Általános üzleti követelmények
  • Nem-funkcionális követelmények
süti beállítások módosítása