Interjú Jeff „Cheezy” Morgannal

cheezy

Ma van egy meglepetés az Ön számára! Kérjük, találkozzon Jeff Morgannal, akit Cheezy néven ismernek (@chzy). Jeff szép teljes interjút adott nekünk az új „Uborka és sajt” című könyvéről és a jobb tesztelési gyakorlatokról, úgyhogy ... ne engedje, hogy szánjak tovább az idejét - olvasson tovább és ismerkedjen meg vele!

1. Szia Jeff (Cheezy), köszönöm, hogy időt szánt velünk. Ön az Agile és az ATDD világ egyik elismert alakja, de azok számára, akik még nem ismernek titeket, el tudnának mesélni egy kicsit magáról?

Szenvedélyem a szoftverek írása, és közel harminc éve csinálom. Kicsit több mint nyolc évvel ezelőtt otthagytam a „vállalati” munkahelyemet, és egy olyan céget alapítottam, amely később LeanDog lett. Ettől kezdve az Egyesült Államokban és Kanadában jártam, hogy segítsek a szoftverfejlesztő csapatoknak abban, hogy jobban teljesítsenek abban, amit csinálnak azáltal, hogy bemutatom az Agile és a Lean közösségek gyakorlatait.

A gyógyszerem olyan csapatokkal fog működni, ahol a fejlesztőknek fogalmuk sincs, hogyan kell tiszta kódot írni, a tesztelők csak szkriptek manuális végrehajtását vagy véletlenszerű ellenőrzést végeznek, és az ügyfél nem hiszi, hogy a csapat minőségi terméket tud szállítani. Szeretek néhány hónapot tölteni a csapattal és látni, hogy a dolgok megfordulnak. Szeretem látni, hogy a fejlesztők tisztában vannak a kivitelezéssel, és megtanítják őket arra, hogyan kell kiváló minőségű kódot írni a TDD, a páros programozás és a jó tervezés elveinek bevezetésével. Szeretem látni, hogy a tesztelők szorosan együttműködnek a fejlesztőkkel, és megtanulják, hogyan kell kódot írni a tesztek automatizálásához. Szeretem, ha helyreáll az ügyfél hite a csapatba. Szeretek nagy teljesítményű csapatokat látni. Ez az amit csinálok.

Edzői pályafutásom első felében nagyon csalódott voltam a tesztelő szakma helyzetében; különösen azokon a csapatokon, amelyekkel dolgoztam. Szinte mindig ők voltak a kényszerem, és megakadályozták, hogy a csapat teljes mértékben kihasználja. Ahogy Kent Beck, Ron Jeffries és mások a fejlesztői közösségben felvetették a mércét, mit jelent szakmai fejlesztőnek lenni, úgy döntöttem, hogy megpróbálok segíteni ugyanezt a tesztelő szakmában is. Elkezdtem bevezetni az ATDD-t azokba a csapatokba, amelyekkel dolgoztam, és elkezdtem dolgozni a tesztelőkkel, hogy segítsen nekik megtanulni, hogyan kell írni a tesztautomatikát ugyanazzal a szigorral, amelyet a fejlesztőknek megtanítok kódírásra. Elkezdtem nyomni a borítékot is, mit jelent az Agile csapatban való együttműködés. Eleinte sok ötletem radikálisnak és szélsőségesnek számított, de az évek során elfogadottabbá váltak.

2. Mikor és hogyan ismerkedtél meg Ruby-val, és mit szeretsz benne leginkább?

Szeretem az összes programozási nyelvet. Nagyon szeretek belemélyedni egy nyelvbe, hogy meghatározzam, mit kínál. Amikor alkalmat kapok rá, szeretném kiválasztani a használni kívánt nyelvet, amely alapján a legjobban megoldja a problémát.

Ezzel a háttérrel körülbelül hat évvel ezelőtt fedeztem fel Rubyt. A Rails meglehetősen új volt, és a közösségben sokan beszéltek erről. Elkezdtem tanulni a nyelvet, és nagyon tetszett, amit láttam. Nagyon tetszett a nyelv egyszerűsége, ugyanakkor az egyszerű és erőteljes tárgymodell. Úgy gondoltam, hogy könnyű használni a metaprogramozást magasabb DSL-ek felépítéséhez a fejlesztők számára. Ez a sínek titka.

Pár évvel később tesztelőkkel dolgoztam, és megpróbáltam segíteni őket a tesztautomatika megvalósításában. Azzal kezdtem, hogy megnéztem a meglévő eszközöket, és megdöbbentem, hogy mennyire rosszak. Ruby jó megoldásnak tűnt. Ez lehetővé tette számomra, hogy olyan kódot írjak, amely magas szintű DSL-eket épített fel, amelyeket a tesztelők felhasználhattak tesztcsomagok készítéséhez. Ez végül több Ruby drágakő kifejlesztéséhez vezetett.

3. Lehet, hogy az RoR fejlesztői nagyon izgatottak lesznek könyve miatt, mivel a RubyMine csapatában vagyunk. Mesélne egy kicsit arról, hogy kinek szól ez a könyv?

A könyvem egyértelműen az uborkáról szól. Az uborka kezdeteiben a legtöbben a drágakővel vagy más drágakövekkel, például a webrattal kapcsolatos webes lépéseket használták. Ezek az eszközök általában törékeny tesztcsomagokat eredményeztek, de kis helyszíneken jól működtek, mivel könnyű volt befogadni a tesztek futtatásához szükséges munkát. Mivel a webhelyek skálázódtak, és további tesztekre volt szükség a különböző böngészőkben, gyorsan felfedeztük, hogy további igényeink vannak, amelyeket nem fednek le ezek a drágakövek.

Könyvem több témát is megkísérel lefedni. Először is a Ruby és az uborka szép bemutatkozását nyújtja. Ezenkívül számos további drágakövet is megismertet az olvasóval, amelyek felhasználhatók az uborkával robusztus, rugalmas tesztcsomagok készítéséhez. Ez olyan fejlett témákat is magában foglal, mint a tesztadatok kezelése és a tesztek bővítése. Könyvem meglehetősen népszerűvé válik a tesztelő közösségben, de úgy gondolom, hogy rengeteg ajánlatot kínál a fejlesztői közösség számára is.

4. Miért uborka? Milyen előnyöket kínál ez a tesztelési keretrendszer másokkal szemben?

5. A jobb tesztelés érdekében Ruby drágaköveket fejlesztett ki. Mesélne nekünk a kedvenceiről?

Ez olyan, mintha megkérném, hogy válasszam ki a kedvenc gyermekemet. Az összeset imádom! Az oldal-objektum drágakövem messze a legnépszerűbb. Ez lehetővé teszi az absztrakció felépítését egy weboldal körül, és a tesztcsomag többi részének elkülönítését az ezeken az oldalakon bekövetkező változásoktól. Egy másik drágakő, amely az utóbbi időben sok elismerést kap, a brazenhead és a gametel. Szilárd tesztelési platformot nyújtanak az Android-eszközökhöz írt alkalmazások számára. Végül, a data_magic egy olyan drágakő, amely szorosan együttműködik az oldal-objektummal a tesztjeiben használt adatok külsővé tételére és véletlenszerűsítésére. Ez elengedhetetlen összetevő, ha párhuzamosan szeretné futtatni a teszteket. Amikor a tesztek párhuzamosan futnak, elveszíti az irányítást a futtatás sorrendje felett. Ha ugyanazokat a tesztadatokat használja több tesztben, akkor nagyon egyszerű, ha az egyik teszt rálép a másik adataira és véletlenszerű teszthibákat tapasztal.

6. És a drágaköveken kívül milyen tesztelő eszközöket tud ajánlani?

Indexkártyák, jó fejlesztői környezet és git. Komolyan mondom, nem szeretem a nagy súlyú folyamatokat vagy eszközöket. Szeretem könnyűnek és egyszerűnek tartani.

7. Megtiszteltetés számunkra, hogy a RubyMine-ra hivatkozunk az egész könyvben. Mióta használja a RubyMine-t? Mi tetszik benne?

Hosszú ideje vagyok emacs és parancssori felhasználó, az 1980-as évekig nyúlik vissza. A RubyMine-t akkor fedeztem fel, amikor először kiadták. Bemutattam a Ruby-t mint platformot az általam edzett csapatok tesztelésére, és már számos más JetBrains eszközzel - nevezetesen az IntelliJ és a ReSharper - már korábban is használtam és örültem. Szükségem volt egy teljesen integrált fejlesztői környezetre, és a RubyMine szállított. Azóta a szerszámra megyek.

8. Hiányoznak-e a RubyMine szolgáltatásai?

Lehetőségem volt számos fejlesztőt és tesztelőt megismertetni a RubyMine-szel, és az egyetlen olyan funkció, amelyet hallottam a legjobban, a jobb kiegészítések a dinamikusan felépített osztályok használatakor. Tudom, hogy ez egy nagyon nehezen megoldható probléma, és örömmel lepett meg az eszköz folyamatos fejlődésével. További jó munkát.

9. Ön edző, sok beszélgetést folytat a világ minden tájáról, blogol és így tovább. Mi inspirál napi rendszerességgel? Van valami könyv, blog? Hobbik?

Amikor úton vagyok (ami az idő kb. 90% -a), estéimet kódírással töltem. Számos felhasználói csoportba is ellátogatok azokban a városokban, ahol meglátogatom, és szívesen felfedezem a helyben főzött söröket. Hétvégenként egészen más életet élek. Gyakran táborozok a családommal és élvezem a legyező horgászatot.

10. Még egyszer köszönöm az idejét, Jeff, és várjuk könyvének végleges megjelenését. Vannak olyan közelgő események vagy témák, amelyeket „bekapcsolni” szeretne?

Szeretném meghívni az egész fejlesztõi közösséget, hogy erõsítsék magukat fejlõdésük fejlesztésére és tanulmányozására, és soha ne adják fel szenvedélyeiket.

-
Fejlessze örömmel!
JetBrains RubyMine Team