2015. március 10., kedd

Agile - Az ellenállás nyomában

Ha arra szeretnénk a lehető legtömörebben rávilágítani miért övezi oly gyakran ellenállás és elutasítás az agilis gondolatot, akkor nehezen találhatnánk kifejezőbb ábrát, mint ez itt.







Mert az Agile lényege a változás. A tökéletességre való törekvés egy végtelen, soha véget nem érő utazás, ahol minden domb, minden hegycsúcs mögött újabb meghódítandó távlatok sejlenek fel. Lehetne még jobban csinálni? Tesszük fel szüntelen a kérdést, és megpróbáljuk. A hasznosnak bizonyult dolgoknak örülünk, azok lesznek a mi “legjobb gyakorlataink”. És nem félünk megválni a haszontalanoktól, a károsaktól, a hátráltató tényezőktől. Szerencsére sosem a nulláról indulunk, mert aki erre az útra lépett, az általában szívesen osztja meg a saját történetét. Mert a felfedezés örömét továbbajándékozni mindenkor nagyszerű érzés.

Az Agile minden szereplőre feladatot ró, és mindenkitől ugyanazt várja el: fejlődj és légy egyre jobb, egyre hasznosabb. Nem vagy tökéletes, és ha azt hiszed már nincs hová fejlődnöd, akkor valószínűleg valójában már olyan alacsonyan vagy, ahonnan nem fog többé kirángatni sem az Agile, sem más.
A változást nem elég a körülötted lévőktől elvárnod. Magaddal kell kezdened! Légy akárhol a hierarchiában. Meg kell változnod, és ezt már nem odázhatód tovább el!    

Agilis bárki remekül lehet egymagában. De az igazi erő egy agilis csapatban lakik. Egyrészt mert az ember (még a legintrovertáltabb programozó arc is!) alapvetően szociális lény. És bizony nincs annál nagyobb inspiráció, amikor látod, hogy így, ezzel az attitűddel dolgoznak körülötted, és az egésznek hasznos és tevékeny részese vagy. A közös erőfeszítéssel elért siker képes összekovácsolni az embereket, és nagyszerű élményt adhat a résztvevőknek. Csodálatos érzés a közös alkotás öröme. Így lesz egymás mellé sodródott emberekből igazi csapat. Idáig eljutni, maga a változás.

De minden egyes szereplő, aki nem képes felnőni ehhez a szinthez, az egyben már a puszta jelenlétével is tönkreteszi az egész játékot. (Ezért mondják, hogy nem lehet csak a csapat egy része agilis…)
A valóság azonban ennél is sokkal kegyetlenebb, mert a nem agilis szereplők ritkán érik be a “puszta jelenléttel” való tönkretétellel, hiszen általában fenyegetésként azonosítanak majd. Mert szükségszerűen vagy - a hozzáállásod révén - sokkal jobb náluk.

Ezzel meg is érkeztünk az egyik okhoz, ami miatt az Agile gyakran ellenállásba ütközik. Egy hagyományos cég gyakran rendkívül primitív szellemiséggel rendelkezik. A "pozícióban lévők" az Agile egyik legfontosabb paradigmaváltását gyakran nem értik, nem élik és nem érzik át. Ez pedig a kiáltvány azon része, amely azt mondja hogy az "egyének" a fontosabbak.  Közérthetőbben vagy félreérthetetlenebbül megfogalmazva: a szoftverfejlesztés (mint bármely más kreatív alkotómunka) nem sorozatos reprodukció, nem betanítható műveletsorok pontos, tervszerű ismétlése, hanem kompetencia alapú alkotó tevékenység. Mindennek tetejében a világ jelenleg legnagyobb ütemben fejlődő, leggyorsabban változó, átalakuló kompetencia halmazára épül.
Ezért a programozó nem helyettesíthető bármikor egy másik, az adott műveletsorra betanított személlyel. Ez a szemlélet egyértelműen megbukott a szoftverfejlesztésben immár évtizedekkel ezelőtt. Az Agile egész mást mond, és a végletekig egyértelműen fogalmaz a legtöbb idevágó metodikai módszer is: általában kis létszámú, produktív és önszerveződő csapatról beszélnek. Ez a csapat önmagában produktív, annak révén, hogy együttesen birtokolják a termék előállításhoz szükséges kulcs kompetenciák összességét. Tehát minden személy egyformán fontos a team-ben, bedrótozottan inkább mellérendelő viszony van. (Ideális csapatban minden szereplő szuper-kompetens a saját területén.)

Mindez alól nem képeznek kivételt a menedzsmentet alkotó és a követelményeket szállító szereplők sem. Értéküket kizárólag két elsődleges tényező határozza meg: a produktivitásban és a termékminőség (termék-hasznosság) elérésében betöltött szerepük. A menedzser vagy a szervező nem főnöke magától érthetően senkinek sem a team-ben! Illetve a hierarchiát, és az egyes szereplők értékét a birtokolt kompetenciáik fontossága, azok minősége határozza meg. Továbbá a produktivitás, legtöbb esetben a csapatmunka szempontjából hasznos személyes, emberi tulajdonságaik összessége. A szerepek pedig az önszerveződés révén, menet közben alakulnak ki, kompetencia alapon és nem autoriter módon. Ezt legszebben eddig egy angol nyelvű preziben láttam leírva, amely a codereview-ról szólt: 
"The only true authority stems from knowledge, not from position."
És a lényeg tulajdonképpen ennyi. Ezt az egy mondatot kéne megérteni, felfogni, és komolyan venni. Egy hagyományos cég gyakran sokkal alacsonyabb szellemiséget birtokol annál, hogy mindezt megértse. A hagyományos (szoftverfejlsztő) cégekben a menedzsment gyakran pozícióért megküzdött egykori "öreg" fejlesztőkből áll, akik gyakran egy primitív és téves karrierképen szocializálódtak. Ez  azt sugallja, hogy a "kitört" fejlesztőkből idővel menedzser, szervező lesz, és a lúzerek maradnak csak programozók. Ezzel szemben én azt tapasztaltam, hogy az ilyen környezetben a nem megfelelő kompetenciákkal rendelkező, vagy lusta, de persze erőszakos személyiségjegyeket mutató, törtető  programozók mennek el az említett irányokba. (Egyik előbb felsorolt tulajdonság sem hasznos egy igazi Agilis-csapat számára!) És általában szükségszerűen nem megfelelően látják el a feladatukat (hiszen eleve a munka elől menekültek oda). És valójában egészen más elsődleges képességeket igényel az ezekben a szerepekben való sikeresség, mint ami a programozáshoz szükséges.

Mindez gyakran azzal a tévképzettel párosul, hogy a “jobb” programozók egy idővel már “csak” terveznek, és nem "kódolnak", azt majd a tervek alapján “beverik” a "kóderek". (Aki valóban követi egyes mai fontosabb keretrendszerek, eszközök, nyelvek fejlődését annak aligha kell magyarázni mindennek a nonszensz voltát.) Ha nem programozol akkor exponenciálisan növekvő ütemben tudsz majd semmit a valódi, élő programozásról. A programozás egy olyan gyakorlati tudomány, amelyben a gyakorlat és az elmélet a lehető legnagyobb átfedést mutatja. És iszonyatos tempóban fejlődik... 
Általában valami pontosan meg nem határozott követelményeket kielégítő, legtöbbször több generációnyi programozás-elméleti lemaradást mutató, szöveges leírások és ábrák (jobb esetben UML-diagramok), egyvelegeként előálló katyvasz szokott lenni a "terv". Ami persze nem specifikál egy csomó implementációs igényű részletet, már csak azért sem mert a nagyszerű "kiemelkedett" programozó kolléga már évek óta nem írt egy sor programot sem, és gyakran az alapvető dolgokkal sincs tisztában az ez idő alatt meg pofátlanul és hihetetlen mértékben tovább fejlődött fejlesztőeszközök, keretrendszerek és programozási technológiák vonatkozásában. Így egy idő után már nem is nagyon szoktak erőlködni, ha mégis, hát abban is ritkán van köszönet... Az ilyesmiben kódolva van a bukás, ha egy picit belegondolunk, és nem csak azért mert teljesen ellentmond az összes elterjedt Agilis elemnek/módszertannak...

Na, egy ilyen környezetben az Agile halálra van ítélve, mert ezek az emberek nem fognak lemondani a kiváltságaikról, és ki tudja hány év kényelmes lustálkodás után keményen dolgozni egy olyan környezetben, amelyben deklaráltan a produktivitás szempontjából hasznos kompetenciák birtoklása révén juthatnak csak kulcspozíciókba.
De egy ilyen szervezet maga is halálra van ítélve. Amint megjelenik egy megfelelő szintű vállalati kultúrát mutató konkurrens szereplő, természetesen esélyük sem lesz felvenni a versenyt velük.

És nem véletlenül beszélek ezen a ponton már vállalati kultúráról. Ki akar megváltozni? Aki nem teszi fel a kezét, arra nincs szükségünk. Ha tulajdonos, esetleg felső vezető vagy, az Agile nem kímél téged sem. Feladatokat ró rád! Hogyan tehetnénk még jobbá? Egy ponton túl már a világról, az életről, az egészről beszélünk. Minél komolyabb ember vagy, annál több a kötelesség, annál több a kötelezettség... Mindezt persze már nem az Agile “találta fel”. De végső soron ez az egész mozgalom emberileg, erkölcsileg, olyan viselkedésformákat és magatartást kényszerít, amelyekről évezredek óta tudja az emberiség jobbik fele, hogy helyes.

Éppen ezért azok a bizonyos "modern vállalatok" nem irigyek. Nem hiszik azt, hogy a tudást ők birtokolják és nem a személyek, akik a produktív szervezetet alkotják. Ezért tisztességesen bánnak a szereplőkkel. Nagyon gyakori, például, hogy felkarolják a munkatársaik ötleteit, arra bátorítják őket, hogy álljanak a saját lábukra, alapítsanak saját céget, dolgozzanak “főállásban” azon, amiben megtalálják önmagukat, a kihívást, az örömüket, az életüket. Miért teszik, ezt a látszólag logikátlan lépést? Mert látják a nagyobb képet a háttérben. Nem félnek nagyban játszani. És nem félnek áldozatot hozni a nagy célok érdekében. Nagyon gyakran anyagilag is áldoznak minderre, vagy egyéb társadalmi jobbító célokra.  
Egy hagyományos vállalat, gyakran nagyon messze van mindettől a szinttől. Különösképpen igaz mindez, egy olyan speciális (posztkommunista) környezetben, ahol a nemrég végbement “eredeti tőkefelhalmozás” folyamata még nagyon erős társadalmi és vállalati torzító tényezőként jelentkezik.    

Ezért indulnak lépéselőnyből az ilyen környezetben azok az általában kizárólag kompetencia alapú, gyakran egyetlen erős innovatív ötleten alapuló, és többnyire súlyos tőkehiánnyal küzdő, induló vállalkozások, amelyeket Startup-nak szokás nevezni. Ezek szervezeti felépítését nem köti gúzsba egy megkövült és gyakran hamis, szervezeti hierarchia. A kompetencia alapú önszerveződésnek nem állja útját, a mozdíthatatlan status quo-k átláthatatlan és hasznossági kritériumoknak ritkán alávetett rendszere.
Ezek a fiatal vállalatok természetes módon szerveződnek Agile-szerűen. És talán ez az oka, hogy az igazán nagy sikereket hazánkban nem azok a tőkeerős vállalatok érték el, amelyek minden izzadtsága ellenére sem sikerül világszínvonalút és igazán maradandót alkotniuk. Hanem kompetens és elkötelezett szereplők csapattá szerveződése révén alakuló névtelen, induló vállalkozások. Bizonyára nem kell senkinek bemutatni a Prezi-t, a UStream-et, vagy a hazai startup éra többi ismert szereplőjét. És már itt is van az újabb magyar világsiker a L!BER8, amely tanítanivalóan profi szervezés után, egy nap alatt behúzta a 40 000 $-ros Indiegogo kampányát és jelenleg valahol 200%-on áll!

Mert vannak területek, ahol az elkötelezettség, a kompetencia, és persze az ezekre épülő ötlet, többet ér bármilyen szervezetnél, és infrastruktúránál. És szerencsére a szoftveripar és határterületei mindennek a közepébe esnek. Az Agile pedig segít minket a helyes gondolkodás és vislelkedési formák kilakításában. Nem ismerem a L!BER8 csapatát, de így kívülről elnézve az egészet nem lepne meg, ha a résztvevők közül jónéhányan közelebbi barátságot ápolnának az Agilitással és az ehhez kapcsolódó vállalatszervezési elvekkel.
Végső soron az lett volna mindennek a poszt sorozatnak a célja, hogy mindenkit egy ilyen baráti viszony kialakítására bátorítsak. Különösen azokat, akik szoftver fejlesztéssel foglalkoznának...

2015. január 5., hétfő

Agile - Új vállalat prototípus


A múltkor a Google-re terelődött a szó, úgyhogy megragadom az alkalmat, hogy a Google-ön keresztül megfogjam az AGILE sikerének egy másik fontos okát, amely nélkül nem válhatott volna, azzá ami napjainkban.




Azon friss szemléletű cégek megjelenése és felemelkedése, amelyek prototípusának a Google-t tekinthetjük, nagyban hozzájárultak az agilis szemlélet sikeréhez. Az a presszió, amit ezeknek a cégeknek újszerű gondolkodásmódja, a hagyományos nézetekkel szakító szemlélete, és az iparági paradigmák/gyakorlatok/módszerek  megújításában vállalt aktív szerepe, és persze ezekkel (is) elért  sikeressége, jelentett a hagyományos szereplőkre, egyértelműen segítette az AGILE felemelkedését, globális elterjedését. Hiszen mindezzel a többi szereplőt is az eszmei frissítés felé terelték. Remekül megfigyelhető ez például a Microsoft 2000-es években kezdődő és napjainkra kibontakozott fejlődési pályáján.
De mi is az, amit a Google illetve a vele jelképezett szereplők hoztak az iparágba? Meggyőződésem, hogy elsősorban az, hogy nem érték be kizárólag a hagyományos szemlélettel: “egy vállalat célja, hogy profitot termeljen”. Ha megnézzük Google kezdeti történetét, akkor mintha ez nem számított volna annyira. De ez természetesen nincs így. Mindegy, milyen célból termelsz profitot, mert a lényeg, hogy anélkül nem maradhatsz életben mint gazdasági szereplő. A Google is profitra tört, még ha kezdetben ezt a saját túléléséért is tette. Nem sokon múlt, hogy a Google-t, még “csak” mint forradalmi keresőmotort, felvásárolják a kibontakozó internetgazdaság akkorra már erős szereplői, és nagyon sok minden másképp lenne ma. Szerencsére a dinoszauruszok fő erénye nem a gyors felfogás, és néha mire észreveszik, már átalakult a táj körülöttük.  
A fő különbség nem is a profithoz való hozzáállásban van, hanem hogy nem érték be ennyivel. Többet akartak, átfogóbb filozófia mentén szerveződtek. A világot akarják jobbá tenni, gondoljunk a Google mottójára: “Don’t be evil”... Tudom, hogy vannak hangok, amelyek aggódnak ezen szereplők túlzó technológiai, gazdasági és pénzügyi hatalmáért. Hogy egy olyan szegmensben diszponálnak túl koncentrált mértékben erőforrások fölött, amely az élet egyre fontosabbá váló területe. Egyre szélesebb tömegek egyre nagyobb és rendezettebb adatait birtokolják. Aggódnak a szabályozatlanságért, a “fékek és ellensúlyok hiányáért”. De az igazság az, hogy ezek a cégek mindeddig sokkal felelősségteljesebben viselkedtek, mint a választott vezetőink. A rendelkezésükre álló erőforrásokat sokkal okosabban és hatékonyabban használják fel, sokkal inkább a köz javára, mint a kormányaink, akiknek ez alapvető kötelességük lenne. A felhalmozott pénzbeli tőkét pedig sokkal kisebb mértékben vonják ki a működő gazdaságból, mint a hagyományos nagy pénzügyi alapok. Mintha kevésbé lennének irigyek, és én egyelőre nem látom nyomát az erőkoncentrációra és a megszerzett javakkal való visszaélésre alapuló dinasztiák alapításának.   
A vállalati kultúra egy nagyon magas szintjét képviselik, amely szélesebb aspektusban is megállja a helyét. Amelynek a középpontjában mintha az ember állna, ez pedig a hangzatos szlogenek mögött nagyon ritkán van valóban így napjainkban. Fel fogok sorolni pár a Google-re jellemző gyakorlatot. Mindenki gondolkodjon el rajta, hogy milyen messze van ettől (és miért) az a cég amelyben tulajdonos, vezető, vagy alkalmazott.
Talán a legközismertebb tény a kutató nap. Ez az egyetemi életből átvett szokás, ahol a tudományos munkatársaknak - az egyéb kötelezettségek mellett - heti egy munkanapot biztosítanak a saját tudományos munkájukra. Igen a Google-alkalmazottak a héten egy napot olyan projekten dolgozhatnak amelyet nem a cégtől kaptak feladatnak, hanem a személyes ötletükből, érdeklődésükből fakad. Számos ilyen projekt nőtte ki magát Google termékké, melyeknek sikerének gyümölcseit az eredeti ötletgazdák/alkotók gazdasági értelemben is élvezik. Mert a munkád gyümölcse, ha az a Te személyes tudásodra, a képességeidre, a befektetett erőfeszítéseidre és az elkötelezettségedre épül, nem a céged kizárólagos tulajdona. Azt nem lehet megvenni a munkabérrel, mert az értéke felbecsülhetetlen. Diszponálsz fölötte, birtoklod és tulajdonlod. És ez akkor is így van, ha  a munkaszerződésed mást állítana...
Aztán ott van a tervezett feladatok ráfordítására használt 2-es szorzó. Jól érted. Ha egy feladatot várhatóan kb. 4 óra alatt tudsz elvégezni, akkor arra 8 órád lesz. Cserébe a munkádnak a tudásod legjavát kell reprezentálnia mindig és minden körülmények között. És még valami: ha felfedezel egy hibát (mindegy kié, mert ugye csak közös hibák vannak: “a kód mindenkié”), vagy találsz valamit, amit jobbá tudnál tenni, akkor gondoskodnod kell annak publikálásáról, megszüntetéséről, megjavításról. Nem kell feltétlenül neked megoldanod, bár a felfedezett hibánál sokkal értékesebb a felfedezett és megoldott hiba. Ezt az azonnali, a mindennapi tevékenységbe ágyazott hibajavítást a szoftver fejlesztésben Törött-ablak alapelvnek  (Broken Windows Principle) hívják. Biztos fogok még bővebben szólni erről, mert nagy kedvencem, és egyébként is a szoftverfejlesztésben a különféle alapelvek és minták meghatározó jelentőségűek. Azt fejezik ki, hogy tudatos tevékenység amit csinálunk és nem esetleges. Minden amit teszünk, és annak, hogy miért úgy tesszük, annak oka van. De most egyelőre a Google-nél tartunk.
Talán kevésbé köztudott, de a Google emellett arra bátorítja a munkatársait, hogy napi 8 órát dolgozzanak. Azt mondják, hogy az tényleg munka legyen, 100%-on, intenzíven, de utána menj és élj. Éld meg, élvezd az életed, légy boldog. És pihend ki magad. Nem, nem hülyék. Csak szeretnék fenntartani, hogy a munkatársaik örömmel, kipihenten és maximális elszántsággal vetik magukat abba a 8 óra munkába. Holnap is, és holnapután is. Talán az ingyen kaja, a jó fizetés és a többi dolog miatt ez is oka lehet, hogy a Google mindig favorit  a legjobb munkahely választásokon.
Van olyan, hogy valamit meg kell oldani. Határidő van, valami nem működik, keresünk egy hibát, amit mielőbb meg kell szüntetni. Ilyen egyszerűen van. Én programoztam már párszor 30 körüli órát egyfolytában, nem esett jól, és a vége felé már biztos nem volt semmennyire hatékony, de kellett. Nos, a Google-nél van egy szabály: nincs megtiltva a túlóra globálisan, talán nem is lehet, egyszerűen vannak vis maior helyzetek. De az a szabály, hogyha elrendeled egy beosztottadnak, hogy maradjon bent és dolgozzon egy problémán, akkor te is bent maradsz és dolgozol ugyanazon a problémán.
Lehetne még sorolni, de a lényeg talán látszik. Bátran mennek szembe sztereotípiákkal, felelősségteljesen és tisztességesen gondolkodnak, emberközpontúan. Jól bánnak az emberekkel, mert képesek felfogni, hogy ők a legértékesebb erőforrás amivel rendelkeznek. És talán azért is, mert az ahogyan bánsz az emberekkel, az meghatározza, hogy mennyit érsz, hogy tisztességes vagy-e. Képesek túllátni a pillanatnyi érdekeken. Nyitottak. Mindezt nem az egyének szintjén, hanem a vállalati kultúra szintjén. Nem akarnak mindenből pénzt csinálni, képesek látni a “nagyobb képet”.
A Google-nél és a hozzá hasonló cégeknél rengeteg csapat használ agilis elemeket. Nem csak metodikai, de programozási elemeket is kell ezalatt érteni. Vannak olyanok, amelyeket ők dolgoztak ki. És mindaz amit a tudás megosztásról, a széles közösség bevonásáról,  a szerzői jogokkal kapcsolatos szemléletről és a többiről mondtam az előző posztban azt a legteljesebben komolyan veszik. A Google fenntart számos ezzel kapcsolatos szolgáltatást. Ott van a Developers amely rengeteg minden: a Google számos WEB-es API-jától indulva, az általuk fenntartott CDN-en át, egészen a Startup-támogatásig. Benne a Code, amely ingyenes project hosting szolgálatás open source projektek számára. De mindez, vagy ez a szemléletmód nem csak a Google-re jellemző, hanem mindazon cégekre, amelyek prototípusaként a Google-t használtam.
Hogy hozzak egy szép magyar példát (vagy, ha magát az Open Academy-t veszem akkor inkább kettőt!): volt szerencsém a tavalyi developer AO-n meghallgatni Tóth Szabolcs előadását a Javascript Modul Server-ről. A lényege nagyon leegyszerűsítve, hogy egy WEB-site-on hogyan kezeljük a JavaScripteket, és szolgáljuk ki hatékonyan és biztosan a kliensek (webböngészők) ezek iránti igényét. Függőség feloldás, verziókezelés built-in. Cool stuff. Ezt a Ustream saját magának fejlesztette, egy létező probléma kezelésére, amelybe minden komoly WEB-es portált üzemeltető vállalat beleütközik majd. De ingyenesen, forrással együtt elérhetővé tette a megoldását. Itt lehet beszerezni. De számtalan példát lehetne citálni...
Az ilyen vállalatok nélkül az AGILE ma biztos nem tartana  ott, ahol tart. De maga a programozás sem. És a legszebb az egészben, hogy biztos vagyok benne, hogy ezek a vállalatok sem tartanának ott az AGILE nélkül, ahol vannak.
Mindez nem csak közvetlenül ezen cégek berkeiben hasznosul, hanem átalakítják a többi szereplő gondolkodását is. Egyrészt, talán már említettem: az AGILE tényleg működik! És emellett a tény mellett azért elég nehéz elmenni, ha komolyan veszed magad.
De van egy másik ok is. Az iparág nagyon jelentős szakemberhiánnyal küzd. Egyszerűen globálisan nem áll rendelkezésre annyi magasan kvalifikált, a szakmájának teljes mértékben elkötelezett szakember, amennyire szükség lenne. Ilyen helyzetben pedig egyetlen vállalat sem teheti meg, amely igazán jó munkaerőt akar alkalmazni, hogy ne vegyen át a haladó vállalati kultúrából, a mögötte rejtőző filozófiából. És végül nem tehetik meg, hogy ne vegyenek tudomást az AGILE-ről. Egyszerűen azért, mert ezek a magasan kvalifikált szakemberek régóta az agilitásban élnek. Ezért is azok, akik. Ők maguk az AGILE jelene és jövője. És köszönik, de már többé nem óhajtják lejjebb adni ennél.