Interjú Ryan Potts-szal, amelyben ő és Jeremy Walker a Delphiről beszélgetnek, arról, mit tanult abból, hogy közreműködője az Exercism-nek, valamint arról, milyen tapasztalatokat szerzett olyan iparágakban programozva, amelyek még mindig „offline” működnek.
Szia Ryan! Köszönöm, hogy időt szakítottál a beszélgetésre. Te vagy az Exercism Delphi kurzusának karbantartója. Hogyan kerültél kapcsolatba a Delphivel?
Annál a cégnél dolgozom, amelyet édesapám alapított, és amely a nyolcvanas évek óta fejleszt szoftvereket: először a Microsoft Pascallal kezdték, később pedig a Borland Turbo Pascalját használták. '96-ban kerültem a céghez, éppen akkoriban kezdtek olyan kérések érkezni, hogy Windows alatt, ne pedig DOS alatt futó szoftvereket készítsünk. Kényelmes módon a Borland épp nemrég adta ki a Delphi 1-et. Ez tökéletesen illett hozzánk, mert az évek során kifejlesztett unitok nagy része továbbra is használható maradt. Már nem kellett elölről kezdenünk mindent VB-ben vagy VC-ben ahhoz, hogy támogassuk a Windowst.
És még ma is a Delphit használod a mindennapi munkádban?
Igen, a munkahelyem az autóipar számára gyárt K+F-célú teszteléshez és kis szériás teszteléshez használt gépeket: gumikat, autóüléseket, légzsákfelfújókat tesztelünk, valamint töréstesztet végzünk. A gyártott rendszereket világszerte több autógyártó és azok beszállítói is használják.
A szoftver, amin dolgozom, ezeknek a különféle géptípusoknak a vezérlésére szolgál. Én fejlesztem a felhasználói felületet, meghatározom a tesztek automatizált részeinek tesztmeneteit, és integrálom a különféle be- és kimeneti pontokat, mind az analóg, mind a digitális jeleket. A lehető legfelhasználóbarátabbnak kell lennie, hogy aki minimális képzést kapott, az is viszonylag magabiztosan tudja használni.
A munkámhoz egyáltalán nem kell webfejlesztés. Mindent Delphiben, Windowson csinálok. Néha össze kell dobnom egy kis „custom commandot” C++-ban, amit aztán feltöltök az adatgyűjtő processzorkártyára, amely egy párhuzamos számítógép, és a számítógép egyik PCI-foglalatában van; saját CPU-val, memóriával és operációs rendszerrel rendelkezik.
Lenyűgöző olyasvalakivel beszélgetni, aki egyáltalán nem foglalkozik webfejlesztéssel. Ez ma elég szokatlannak tűnik, de azon gondolkodom, hogy ez vajon csak a jel/zaj viszony, amiről nap mint nap hallok, és nem az iparág valós képe.
Igen, az Exercism-ben való részvétel révén kicsit bepillanthattam abba, hogyan él a számítógépes ipar „másik fele”. Sokat tanultam a tesztvezérelt fejlesztésről (TDD), a GitHubon való eligazodásról és arról, milyen egy nyílt forráskódú projekten dolgozni. A tanultak nagy része javította a munkahelyi munkám minőségét.
Nagyon jó ezt hallani. Az Exercism-ben az egyik számomra legkedvesebb dolog ez a „hogyan él a másik fél” hangulat, amikor rádöbbensz a vakfoltjaidra, és olyan dolgokról tanulsz, amelyekről nem is sejtetted, hogy léteznek. Gondolom, a kurzuskarbantartói szerep még inkább felerősítette ezt a tanulást?
Így van. Több tesztet írok, mint korábban. Ez nem mindig TDD a szó szoros értelmében; néha a tesztek nem előbb, hanem utóbb készülnek el. Mindazonáltal hatással volt arra, hogyan strukturálom a kódot: elhagyom a felesleges függőségeket, hogy könnyebb legyen a tesztelés.
Sok időt töltök azzal, hogy a problem-specifications repóban issue-kat és PR-eket nézek át; itt definiáljuk az Exercism feladatait nyelvfüggetlen módon. Sokat tanultam a beszélgetésekből. Néha egy javasolt változtatás elsőre egyenesnek tűnik, de a kialakuló beszélgetés problémákat tár fel. Türelmesebb lettem. Megtanított arra, hogy a munkahelyi technikai problémáknál más lehetséges megközelítéseket is keressek.
A mentorálásról is többet tanultam, különösen annak fontosságát, hogy az ember a mögöttes miértet is ismerje, ne csupán a hogyant. Néhány másik programozóval dolgozom együtt. Bár fiatalabb vagyok náluk, régebb óta vagyok a cégnél, és gyakran rámutatok egy hatékonyabb megoldásra egy gép működésének sorrendezéséhez, vagy elmagyarázom, miért kell valamit egy adott módon végrehajtani.
Az Exercism-ön túl Delphi MVP is vagy, ami elég menő! Hogyan történt ez? Van erős Delphi-közösség, amelynek a tagja vagy?
A Delphi kurzus elindításának kezdeti szakaszában felvettem a kapcsolatot Jim McKeeth úrral az Embarcaderónál, hogy megnézzük, kaphatunk-e nyílt forráskódú licencet a Delphire. Ez lehetővé tette volna, hogy a Delphit új feladatok fejlesztésére használjuk, és hogy az emberek pull requestekkel hozzájárulhassanak. Jim a levelezésünk során meghívott az Embarcadero MVP-programba.
A Delphi Praxis egy olyan online közösség, amelyet jól ismerek. A Google+-on nagy a forgalom, de az már lefelé megy, úgyhogy máshol kell próbálkoznunk.
Építettél olyan nyílt forráskódú alkalmazásokat Delphiben, amelyeket mások is megnézhetnek?
Igen! Az Exercism Windows CLI-telepítője nyílt forráskódú, és teljes egészében Delphiben írtam. Automatikusan meghatározza, hogy a tanulónak az Exercism CLI melyik verziójára (32/64 bit) van szüksége, majd letölti a CLI-t, kicsomagolja, és a megfelelő helyre teszi. A telepítőt 15 000 alkalommal töltötték le, amire elég büszke vagyok!
Ez fantasztikus eredmény! Mivel nem foglalkozol sok (ha egyáltalán valamennyi) internetes programozással, milyen kihívásokkal szembesültél, amikor Delphiben megírtad a telepítőt?
A telepítőt eredetileg C#-ban írták. Elavult volt, és úgy döntöttem, megnézem, tudok-e javítani rajta. Sosem próbálkoztam még ilyesmivel, de tudtam, hogy a Delphiben megvannak az eszközök a feladat elvégzéséhez. Az eredeti C#-kód tanulmányozásával kezdtem, hogy megértsem, milyen eseménysor zajlik a háttérben, majd megpróbáltam ugyanezeket a feladatokat Delphiben megvalósítani. Találtam mintakódot az Embarcadero dokumentációs oldalán, amely segített megérteni, hogyan kell helyesen összefűzni a rendelkezésre álló komponenseket egy REST-kliens létrehozásához. Felfedeztem egy hasznos segédprogramot is, amelyet a Delphi biztosít, a REST Debugger nevűt. Ezzel be tudtam írni, és így tesztelni tudtam azokat a különféle HTTP-hívásokat, amelyekre a telepítő sikeres működéséhez szükség van. Amint működnek, a debugger elkészíti a szükséges komponensek másolatait, hogy be tudjam illeszteni őket a kódba.
Ha valaki mélyebben szeretne bekapcsolódni az Exercism-be, esetleg karbantartó szeretne lenni, elmesélnéd, milyen volt a te utad?
Tagja vagyok egy helyi MeetUp-csoportnak, amelynek a neve Akron Code Club. Körülbelül havonta egyszer találkozunk, és általában párokba rendeződve dolgozunk egy-egy code katán, amelyet a csoport javasolt. A 2016. augusztusi találkozón az Exercism által kínált feladatokkal kezdtünk el dolgozni. Ahogy használtam az Exercism-öt és néhány más tanulós oldalt, arra gondoltam, milyen jó lenne, ha több ilyen online programozós oldal kínálna Delphit vagy Pascalt lehetőségként. Miután körülnéztem az Exercism oldalán és az Exercism GitHub-repóiban, rájöttem, hogy az Exercism mindig nyitott új nyelvi kurzusok hozzáadására. Nem voltam benne biztos, hogyan érdemes felvenni a kapcsolatot Katrinával. Azt hiszem, Gitteren kerestem meg őt '16 augusztusában, és javasoltam a Delphi hozzáadását. Körülbelül két hónappal később kaptam egy bocsánatkérő választ, és ekkor jöttem rá, hogy ő bizony nem Gitterezik. Mindenesetre kíváncsi volt rá, hogy még mindig érdekel-e a Delphi Pascal kurzus hozzáadása, és ha igen, elindítja a folyamatot.
Ma már létezik egy repó, amelyet új nyelvi kurzus kérésére használhatsz, és bármikor nyithatsz issue-t az exercism/exercism repóban, hogy kapcsolatba lépj a projekt karbantartóival.
Remek. Köszönöm a beszélgetést és az Exercism-ért végzett munkádat!
Szívesen! Ez jó móka volt. Élvezem a részvételt, és hogy megteszem, amit tudok az Exercism-ért. Tanulás csinálás közben!