Tompa Tomival előadást tartottunk a decemberi Budapest Agile Meetup-on Tempomat címmel.
Az előadás prezentációját itt lehet megnézni:
Tomi arról beszélt, hogy bár komoly, fontos munkákon dolgozunk, és céljaink eléréséhez profi eszközöket veszünk igénybe, mégis fontos, hogy a fejlesztők boldogok, motiváltak legyenek. Szerintünk ezt akkor lehet elérni, ha egy fejlesztő a mindennapi feladatai mellett gyakran találkozik kihívásokkal a munkájában, amiket ha megold, akkor sikerélmények érik, és ha a munkáját megbecsülik, elismerik.
Bár az interneten mindenhol azt olvashatjuk, hogy a fejlesztés mennyi része "fun", de vannak olyan esetek (pl. este 11-kor még mindig 30 elszállt tesztesetet javítunk, pedig már kint kéne lennie a release-nek :) ), amikor a fejlesztés minden, csak nem vicces.
Mégis vannak lehetőségek, hogy ebbe is belevigyünk egy kis játékot. Mi minden hónapban kigeneráljuk a verziókövetőnk alapján előálló statisztikát a StatSVN nevű eszközzel. A rengeteg kimutatás között kiderül például, hogy egy adott projekten ki a hónap fejlesztője (aki a legtöbb sort kommitolta, módosította), amit természetesen a többiek sosem fogadnak el :).
Ha már profi eszközökről írtam: mi a Continuous Integration támogatására a CruiseControl.rb nevű, Ruby On Rails-ben fejlesztett open source alkalmazást választottuk. Bár vannak nála okosabb, robosztusabb eszközök, de ennek hatalmas előnye, hogy Ruby-ban írták, mi meg abban szeretünk programozni, így logikus választásnak tűnt ennek alkalmazása.
Egy CI eszköz arra szolgál, hogy az általa kezelt, aktuálisan fejlesztett alkalmazások verziókövetőjét néhány percenként lekérdezi, és ha volt változás (vagyis valamelyik fejlesztő módosított a kódon), akkor azt lefrissíti az általa kezelt tesztkörnyezetbe. A frissítés után az alkalmazás lefuttatja a bekonfigurált teszteket (unit-, integration- és felülettesztek). Jó esetben a tesztek a változtatás után is rendben lefutnak, rossz esetben pedig (ha a fejlesztő nem járt el elég körültekintően) valamelyik teszteset elszáll. Ekkor a projekten dolgozó fejlesztőcsapat e-mailben vagy esetleg egy desktop alkalmazáson keresztül értesül a konkrét hibáról, és mielőbb nekilát kijavítani azt.
Mind az e-mail értesítő, mind a desktop kliensek nagyon hasznosak, de szerettünk volna ebbe is egy kis játékot vinni. Teljesen véletlenül találtunk rá a Nabaztag eszközre, ami egy WiFi eléréssel rendelkező, multifunkciós robotnyúl. Különböző trükköket tud: mozgatja a fülét (jó esetben, a mi példányunk betegeskedik az egyik fülére), világít, beszél és zenél. Mivel a teljes működés programozható egy HTTP-s API-n keresztül, jó ötletnek tűnt ezt a CruiseControl-hoz illeszteni.
Így megvettük Gyulát, a Nabaztag nyulat és arra gondoltunk, hogy Gyula egy elszállt vagy kijavított buildről értesíthetne hangosan, illetve a fülei pozícionálásával jelezhetné, hogy van-e fixálandó build, vagy minden futó projekt rendben működik.
Gyula nem szeret kiszakadni a természetes, irodai környezetéből, ezért az előadáshoz csináltunk egy videót, hogy prezentáljuk a működését:
Hogy a CruiseControl használatába is belevigyünk egy kis versenyt, kitaláltuk, hogy hónapról-hónapra átadjuk az adott havi "Build Champion" vándorkupát. Ezt az a fejlesztő kapja, akinek hó végére a legtöbb pontja van. A fejlesztő minden sikeres kommit esetén kap 1 pontot. Ha viszont nem figyelt eléggé, és a változtatása miatt elszáll akár egy teszteset is, levonunk tőle 5 pontot. Ha meg annyira figyelmetlen volt, hogy szintaktikai hibát hagyott a kódban, amitől a build el sem tud készülni, 10 pontot vonunk le.
Pár hónap múlva egy újabb blogposztban beszámolunk az eddigi tapasztalatokról.