Bevezetés
Egy agilis szoftverfejlesztő csapat felépítése nem olyan könnyű dolog mint amilyennek tűnik. Sok menedzser és csapatvezető felkér pár technikaliag képzett fejlesztőt, ad pár útmutatást az agilis folyamatokról és reménykedik benne, hogy minden olyan jól működik majd mint a szakirodalomban. Ez a felfogás nem csak irreális de hajlamos a bukásra is.
Egy sikeres agilis csapat összetevői
Egy sikeres agilis szoftverfejlesztő csapat tapasztalt fejlesztőkből áll, csapatértékeken alapszik, jó kommunikáció jellemzi és mindig a fejlődést tartja szem előtt. Bár a siker szempontjából nem minden egyes összetevő teljesen kritikus, az összes rendelkezésre állása esetén jelentősen lerövidül a sikerig vezető út.
Vezérelvek
Mindenkinek van elképzelése arról, hogy milyen kultúrát kíván megalapozni a csapatában. Ha csak a menedzser nem kér fel olyanokat akiket nagyon jól ismer, egy kultúrális víziót gyakorlattá fordítani nagyon nehéz feladat. Korán felismerhető, hogy azok a tulajdonságok amelyek nélkülözhetetlenül fontosak: a megbízó fejével gondolkodás, a hatékony együttműködési készség, a tényeken alapuló döntéshozatal és menedzsment, valamint a teljesítés orientáltság. Az a csapat amelyik megtestesíti az előző tulajdonságokat könyebben válhat sikeressé. Ezen csapat tagjai pedig számos előnyös viselkedésmintát mutathatnak fel: közvetlen kérdések a megrendelő felé, megrendelő fejével való gondolkozás, segítség kérés, segítség nyújtás, konkrét tényeken alapuló döntéshozatal személyes vélemény helyett, befejezett és teljes kód leszállítására való törekvés.
Hatékony kommunikáció
A hatékony kommunikácó kritikus a siker szempontjából. Az egyik leghatékonyabb módja a kommunikációnak a szemtől-szembe helyzet. Azaz, sokkal könnyebb kidolgozni ötleteketet ha az emberek egy helyen tartózkodnak. A másik lényegesen fontos szempont a fókuszáltság. A megbeszélések nem tudnak produktívak lenni ha nem rendelkeznek jól meghatározott témával amelyhez a résztvevők ragaszkodnak. A harmadik esszenciális elem, hogy a párbeszéd tényekre és ötletekre fókuszáljon. Ha ez nem történik meg, a párbeszédek könnyen viaskodássá alakulhatnak amelyek személyes véleményekre alapulnak nem pedig tényekre és ötletekre.
Megfelelő emberek
A legfontosabb összetevő a sikeres csapat szempontjából, maga az ember. A szoftverfejlesző csapat tehetséges embereket igényel. Tapasztalt fejlesztők szükségesek komplex rendszerek fejlesztéséhez melyekhez új technológiákat használnak fel. Ilyen összetett rendszerek fejlesztését nem tudja egy vagy két jó ember elvégezni: egy csapat szükséges hozzá. Ugyanakkor a fejlesztők részéről szükség van csapatban végzett munkatapasztalatra is, természetesen.
Folyamatos tökéletesítés
Tudjuk, hogy nagyot bukhatunk ha egy új csapattal egy új rendszert fejlesztünk. A különbség a sikeres és a sikertelen csapat között az, hogy a sikeres képes tanulni a hibáiból. A haladás csak akkor érhető el, ha múlt hibái átvizsgálásra kerülnek és szükséges tökéletesítés végrehajtódik.
A csapat építése
Kommunikációs fókusz
A cég és a csapat szempontjából is fontos a kommunikáció központúság, ezért célszerű az irodát nyitott terekre tagolni. A fejlesztő csapat egy nagy nyitott szobában foglaljon helyet. Minden fejlesztő saját asztallal rendelkezzen de rendeződjenek csoportba, hogy megkönnyítsék a kommunikációt. Ez a nyitott környezet megkönnyíti a kommunikációt mivel az emberek nem rejtőzhetnek el a saját irodájukba és minden beszélgetés publikus. (Lényeges megemlíteni, hogy ha mindenki professzionálisan viselkedik a környezet nem válik zavaróvá és hangossá)
Alapelvek letétele
Csapatépítés során nyilvánvalóvá válik, hogy meg kell határozni azokat az elvárásokat, amelyeket a csapattagoknak meg kell testesíteniük. Kezdetileg a napról-napra történő interakciók sorozatával építhető ki a kívánt csapat-karakterisztika. Ezen jellemzők meggyökereztetésével és szocializációval érhető el, hogy az összes csapattag kellő figyelemmel tekintsen azokra az értékekre amelyek fontosak a siker eléréséhez. A gyakorlatban természetesen eltérő lehet az egyes csapatok jellemvonás kialakítása. Az egyes csapattagok tekintetében is jelentős lehet az eltérés, egyeseknél rövidebb másoknál több munkával érhető el az eredmény. Egyes csapattagok nagyon pozitívak és előfordulhat az is, hogy valaki kifejezetten negatívan viszonyul a folyamatokhoz. Bizonyos esetekben célszerű valakit eltávolítani a csapatból. Érdekes megemlíteni, hogy az interjúk során érdemes a technikai felkészültség mellett a kívánt csapat-értékekre is fókuszálni. Ha szimplán a legfelkészültebb technikai embereket válogatjuk össze, közel sem biztos, hogy a legmegfelelőbb csapatot kapjuk.
Interjúztatás
Olyan technikaliag felkészült embert találni aki tökéletesen beleillik egy működő csapatkultúrába nem éppen könnyű dolog. Egyfelől objektív mérési szempontok segítségével könnyen előszűrhetjük a jelentkezőket. Másfelől ezek az objektív szempontok nem veszik figyelembe a jelentkező soft skill-jeit, melyek nélkülözhetetlenek a csapatban való működéshez. Létezik egy kipróbált gyakorlat ezen képességek hatékony kipróbálására. A felvételi modell ebben az esetben többlépcsős. Az első lépés egy telefonos interjú. Ennek során gyorsan bemutatható a cég a jelentkezőnek, illetve magas szinten lemérhető a jelölt is. A beszélgetés érint pár technikai területet, fejlesztési koncepciót, agilis módszertani ismereteket valamint önálló gondolatokat és tapasztalatokat. A beszélgetés végére elmondható, hogy a jelentkező képes lesz-e az új környezetben működni. Ha a jelölt nem esett ki a szűrőn egy személyes interjúra kap meghívást. Ez az interjú három részre osztódik: technikai, folyamat és személyes részekre. Minden szegmensen legalább két csapattag is részt vesz, mivel nagyon lényeges, hogy a csapat kommunikálhasson a jelölttel. A technikai rész értelemszerűen a nyers technikai tudásra és valós programozási feladatra koncentrál. A folyamat rész többek között teszt filozófiákra, probláma megoldásra és pair programming-ra fókuszál. A személyes rész pedig konfliktus kezelésre, motivációra és általános személyiség jegyekre. Ha mindhárom részen egyöntetűleg jól teljesített a jelölt jól fog teljesíteni a csapatban is.
Folyamatjavítás
A folyamatjavítás a kulcs a sikeres fejlesztőcsapatok építéséhez. Természetesen nem csak a technikai folyamatoké például a kódkészítésé hanem a munka priorizálásé vagy éppen az új ember felvételé is. Több ismert módszer is használható a javításhoz, például a 3x3 -nak nevezett. Ennek során a csapat összeül, minden csapattagnak meg kell neveznie néhány pozitív dolgot az elmúlt 3 hónapból, és néhány negatívat is. Minden csapattag kap 3 szavazati pontot a pozitív csoportra és 3-at a negatívra is. A szavazatok külön elemenként számolódnak. Ezután priorizálva válik láthatóvá mit gondol a csapat pozitívumnak és miket negatívumnak melyeken javítani kell. Ez a módszer segít a csapattagoknak igazodni a csapat karakterisztikához. A folyamatjavítás másik területe lehet például az interjúztatás, hiszen segítségével eleve nem csak technikailag felkészült csapattagot találhatunk, hanem eleve olyat aki jól fog illeszkedni a csapatba. A folyamatjavítás során meg kell találni az egyensúlyt az új folyamatindítás és a régiek módosítása között. Ha bizonyos problémák rendszeresen jelentkeznek meg kell találni az inkrementális változtatás lehetőségét. Ha bizonyos problémák nem rendszeresen jelentkeznek akkor jellemzően érdemes várakozni és többet megtudni mielőtt bármilyen változtatást vezetnénk be.