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.

2014. december 9., kedd

Agile - Sikerre ítélve

(A felhasznált rajz Angelina Benedetti munkája.)
A lehető legjobb helyen, a lehető legjobbkor éltek. Nem csoda, ha hőssé lettek. (Leia Organa nyomán)

Azt ígértem a múltkori posztban, hogy rátalálok majd azokra a pozitív és reménykeltő elemekre, amelyek többek között az AGILE sikeréhez is hozzájárultak.  

Nagyon fontos komponens az egészben, maga az internet mint kommunikációs színtér. Az iparág szereplőihez természetesen közel állt a világháló, készség szinten használták az ezzel kapcsolatos eszközöket, maguk is újabbakat gondoltak ki és alkottak meg. Az információk széles körben sokakhoz eljutottak. Ezek a mozgalmak pedig nyitottak és befogadóak voltak. Nem csak az AGILE komponenseivel volt ez így, számos fontos szabvány, vagy szoftveres összetevő gyakorlatilag nyílt levelezőlistákon, vagy egyéb nyilvános platformokon formálódott, nem csak széles közönség szeme előtt, de gyakran aktív közreműködésével is. Sokszor maguk a forráskódok, vagy legalábbis a prototípusok is nyilvánosak voltak. És egyre inkább azok ma is.
Mindez nagyban segítette a szereplők egymásra találását, a gondolatok terjedését és formálódását. Az egész nagyon hasonlított egy tudományos/akadémiai mozgalomra. Csak sokkal szélesebb tömegeket érhetett el, és mentes tudott maradni a tudományos világ árnyoldalaitól: a tekintélyelvűségtől, a dogmatikus szemlélettől és az ezzel való küzdelemre elpazarolt energiáktól. A szereplők nagyon gyakran a személyes meggyőző erejük, a tudásuk, a kompetenciáik, agilitásuk és a gondolataik kidolgozásába, publikálásába fektetett erőfeszítéseik révén nyerték el a státuszukat. Hogy ki milyen rangot birtokolt a hagyományos tudományos/szakmai életben nem volt annyira jelentős szempont.
A viszonylag nagy publicitás és az aktív szereplők magas száma egyfajta automatikus demokráciát hozott, amely erősítette a fentieket. Vannak persze legendássá vált nevek a mozgalomban, de az AGILE mindig is egy széles bázisú, sokszínű és szerteágazó mozgalom tudott maradni, amiből nem emelkedtek ki autoriter, és dominanciára törő szereplők. Vagy saját jellemük nagysága, vagy a széles bázisú közösség korlátozó hatása szabott gátat az ilyesminek.
Illetve még egy dolog: az AGILE mindig is eredménycentrikus volt ("A működő szoftvert..."). Ez pedig egyfajta hasznosnak bizonyult evolúciót hozott a mozgalomba. Azok a szereplők és elemek tudtak felemelkedni, amelyek tényleges eredményeket voltak képesek felmutatni, amelyek a mozgalom széles bázisa előtt bizonyítani tudták hasznosságukat/helyességüket.
És az egészben az a legjobb, hogy az egész a mai napig, sőt egyre inkább így működik. Nem csak az AGILE, a dev-szektor  egésze. Világosan kell látnunk, hogy az elmúlt tíz évben, nem csak egyszerűen szemlélet váltás történt. Nem csak arról van szó, hogy új publikációs felületeket vettünk birtokba. Egész egyszerűen egy új, önszerveződő, és ezáltal önjáró, tudományos színtér jött létre, egy tudományos élet és közösség. Egy megkerülhetetlen intézmény, amely nem szorul rá, hogy intézményesítsék. Amely egy olyan biztos, stabil alapot, tömegbázist jelent, amellyel jelenleg egyetlen más tudomány sem büszkélkedhet. Ez önmagában biztosítani fogja az elkövetkező évtizedekre is, hogy az IT és benne elsősorban a szoftveripar a leggyorsabban fejlődő, és legfontosabb, az élet számtalan területére közvetlen és közvetett hatást gyakorló (vagy kikényszerítő)tudományterület maradjon.
Ennek az új tudományos életnek legfontosabb értékei: a nyilvánosság, a tudás bárkinek hozzáférhető módon való valódi megosztása. Kontrolált (moderált) lehetőség a konstruktív hozzászólásra, a vélemény nyilvánításra, sőt nagyon gyakran a tényleges tevékeny közreműködésre. A szerzői jogok maximális tiszteletben tartása, ugyanakkor aprópénzre váltásának elutasítása, illetve ezen értékek közösségre való önkéntes és természetes átruházása. Lásd: A “nevezd meg” elvet számos licence típusban, a tudományos életből átvett a blogokban és publikációkban akkurátusan használt forrás hivatkozások, és a különféle szabad/nyílt/publikus licence típusok részletei (MIT, Appache, CC, stb.).
A modell nem csak egyszerűen működik, hanem döbbenetesen életképes. Olyannyira, hogy szerintem nem vagyunk messze attól időtől, amikor minden tudomány területen kikényszerítődik ez a modell. Egyszerűen azáltal, hogy a dogmatikus szemléletmódot levetkező szereplők, olyan hatékonyság-növekedést érnek majd el, amelynek ellensúlyozására nem lesz többé elegendő a hagyományos erőforrások birtoklásából fakadó materiális erőfölény. Ez elsősorban az információk megosztása, és a széles bázisú együttgondolkodás, a közösségi alkotás élménye révén következik majd be.
A szoftveripar persze ebből a szempontból (is) kivételes helyzetben volt/van, így nem véletlenül vált elsővé. A materiális eszközkészlet szükséglete viszonylag alacsony (mondjuk egy komplett vírus laborhoz vagy egy részecskegyorsítóhoz képest), illetve ez az eszközkészlet is nagyon olcsóvá, igazi tömegcikké vált a szegmens fejlődésével. Az interneten pedig annak megalkotásával párhuzamosan szinte magától állt elő a kritikus publikációs tömeg.
De a modell működőképességére más területeken is lehet már egy-egy elszigetelt példát találni. Nálunk is hír volt például az internet segítségével forradalmi hasnyálmirigyrák-tesztet kidolgozó tinédzser esete. Az információ rendelkezésre állásán (elérhetőségén) és a relevancia-alapú kereshetőségén túl, egyelőre fontos komponense a sikernek a projektnek végül laboratóriumi kapacitást biztosító professzor. (A 200-ból 1!) Aki hajlandó volt a dogmatikus tudomány megszokott határain kívülre merészkedni. Nincs messze az idő, amikor már meggátolni sem lesznek képesek többé mindezt.
Az információnak azonban nem csak rendelkezésre kell állnia, sőt nem csak kereshetőnek, de relevánsan kereshetőnek kell lennie. Mit sem érne az interneten felhalmozott tudás a programozás, vagy bármely más tudomány vonatkozásában, ha nem lennénk képesek releváns találatok formájában rájuk bukkanni. Azaz azokat találni meg relatíve elöl, amelyek valós és fontos információtartalommal bírnak. Mindezt pedig a Google-nek köszönhetjük. Fent már volt szó a tudományos élethez hasonló hivatkozásokról, forrás megjelölésekről, és hogy ezek milyen fontos szereppel bírnak. A Google “Page-rank”-nek nevezett kereső algoritmusa egy nagyon sok elemet tartalmazó, összetett rendszer, de minden bizonnyal az egyik legfontosabb elem benne a súlyozott hivatkozások rendszere. Amely röviden valami olyasmit jelent, hogy nem a hivatkozások puszta száma dönt, vannak fontosabb és kevésbé értékes hivatkozások, ahogy a tudományos életben is. Az Index Tech-rovat nem olyan fontos, mint az MIT Technology Review.
Az interneten nem csak ott van a programozással kapcsolatos tudományok anyaga, de ez a tudomány egyenesen bő egy évtizede itt születik, egyszerűen itt zajlik. Az akadémiai-tudományos gyakorlatból a forrás megjelölés gyakorlatát teljes mértékben átvette, és praktikusan az interneten ez egy link formájában történik.
Mindez pedig a “Page-rank”-kal kiegészülve azt eredményezi, hogy az előállt ismeretanyag relevánsan kereshető, dinamikus, folyamatosan fejlődő, illetve a terület evolúcióját reprezentáló tartalomként jelenik meg az interneten. Amelyet a Google keresőrobotjai (és a persze a mögöttük lévő hatalmas számító kapacitás), a sok ezer szerző nap mint nap elvégzett munkájára építve, sokkal hatékonyabban tartanak karban, mint amire bármilyen tudományos testület képes lenne.
És nem csak hatékonyabban, de sokkal kíméletlenebbül is. Itt senki nem fogja nézni, hogy kinek hány publikáció, milyen fokozat és díj járna a szokásjogok és folyóméterek alapján. Egyszerűen lesznek működő és igaznak bizonyult dolgok, amiket ez a széles bázisú tudományos közönség méltónak talál, és lesznek amik elsüllyednek, zömmel ezek sem érdemtelenül.
Hát valahogy így működik ez. És aki a saját tudományterületén áttörést akar kicsikarni, az minden erejével azon legyen, hogy az az adott tudomány az internetre költözzön. Ne, ne megjelenjen rajta, hanem ott történjen. Annak minden következményével együtt. Nyilvánosan. Hozzáférhetően. Cenzúrázhatatlanul, uralhatatlanul, elszabadulva, önálló életre kelve.
Mert elárulok egy nagy titkot: ez a végső és egyetlen oka, hogy ma a legfontosabb és leggyorsabban fejlődő tudomány az IT és benne a programozás.
Amióta én az eszemet tudom ilyen szempontból, azóta a tudományos-jóslatok szerint folyamatosan ugyanolyan távolságra vagyunk a Moore-törvény végéhez (~10 év). De az ember Marsra szállásához is (~30 év). És itt nem az évek száma a lényeg. Hanem az ellentétes irányú, és jelentéstartalmú konvergencia. Ha ma elkezditek, akkor csak 15 év lesz a lemaradásotok. Igen, forradalomról beszélek a tudományos életben. Mert ez az ami végbement a programozás körül. Nem több és nem kevesebb. Hát ez is az AGILE.



Nagyon jó, hogy a Google is szóba jött. Mert ez lesz a további mondandóm fő sorvezetője. De az már csak a következő alkalommal, mert a terjedelem a nyakunkra tekeredik. Nem tudom Borcsánál átmegy-e, több mint 3 oldal… Elvégre nem regény szeretne ez itt lenni, hanem egy laza poszt a reggeli kávédhoz, esetleg morfondírozni való az esti szörfözés közben.

2014. november 30., vasárnap

Agile - Sikerre ítélve?

(A felhasznált rajz Angelina Benedetti munkája.)
"A lehető legrosszabb helyen, a lehető legrosszabbkor éltek. Nem csoda, ha hőssé lettek." - Leia Organa, Alderaan szenátora 











Azt ígértem az előző posztban, írok pár gondolatot azokról a körülményekről, amelyek az AGILE sikeréhez nagy mértékben hozzájárultak.

Az AGILE születésében nagyon fontos komponens, hogy az egész iparág olyan súlyos kihívások előtt állt a 90-es évek végére, amelybe több ponton is beleroppanni látszott.     Ennek oka egyrészt a számítástechnikai vívmányok tömegcikké válása, másrészt az internet és a telekommunikáció robbanásszerű elterjedése és fejlődése volt.
Számos ebből az időből származó tanulmány rámutat az iparág egyes konkrét szegmenseinek sikertelenségére, a legismertebb ilyen talán a Chaos Reports.

Ezek a kudarcok pontosan olyan tévhitek tarthatatlanságát  hozták a felszínre, amelyekkel hamarosan az AGILE is leszámolni készült. Egyre többen beszéltek nyíltan a Waterfall, és a hagyományos menedzsment módszerek problémáiról. A hagyámányos nagyvállalati összetett modellek a végtelen túlgondoltságuk és túlszabályozottságuk ellenére - vagy talán éppen ezért - számos sebtől véreztek/véreznek. Mindebben talán csak az egyik tényező a módszertan, a másik a szereplők hozzállása és az elkötelezettségük mértéke lehet.

De nem csak a módszertanokkal volt probléma, hanem magával a programozással és az ezt alakító nagy szereplőkkel is. Egyáltalán nem véletlen hogy a SUN felemelkedése a Java-val is erre az időszakra esik. Gondoljunk arra is, milyen általános megítélésnek “örvendett” ezekben az időkben például a Microsoft vagy a más hasonló nagy nevek az iparágban, amelyekkel szemben a Linux-világ és a szabad-szoftver, illetve a programozásban az open-source mozgalom zászlót bontott. 
Vagy ott vannak a szintén ez idő tájt kibontakozó digitális szabadságjogokért/szabatosságért (a kettőt gyakran nem is olyan egyszerű elhatárolni egymástól) síkra szálló mozgalmak, amelyeket az időszakban talán a Napster testesít meg leginkább, azaz a peer-to-peer feltalálása (tudod, így működik a torrented ;-)).
Nem az AGILE volt tehát az egyetlen mozgalom amely a kihívásokra próbált választ adni, és nagyon sokukról érdemes lenne megemlékezni, a hatásukat számba venni, sok érdekes poszt kijöhetne egy efféle visszatekintésből. De az igazat megvallva egyik sem tudhat magáénak olyan komoly, az élet számtalan területére átgyűrűző hatást, mint amit az AGILE gyakorolt a szoftverfejlesztésre, és gyakorol ezen keresztül napjainkban sok minden másra is.
Ebben az időszakban a szegmens szűkebb területén, tehát a fejlesztésen belül is fokozódó igény ébredt a problémák forrásának azonosítására, a tévesnek bizonyult dogmákkal való leszámolásra és a paradigmaváltásra. Az AGILE pedig éppen valami ilyesmire vállalkozott.

Könnyen le lehetne vonni mindebből a téves következtetést, hogy a mozgalom eleve sikerre volt ítélve. Jó helyen született (a hatalmas fejlődés kapujába lépő szoftveripar), jó időben (amikor már nyilvánvalóak voltak az iparág egén sokasodó sötét fellegek). Avagy más megközelítésben rossz helyen, rossz időben. Mikor az összeomlás és a kudarc kódolva van a körülményekbe. Az ilyen helyzetből való sikeres kilábalást pedig csak a valódi forradalom biztosíthatja. Forradalom a fejekben, majd a valóságban, melynek élére állnak és tevékeny alkotói lesznek a rossz helyen és időben születettek.
Ezzel szemben az igazság az, hogy a dolog korántsem ilyen egyszerű. A sikernek nem a mozgalom fogantatása idején az iparágat sújtó negatív körülmények, problémák a legfontosabb összetevői. Nem a külső tényezők, hanem valami egészen más, belső, az AGILE-re magára jellemző attribútumok összessége. Olyan pozitív és reményt keltő elemek egymást erősítő hatása, amelyek indokolják majd a nyitó idézet ellentétes értelmű parafrázisát. De minderről a következő posztban...

2014. november 26., szerda

CodeNinja ComeBack?


Volt egy remek öreg magyartanárom  gimiben, Isten nyugosztalja... Borzalmasan raccsolt, de tényleg! Én kismiska vagyok hozzá képest. Bejött első órára és így indított: "Vépa, vetek, mogyovó, kován veggel vitkán vikkant a vigó... Ennyit evvől!"
Mindez csak arról jutott eszembe, hogy nem gondoltam magyarázkodni a kimaradt 2 év miatt. Maradjunk annyiban, hogy elég sűrű 2 év volt. És akkor ennyit erről!

Nem tudom még, hogy mi lesz a folytatás, de az biztos, hogy szeretnék írni pár dolgot az agile-ről például. Ami nem lesz talán annyira brutálisan nyers, száraz, technikai jellegű téma, mint az eddigiek, (meg a meg nem írt posztok lettek volna) és talán szélesebb körben is számot tarthat érdeklődésre.
Tehát agile. Tudjátok, ez az a fura mozgalom, ami a programozásból indult, és ami többek közt eretnek módon azt állítja, hogy dolgozni jó, a munkád lehet örömforrás, sőt akár a hobbid is (meg persze még nagyon sok mindent ezeken túl). Az agile pár év alatt olyan sikert ért el, hogy alapjaiban formálta át a szoftverfejlesztést. Sőt, mindaz a szellemiség, filozófia ami az egész mögött van szépen begyűrűzött más kreatív iparágakba is, de nem csak a filozófia, hanem az olyan mögöttes módszertanok adaptációjára is vannak sikeres példák, mint amilyen a Scrum.

Hogy miért akarok minderről írni? Túl azon persze, hogy ma megint úgy gondolom  (na jó, Borcsa meggyőzött), hogy érdemes ezt az egész blogolás dolgot csinálni. Nos, mert több döbbenetes élményem is volt mostanában a témával kapcsolatban. Arra gondolok, hogy bő 13 évvel az Agilis-kiáltvány, megszületése után micsoda hitetlenkedés, meg nem értés, és esztelen, zsigeri ellenállás tudja ezt az egészet körülvenni még ma is. Annak ellenére, hogy a mozgalom a 2000-es évek közepére/végére letarolta az egész világot, és -mint mondtam- alapjaiban alakította át az egész iparágat. Így, múlt időben.

Én magam 2010 körül figyeltem fel erre a jelenségre, próbáltam most visszakeresni, mikortól foglalkozom ezzel, és egy 2011 januári előadásomban már egyértelműen az agile körüli gondolatok a sorvezetők. Egyértelműen azért kezdtem el érdeklődni iránta, mert nem lehetett nem észre venni, ahogy egyre gyakrabban bukkan fel a legkülönfélébb szakmai fórumokon. De volt még egy momentum, ami felkeltette a figyelmem: a szereplők elkötelezettsége és mély hite ebben az egészben egyértelművé tette, hogy valami nem mindennapi dologgal állunk szemben. A téma legkomolyabb hazai (de nem csak Magyarországon ismert) tanácsadó cégét 2008-ban alapították. Mindezzel csak azt akarom mondani, hogy minimum fél évtizede itt van már köztünk az agile, győztes és bizonyított eszmeiségként, és erre bizony figyelnünk kell!
Talán kicsit nyers lesz, amit ide írok, de attól még igaz: egy magára valamit is adó iparági szereplőnek (legyen az programozó, tervező, szervező, teszter, menedzser, stb.) ismernie kellene azoknak a dolgoknak, elveknek legalább egy részét, amelyek besorolhatók ebbe a nagy gondolatkörbe, amit az agile szóval szoktunk összefoglalni. Ez az egész annyira sikeres és kipróbáltan működőképes, hogy nem lehet keresztülnézni rajta, átlépni és figyelmen kívül hagyni.
Az agile mint mozgalom, bizony nem szorul védelemre, bizonyított, és tarolt. De akkor mégis miért az ellenállás, a meg nem értés, amivel olyan gyakran meg kell küzdenünk? És ami engem is időről-időre arra késztet, hogy beszéljek róla, próbáljam felhívni mások figyelmét, hogy az életüket megváltoztató csodára lelhetnek, csak a kezüket kell kinyújtaniuk érte. Hogy ennek az ellenállásnak a természetéről megérthessünk valamit, előbb majd tisztáznunk kell, hogy mi is az agile.
Először is az agile nem egy módszertan. Nem egy recept, de még csak nem is receptek gyűjteménye, amelyek bemagolása automatikusan utat mutat nekünk, hogyan végezzük a munkánkat.

De mi tehát az agile, a mozgalmon túl? Elsősorban egy szemléletmód, egy attitűd. És talán nem fejezi ki semmi jobban ezt az attitűdöt, mint maga a szó: agilis. Aki agilis, az a munkájában proaktív. Tehát felelősséget vállal, tudatos, előregondolkodó és automatikus (önjáró: nem azért írsz commentet a commitba, nem azért tartod a konvenciókat, használod tudatosan a mintákat, mert kell, vagy mert bárki ellenőrzi, hogy megtetted-e, hanem mert tudod, hogy így helyes).
A mozgalom szó nagyszerűen leírja, hogy miről van szó. Olyan emberek, akik ténylegesen és tevékenyen ezzel foglalkoztak (szoftverek fejlesztése), elkezdtek gondolkodni azon, hogy mi is az, amit rosszul csinálunk, és hogyan lehetne jól csinálni mindezt. Nem gondolták, hogy van egyetlen általános, üdvözítő út. Tudták ellenben, hogy az ördög a részletekben lakik, és az adott környezetre jellemző sajátosságok nagymértékben meghatározzák az alkalmazott módszerek és gyakorlatok hasznosságát és helyességét. Tudták, hogy nem lehet csak úgy megmondani a "tutit": a tökéletességet elérni lehetetlen, de törekedni rá - minduntalan a jobbá válás lehetőségeit firtatni - nemes küldetés és emberi kötelesség. Ugyanígy tisztában voltak azzal, is, hogy nyilvánvalóan vannak bizonyos alapvetések is, amelyeket nem lehet figyelmen kívül hagyni, de mindenek előtt az iparágban bizony vannak általánosan elterjedt és hamisnak bizonyult tévhitek, "rossz gyakorlatok". Az ezekkel való leszámolás nem odázható el, még akkor sem, ha ez alapvető szemléletváltást is igényel, és átrendezi a hangsúlyokat, nem kímélve a hagyományos szerepköröket, és azok rangját/státuszát sem.
Minden az agilis-kiáltvánnyal kezdődött tehát, ezért ezt a linket mindenképp kövesse minden olvasó, és gondolkodjon el pár percre azon, amit odaírva lát. Aki pedig úgy gondolná, hogy e nélkül is lehet erről beszélgetni, annak iderakom csak azért is:

Mindenki, akit megfog a kiáltvány a maga nyers tömörségében, találhat irodalmat, ami magyarázza azt, bátran rá lehet guglizni. Mindenképp vegyük észre, hogy az egyént emeli ki. A szereplők közt zajló kommunikáció, valamint a működő produktum fontosságát hangsúlyozza. Az együttműködést és a változás iránti készséget azonosítja fő értékekként.

Minderre még visszakanyarodom majd, ígérem, de előtte szeretnék pár gondolatot leírni arról, mi is vezetett az agile mint mozgalom átütő sikeréhez. De bemelegítésnek talán ennyi is elég lesz...