Az utóbbi időben kicsit elmaradtam a bloggolással, ezért most pótolom :) Előrebocsájtom, hogy szakmai lesz ez a post.
Napjaim munkával és ehhez kapcsolódó tanulással telnek. Például kezdem egyre jobban azt érezni, hogy a BDD (Behaviour Driven Development, ez egy fajtája a TDD-nek vagyis Test Driven Development-nek) az, amire nekem szükségem van ahhoz hogy minőségileg jó forráskódot tudjak írni. Mivel a jelenlegi munka Python és Google App Engine felhasználásával készül, így nem tudom használni a Cucumber-t mert az Ruby-hoz készült. De szerencsére valaki készített a Pythonhoz is egy Cucumber szerű dolgot, ennek neve: Lettuce. Ez egy nagyon primitív kis program, ami dekorátorok használatával meglehetősen egyszerűvé teszi a tesztek írását.
Nekem sokkal jobban bejön ez a fajta megközelítés, mint a "hagyományos" fejlesztési módszertan, mivel hagyományos esetben sosem készülnek tesztek, mondván hogy majd a végén megcsináljuk, de aztán ez rendszerint elmarad. BDD esetén a tesztek programozási nyelvtől független nyelven kerülnek megírásra, emiatt akár az ügyfél számára is értelmezhetőek. Ha jön egy új munkatárs, akkor ő is könnyebben értelmezi az angol/magyar szöveget, mint a forráskódot.
És nem-mellesleg, ha a rendszert újra szeretnénk írni egy más platformon (mert például Google App Engine helyett váltanánk Amazon Web Services-re, azt gondolván hogy az olcsóbb lesz), akkor az alkalmazás logikája és a tesztek már előre készen vannak! Csak a forráskódot kell megírni és kész az új verzió, ami nem kis előny. A forráskódot is kevésbé kell kommentezni, mivel kis részekre van darabolva a forrás, és a tesztekben le van írva hogy mi hogy működik. Tehát ha úgy nézzük, akkor a hagyományos kommentek helyett a számítógép számára is érthető szöveget írunk (Cucumber-ben vagy Lettuce-ban), ami kb ugyanakkora munka, csak így a gép ellenőrizni tudja a programunk működését. Másképpen fogalmazva, a kommentelés kidobott idő, mivel az a gép számára nem értelmezhető módon írja le a program működését.
Ráadásul számomra sokkal nehezebb és unalmasabb Unit tesztet írni, mivel a tesztek jó nagyok lesznek (mondván, hogy ha már előkészítettem az adatokat, akkor már több dolgot is letesztelek, nem csak egyet), emiatt átláthatatlan és karbantarthatatlan lesz. És a Unit teszteket is tele kell rakni kommenttel hogy melyik rész mit is akar tesztelni, ami megint csak kidobott idő.
A Lettuce még elég kezdeti stádiumban van, emiatt egy kis kiegészítésre szorult a részemről, amit egyszer majd meg fogok osztani a közösséggel :)
Ezen kívül, amikor van valami rendezvény, akkor arra elmegyünk Tomival. Ezen a héten volt jónéhány:
- CloudCamp, ahol Cloud Computing-gal kapcsolatos dolgokról volt szó
- Singtel Accelerate. Például szerepelt Mitchell Baker, a Mozilla alapítvány elnöke, aki utána a HackerspaceSG-be is elment, és személyesen lehetett vele beszélni. Magyarországon erre mikor lenne esélyem??
Itt találkoztam másodjára Benjamin Scherrey-vel is, aki az első délkelet-ázsiai szoftverfejlesztő cég tulajdonosa, akik Agile Development-tel fejlesztenek (nem ellenőriztem le, ő mondta így). Javarészt ők is Python-t és Django-t használnak, szóval vele érdemes kooperáálni, 6 éves tapasztalatuk van.
- és a Founder Insitute-nak volt egy összeröffenése tegnap, ahol a mint.com alapítója mesélte el a cégalapítással kapcsolatos tapasztalatait. 3 éve alapította a céget, ami mára 170 millió dollárt ér, szóval érdemes hallgatni rá.
Ezek az események, (amellett hogy érdekes és hasznos információkat lehet itt hallani) arra is jók, hogy ismerkedjünk más emberekkel. Ezt a részét hívják Networking-nek, és általában direkt hagynak rá időt a rendezvények szervezői. Esetleg pontenciális támogatókat is szerezhetünk a projektjeinkhez. Nem feltétlen anyagi támogatásra gondolok itt, hanem inkább technológiai, vagy akár csak ötlet szintjén tudják segíteni az embert.
Például megosztottuk egymással az alkalmazott fejlesztési módszertant, vagy ötleteket kaptunk hogy egyes problémákra milyen megoldást ismernek.
Összefoglalva a dolgot, már csak az ilyen rendezvények miatt is érdemes volt kijönni Szingapúrba. Mondhatni kinyílt a szemem, látván hogy van élet a PHP-n, Java-n, JBoss-on és saját szervereken túl is.
Otthon például sosem gondoltam azt, hogy a Cloud Computing az egy hasznos dolog lenne. Mindig azt hittem hogy ez csak egy jól hangzó "lófaszbingós" dolog, amit mostanában előszeretettel használnak. De kiderült hogy az egy nagyon is jó dolog, adott esetben érdemes lehet használni. Persze nem ez a Silver Bullet, ami mindent megold. A Singtel Accelerate-en az egyik cég elnöke azt mondta, hogy ők az AWS-t használják, 2000 szerverük van, és ennek havi költsége 7ezer dollár. Korábban saját szerverekkel dolgoztak, amelynek havi költsége kb 70ezer dollár volt. Szóval náluk konkrét nyereséget hozott a Cloud Computing használata.
Másik dolog pédául, hogy a BDD eléggé el van hanyagolva Magyarországon. Mintha, valamilyen oknál fogva nem mernék alkalmazni a külföldön már bevált technikákat.
Errefelé sokat beszélnek például a Pair Programming-ról is, ami azt jelenti hogy két programozó ugyanazon a gépen és monitoron együtt dolgozik. Vagyis az egyikük már a teszt vagy forráskód megírásának pillanatában ellenőrzi, hogy amit a társa ír, az jó-e. Ezzel drasztikus mértékben lehet csökkenteni a bugok számát, elősegítve ezzel a hibamentes(ebb) szoftverek elkészültét, és csökkentve a karbantartás költségét.
A Pivotal Labs ennek a legnagyobb híve errefelé, ők fejlesztették ki a Pivotal Tracker-t is, ami a szoftverek életciklusának menedzselésére használható ingyenes eszköz. Például erről sem hallottam Magyarországon, de ezt én is használom mostanában, és tényleg jó cucc.
Ezt a Pair Programming-ot még nem tudtam élőben kipróbálni, de mindenképpen meg szeretném tapasztalni, hogy milyen. A Pivotal Labs szerint a Pair Programming-ban részt vevők teljesítménye 3-5-szöröse az egyedül dolgozó programozókhoz képest. Tehát a párosodással növelik a hatékonyságot, annak ellenére, hogy látszólag az egyik ember csak ott ül, és nem csinál semmit.
Mindezek miatt azt kell mondjam, hogy sajnálom hogy nem jöttem ki már sokkal hamarabb. Tomi már 2 éve is mondta hogy jöjjek, mert érdemes lenne, de akkor még nyuszi voltam. Hiba volt.
És akkor még nem is említettem az itteni lányokat, mint vonzerőt :)