Kígyókockát készítünk

Kígyókocka

KígyókockaA kígyókocka (snake cube, chain cube) 27 egyforma méretű, egymáshoz képest mozgatható/forgatható kockából áll. A kockákat összeköti egy rugalmas fonal/gumi. Az első és az utolsó kocka egy-egy lapján egy-egy lyuk van. A közbenső kockák hat lapjából kettő lyukas. Fából és műanyagból is készülhetnek. Általában kétféle színnel színezettek a kockák. A cél, hogy a 27 kockát kígyózva „összehajtogatva” a kígyó (lánc) összeálljon egy nagyobb 3x3x3 méretű kockává.

A színek – a játék gyártóitól függően – nehézségi szinteket jelölhetnek (zöld, kék, piros, narancs, lila). Léteznek könnyebben és nehezebben megoldható kígyókockák. Előbbieknél többször fordul elő két egymással szemben lévő lyukas lap a közbenső kockákon, utóbbiaknál gyakoribbak az egymással szomszédos lapokon lévő lyukak. Másképpen: előbbiben több a három hosszú egyenes rész, utóbbi szinte állandóan tekereg. Általában a kocka egyik csúcsából kezdjük a megoldást, de az igazán nehéz játékok esetében a kígyó indulhat akár a kocka egyik lapjának (3×3) középső kockájától is.

Vannak olyan kígyókockák, amelyeknek több megoldása is van, azaz többféleképpen is összeállítható kockává. Ezek részletes ismertetése (típusok, gyártók, színek), a megoldások (statikusan és dinamikusan), irányokat mutató jelölésrendszer (Front, Left, Up, Back, Right, Down) elérhető Jaap Scherphuis – holland puzzle rajongó – weboldalán: Jaap’s Puzzle Page.

Kígyókocka

Olyan Java programot készítünk, amely véletlenszerű kígyókockát állít elő.

Tervezés

Szükséges egy háromdimenziós tömb adatszerkezet a kocka tárolására. Több okból is hasznos, ha a tömb mérete 5x5x5. Egyrészt így indexek 0-tól 4-ig futnak és a tömb közepén lévő 3x3x3-as kocka elemei kényelmesen – mátrixszerűen – indexelhetők 1-től 3-ig. Másrészt a tömb közepén lévő 3x3x3-as kocka minden elemére igaz, hogy egységesen van 26 db érvényesen indexelhető szomszédja. A 125 tömbelemből a széleken lévő 98 elem negatív számokkal feltölthető.

A szokásos i, j, k egységvektor rendszerben (koordináta-rendszerben) gondolkodva, i és j a képernyő síkját, k pedig a mélységet jelenti. A k-val 0-tól 4-ig „szeletelve” a tömböt, öt db négyzetet/mátrixot kapunk az alábbiak szerint. A színes tömbelemek negatív számokkal kerülnek feltöltésre, a kígyó útját határolják mindhárom irányból:

Kígyókocka tervezés

A belül lévő – fehér színű – 3x3x3-as kocka/tömb elemeit kezdőértékként célszerű 0-val feltölteni.

A szomszédos kockák kiválasztása során csak a középen lévő kocka 6 db lapszomszédját kell figyelembe venni. A középen lévő (a következő ábrán nem látszó) kocka három tengely szerinti 2-2-2 szomszédos kockája különböző színekkel jelölt.

Kígyókocka tervezés

Él- és csúcsszomszédság esetén nem tud tekeredni a kígyó. A forduláshoz/tekeredéshez legalább 3 – a kígyóban egymás utáni – kocka szükséges. Az aktuális kockának – pozíciójától függően – legfeljebb 6 lapszomszédja lehet. Ezt csökkenti, ha a kocka valamelyik csúcsban helyezkedik el, illetve menet közben is – ahogyan egyre hosszabb lesz a kígyó – folyamatosan csökken a még szabad elemek száma.

A megoldás során a belül lévő – fehér színű – 3x3x3-as kocka/tömb elemeit kell sorszámozni 1-től 27-ig, jelölve ezzel a kígyó útját. A kezdetben 0-val jelölt szabad elemek végül elfogynak.

Megállapodunk abban, hogy a kígyó az útját az (1, 1, 1) pozícióban kezdi és az 1 sorszámot kapja. Addig kell újabb szomszédos kockákat – egyesével haladva – kiválasztani módszeresen vagy véletlenszerűen próbálkozva, vagy akár visszalépéses algoritmussal is, amíg mind a 27 kiválasztásra kerül.

Megvalósítás

Létre kell hozni a háromdimenziós tömböt példányváltozóként:
int[][][] cube=new int[5][5][5];

A cubeInit() metódus kezdetben feltölti a tömb elemeit. A széleken lévő elemekbe különböző negatív értékek kerülnek, hogy jól megkülönböztethető legyen, melyik ciklus melyik pozíciókért felel. Másképpen is lehetne: például kezdetben minden elem -1, utána a belül lévők felülírhatók 0-val.

Hasznos a cubePlot() metódus, amellyel megjeleníthetők a konzolon a tömb elemei (állapota):

A getNextNeighbour() függvény egydimenziós tömbként ( int[]) visszaadja a paramétereként átvett – x, y, z koordinátával jelölt – kocka egyik kiválasztott szomszédját, amely a kígyó útját jelöli. A kiválasztás történhet módszeresen vagy véletlenszerűen próbálkozva, vagy akár visszalépéses algoritmussal is. A metódus forráskódját most nem részletezem. A metódus felelős a kígyó helyes útvonaláért, azaz a kiválasztás során a kígyó nem rekedhet meg zsákutcában, másképpen nem haraphatja meg saját magát.

A vezérlést a run() metódus végzi el az alábbiak szerint:

Addig fut a ciklus, amíg a kígyó nem tölti ki a 3x3x3-as kockát (másképpen: amíg a kígyó nem éri el a maximális hosszúságot). A tömb állapotát kezdetben és lépésenként is kiíratja a vezérlő metódus a konzolra.

Konzolos eredmény

A konzolos eredmény előállításánál fontos volt, a tömb változásait tudjuk követni. Az összes negatív szám elhagyható lehet a kiírásból, ha meggyőződtünk az implementált algoritmus helyes működéséről. Átlátva a problémát, a megoldás könnyen elállítható egy grafikus és/vagy egy irányokat mutató jelölésrendszer szerint is, például:

Kígyókocka tervezés

Hivatkozások

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam tematikájához kötődik. Több alkalommal is tudunk ezzel a feladattal foglalkozni, attól függően, hogy a getNextNeighbour() függvény működését hogyan tervezzük és implementáljuk:

  • A 13-16. óra: Tömbök témakör esetén a szomszédos kockák közül módszeresen – azonos sorrendben haladva a legfeljebb 6 lehetséges szomszéd közül – választjuk ki mindig az elsőt. Ekkor mindig ugyanazt az egyetlen helyes megoldást kapjuk meg.
  • A 17-28. óra: Objektumorientált programozás témakör esetén atipikusan a kivételkezelést használhatjuk vezérlésre úgy, hogy a lehetséges szomszédos kockák közül mindig véletlenszerűen választunk. Ekkor a kígyó önmagába harapását úgy előzzük meg, hogy tömb túlindexelésekor keletkező kivételt benyeljük és újrakezdjük a feladatot mindaddig, amíg találunk egy olyan megoldást, aminek lépései közben nem keletkezik kivétel.
  • Az orientáló modul 9-12. óra: Mesterséges intelligencia témakör esetén véletlenszerű kocka kiválasztási stratégiával rendelkező visszalépéses algoritmust specifikálhatunk és implementálhatunk. Ez lényegesen összetettebb feladat és mindig helyes megoldást ad több lehetséges megoldás közül.

Fejlesztők délutánja – látogatás a KUKA Hungária Kft. R&D központjában

kuka-logo2019. november 7-én délután látogatást tettem a KUKA Hungária Kft. telephelyén, ami Budapesten, a XI. kerület Dorottya udvarban található. A rendezvényre elsősorban programozáshoz értő fejlesztőket vártak, az már a jelentkezési lapról kiderült, amikor meg kellett adni, hogy milyen programnyelvekhez értek.

Az ott töltött időt három nagyobb részre lehetett osztani. Először a prezentációs bemutatkozások zajlottak, azután a robotok megtekintése, végül pedig egy pizzázással egybekötött kötetlen beszélgetés az előadókkal.

Prezentációk

Először Grósz László R&D vezető bemutatta a céget, és a KUKA cég történelmét. Régóta fennálló céget ismertem meg, melyet 1898-ban alapítottak. Abban az időben acetiléngázt állítottak elő, amivel világítótesteket lehetett működtetni. Nem sokkal később az elektromos világítás megjelenésével és terjedésével a hegesztéstechnikai szektorba helyezték át tevékenységüket, ahol úttörőnek számítottak. Látták az igényt és a lehetőséget a hegesztőgépek automatizálására, így 1956-ban első automata hegesztő gépeik a Volkswagen AG-nál kerültek üzembe. A fejlesztés tovább folytatódott és az első ipari robotjuk, a 6 elektromechanikus meghajtású tengellyel rendelkező Famulus 1973-ban készült el. 1996-ban a KUKA a robotjainak vezérlését PC alapúra cserélte, elsőként az iparágban.

Az ezredforduló után a cég számos további területen jelent meg robotjaival, például az egészségügyben. Az utóbbi évtizedben pedig azon dolgozik, hogy olyan robotokat fejlesszen ki és gyártson (LBR iiwa), amelyek képesek az emberrel együttműködve dolgozni.

Collaborative Roboter

Második előadó Komlósi István vezető fejlesztő volt, aki a mobil robotok fejlődéséről beszélt. Napjainkban fontos hívószavak az ipar 4.0 és az okos gyár. Ebbe a paradigmába illeszkedik bele a KUKA a földön mozogni képes, kerekeken mozgó robotjaival. István bemutatott nekünk egy rövidfilmet, ahol a robotok a Boeing gyárban teljesítenek szolgálatot, feladatuk pedig különböző méretű és nagyságú alkatrészek, vagy akár egy fél repülőgéptest szállítása volt.

Mindegyik robot képes volt a saját környezetét érzékelni, mozgás közben előállítani a terület térképét, és elkerülni az útjukba kerülő akadályokat. Ilyen akadályokból többféle is előfordulhatott. Átmeneti akadály, például egy ember vagy másik robot akadályozza a továbbhaladást, ekkor elegendő várakozni amíg az akadály el nem hárul. Állandó akadály, ami olyan új utat elzáró tárgy, ami korábban nem volt jelen, és nem lehet arra számítani, hogy rövid időn belül úja szabaddá válik az út. Ekkor a robotnak ki kell kerülnie az akadályt, ami azt jelenti, hogy az éppen aktuális térképet figyelembe véve új haladási útvonalat kell tervezzen a céljához, majd ezt végre kell hajtania.

A felhő alapú információfeldolgozás a robotikában is utat talált magának: a fejlesztők arra törekszenek, hogy minél inkább felhő alapú legyen a robotok információinak a feldolgozása, ahelyett, hogy magára a robotra kelljen bonyolult és drága információfeldolgozó számítógépeket telepítsenek, így csökkenthető az egyes termékek – amúgy sem csekély – ára. Ahhoz, hogy megvalósulhasson a felhő alapú információfeldolgozás, nagyon alacsony hálózati késleltetésre van szükség, például a napjainkban szárnyait bontogató 5G mobilhálózatra. Itt hangzott el a mesterséges intelligencia szerepe is, amely ipari alkalmazásokat tekintve, csak teljesen biztonságos formában, népszerű hívószóval AI-Safe módon kerülhet alkalmazásra.

Harmadik előadónk Laboda Krisztián volt, csapatvezető és Software Architect. Az ő előadása robotprogramozásról, azon belül is útvonaltervezésről szólt, természetesen csak áttekintő jelleggel. Kezdetben az ipari robotoknak saját, dedikált térre volt szükségük, amelyben mozogni tudtak. Nem voltak képesek érzékelni a környezetüket, de a rájuk bízott és előre megtervezett mozdulatsorokat tetszőleges számban megismételve precízen tudtak dolgozni. A mozgás leírása spline polinomokkal történhet.

Ha mobil robotokban gondolkodunk – ráadásul az emberrel is együttműködni képes robotokban – a probléma az, hogy nem mindig írható le a mozgás teljes pályája, hiszen váratlan események is bekövetkezhetnek a mozgás közben. Ebben az esetben pedig újra kell tervezni a mozgást, amit nyílt hurkú szabályozók használatával érnek el. Így a teljes mozgást kis időszeletekre elosztva, mindig csak a következő időszeletet megtervezve lehetőség van észlelni és reagálni a külvilág felől érkező információkra. A külvilág érzékelése bonyolult művelet, a jelenlegi tudásunk alapján már nem egy gép szenzorjaival dolgoznak az algoritmusok, hanem több gép szenzoradatát összesítve, úgynevezett szenzorfúzióval állítják elő a külvilág modelljét, és ebben a modellben tervezik meg a következő mozdulatot.

Krisztián másik megvilágításból is bemutatta a robotprogramozást. A közönséggel közösen megállapodtunk, hogy a földön élő emberek kb. 0,3%-a tud programozni, és egy-egy robot felprogramozása egy konkrét feladatra – természetesen csak nagy átlagot tekintve – kb. 200 munkaóra. A KUKA-nál azt szeretnék elérni, hogy ennél sokkal többen tudjanak robotot programozni, akár programozói tudás nélkül is, ezért létrehozták az LBR iisy kísérleti platformot.

LBR iisy Product Image

Ez a robotkar érzékeny az emberi mozdulatokra, ezért képes az együttműködésre, és a Scratch-re megszólalásig hasonlító programozási felületet kapott. A gyártó cég fejlesztői elkészítik az egyes utasítások mögött álló bonyolult kódot, így a felhasználónak már csak az egyes magasszintű utasításokat kell grafikusan összeállítania a kívánt hatás elérésére. Ezt a rendszert nyílttá szeretnék tenni a külső cégek számára, akik eszközöket szeretnének gyártani a robothoz. (Eszköz alatt itt azt értem, hogy a robot „keze” cserélhető, így több feladatra is alkalmas lehet). A külső cégek elkészíthetik az általuk kifejlesztett eszközhöz tartozó programozói könyvtárakat, amit a felhasználó egy fogd és vidd művelettel a robotjához tud rendelni. Az így elkészített programkönyvtárak pedig letölthetőek lesznek egy erre a célra épített alkalmazásboltból.

Utolsó vendég előadónk Dr. Kiss Bálint, a BME Irányítástechnika és Informatika Tanszékének vezetője volt. Ő a mobil robotok fejlesztésének jövőjébe engedett bepillantást. A fejlesztők számára megoldandó feladatok összességét egy mocsárként jellemezte, amelyben vannak könnyű, nehéz és szinte megoldhatatlan feladatok. Ha a fejlesztők meg is oldanak egy-egy feladatot, a következő lépésük a mocsárban egy újabb problémához fogja vezetni őket. Így tekintve nagyon nehéz megmondani, hogy a vágyott végkifejlet mikor is fog elérkezni. Amit mondani lehet, hogy egyes részproblémák megoldásával milyen új alkalmazási lehetőségeink lesznek a közeljövőben.

Kétféle fejlődési irányt lehet megkülönböztetni, ahogyan el lehet jutni a teljesen önállóan működő mobil robothoz. Az első irányzat sokunk számára ismert, gondoljunk csak a mai autóinkra. Egyre többféle vezetést támogató rendszert építenek be a járművekbe, ezzel egyre több feladatot vállal át az autó a vezetőtől. Az ideális állapot az lesz, ha a vezetőnek egyáltalán nem marad majd vezetési teendője. Az ipari robotok esete pont ellentéte ennek. Az ipari robot az első pillanattól kezdve önállóan és biztonságosan kell végrehajtsa a rábízott feladatot, és idővel a robot környezete válik egyre bonyolultabbá, ahogyan egyre nő az igény az alkalmazásának sokféleségére. Először még csak egy elkerített privát térben tevékenykedett, ma már emberek és folyamatosan változó környezetben kell helyt állnia. Probléma, hogy nincs egy egységes szabvány a robotok biztonságos működésére. További probléma, hogy sokféle kihívással találkozhatunk egy mobilis robot fejlesztése kapcsán, ám ezek a kihívások már évtizedek óta léteznek, mint ahogyan a rájuk adott válaszok is.

A különbség a válaszokban az eltelt idő, ugyanis egyre jobb, pontosabb, korszerűbb válaszokat tudunk adni egy-egy kihívásra. Shakey volt az első robot, amely válaszolni kívánt a kihívásokra. 1966-tól 1972-ig fejlesztették és a maga korában egyedülálló volt. Az adott válaszok minőségének javulását többek között ilyen technológiák tették lehetővé: Li-Ion akkumulátor, Lidar, szenzorfúziós becslések, Kálmán-szűrő eljárás, GPU hardver, deep learning.

Végezetül megismerkedhettünk két, a mai kor tudása szerinti válasszal a mobil robot építés kihívásaira. Egy űrben használható robottal, Robonaut 2-vel, ami éppen a nemzetközi űrállomáson tartózkodik, és egy víz alatt használható változattal, Aquanaut-tal.

Robotok megtekintése

Először a robotkarokkal dolgozó fejlesztők laborjában megismerkedtünk az LBR iiwa robotok programozásával, működésével. Placskó András fejlesztő és Schieder Gábor csapatvezető mutatta meg nekünk, milyen egyszerű is egy robotot Scratch-szerű felületen programozni. Tíz-tizenöt parancsból álló kis programmal a robotkar képes volt egy golflabdát megfogni, és egy másik pozícióba áthelyezni. Ehhez természetesen az kellett, hogy ezeket a magasszintű utasításokat előtte a mérnökök elkészítsék. Egy másik robotkaron pedig azt tudtuk kipróbálni, hogy milyen az, amikor az ember együttműködik a robotkarral. Az első bemutató program mozgatta a kart, közben pedig valaki a kezét a kar útjába tette. Alig érintette meg a kar az akadályt, azonnal megállt. Számomra meglepően kis erőket is pontosan tudott érzékelni a robotkar. Másodjára pedig kézzel szabadon mozgathattuk a robotkart és követte az iránymutatásunkat. Így lehetővé vált a „megmutatom a pozíciót”-szerű betanítás, nem csak a vezérlőn keresztüli „addig léptetem, amíg jó helyre nem kerül” fajta.

A robotkarok után továbbmentünk a mobilis robotok laborjába. Itt is két bemutatót nézhettünk meg Baji Bence csapatvezető és Fehér Ágoston csapatvezetők jóvoltából. Ezek a robotok kerekekkel rendelkeztek, így tudtak helyet változtatni. Az első robotra felszereltek egy LBR iiwa kart is, melynek kezében egy kartonlap volt. A kartonlap két felén pedig David Hasselhoff, amint egyszer boldog, egyszer pedig mérges. A robot programja szerint: ha David Hasselhoff jókedvű, akkor a robothoz legközelebbi személy elől megpróbál elmenekülni, ha pedig mérges, akkor a legközelebbi személyt üldözőbe veszi. A két állapot között pedig a robotkart ért külső nyomás váltott. David Hasselhoff mindig a célszemély felé nézett. A fejlesztők elmondták, hogy szerencsénk van, mert ezt a projektet eddig csak a KUKA-s fejlesztőcsapat látta, még nem mutatták be sehol a közönségnek. A program célja pedig az, hogy legyenek olyan látványos és egyszerű alkalmazások, melyeket kiállítások alkalmával be tudnak mutatni, így szemléltetve a robotok képességeit.

A második elkerített részben három „raktáros” robot dolgozott, alágurultak az áruval megrakott polcoknak, kicsit megemelték, és a hátukon vitték a kijelölt új pozícióba. A három robot mozgását egy központi raktár menedzser program koordinálta. A robotok önmaguktól csak arra voltak képesek, hogy a négyzetrácsosan felosztott térben egy téglalappal odébb menjenek, és annak pontosan a közepén megálljanak. A több robot ütközésmentes mozgatását a menedzser program irányította, ami teljesen a budapesti központ fejlesztése.

Számomra az volt a meglepetés, hogy több százszor, vagy ezerszer megemelt, mozgatott és letett polcok pontosan három centiméter távolságban voltak egymáshoz képest. Ilyen pontos pozícionáláshoz elegendő volt mindössze a robotok alján található egy darab kamera, és a padló virtuálisan téglalapokra osztott területén, minden téglalap közepén elhelyezkedő QR-kód-szerű matrica.

Pizza és kötetlen beszélgetés

Az utolsó napirendi pont, a pizza és a beszélgetés következett. Laboda Krisztián mellett találtam helyet, néhány további érdeklődővel együtt. Arról kérdeztük Krisztiánt, hogy milyen feltételei vannak, ha valaki a KUKA-hoz szeretne jönni dolgozni, milyen programozási nyelvet érdemes tudni, milyen tapasztalati szint elegendő egy sikeres felvételihez, hogyan zajlik náluk a felvételi eljárás. Ő azt válaszolta, hogy sokféle programnyelvvel dolgoznak, a C, C++, C#, Java nyelveket biztosan használják, de előfordul náluk a JavaScript, TypeScript is, sőt, néha a Python-ra is szükségük van. Tapasztalati szint szerint a juniortól egészen a csapatvezetőig keresnek munkatársakat, természetesen nem egyszerre mindenfélét, inkább szükség szerint. Egykörös interjúkat szoktak tartani.

Nagyon érdekes délutánt töltöttem el a KUKA Hungary Kft. rendezvényén, ahol látszott, hogy sok vendéget megfogott a téma és az ipari robotos világ. Ha valaki érdeklődne hasonló nyílt napok után, érdemes a KUKA Global oldalt követnie a facebookon, mert várható, hogy a cég félévente újabb fejlesztői délutánokat fog szervezni.

A rendezvény szervezői nem engedélyezték a fényképezést.

Kik vettek részt projektmunkában?

Projektmunka

ProjektmunkaHasonlítsuk össze a részlegeket fókuszálva arra, hogy az alkalmazottak mennyire vettek korábban részt projektmunkákban! Hányan igen és hányan nem? Van(nak) olyan részleg(ek), amelyik vezetője egyetlen alkalmazottat sem vont be projektmunkába? Van(nak) olyan részleg(ek), ahonnan mindenki csatlakozott? Vannak a feladatkiosztásban olyan aránytalanságok, amelyek kimutathatók és így a későbbiek során korrigálhatók? Készítsünk egy kimutatást arról, hogy részlegenként hány fő vett részt projektmunkában és mi a létszám! (Persze tudjuk, hogy nem minden munkakörből vonhatók be alkalmazottak.) Milyen projektjeink szoktak lenni? Van olyan részleg, ahol érdemes bővíteni a létszámot, esetleg átcsoportosítani oda erőforrást? Ezekre a kérdésekre keressük a választ.

Tervezés

Az Oracle HR sémában három tábla kapcsolódik a feladathoz: JOB_HISTORY, EMPLOYEES, DEPARTMENTS. A kapcsolatok fokszámai láthatók az alábbi ábrán. Egy részlegben több alkalmazott is lehet. Egy alkalmazott részt vehetett korábban több projektmunkában is.

Oracle HR séma

A DEPARTMENTS táblában található a részleg azonosítója ( DEPARTMENT_ID, kulcs) és neve ( DEPARTMENT_NAME). A többi adat most nem kell. 11 olyan részleg van, amihez tartozik alkalmazott.

A JOB_HISTORY tábla tárolja, hogy a már befejeződött projektekben ki ( EMPLOYEE_ID, külső kulcs) és melyik részlegből ( DEPARTMENT_ID, külső kulcs) vett részt. A dátumokat ( START_DATE, END_DATE) és a munkakör külső kulcsát ( JOB_ID) most nem használjuk. Minden projekt lezárt. 10 lezárt projekt van.

Az EMPLOYEES táblából szükséges az alkalmazott azonosítója ( EMPLOYEE_ID, kulcs), valamint részlegének azonosítója ( DEPARTMENT_ID, külső kulcs). A többi adatra most nincs szükség, de egy részletesebb – például név szerinti – kimutatáshoz már igen. 106 olyan alkalmazott van, akihez tartozik részleg (1-nek nincs).

Hozzunk létre négy oszlopból álló eredménytáblát: DEPARTMENT_ID, DEPARTMENT_NAME, COUNT_PROJECT_EMPLOYEES, COUNT_EMPLOYEES. Ennek áttekintésével választ kaphatunk a fenti kérdésekre.

1. megoldás

Induljunk ki abból, hogy a JOB_HISTORY táblában lévő DEPARTMENT_ID-hez hozzárendeljük a DEPARTMENTS táblából a DEPARTMENT_NAME-t. Ezekre csoportosítva könnyen aggregálható az adott részlegből projektmunkát végző alkalmazottak száma: COUNT_PROJECT_EMPLOYEES. Végül egy belső lekérdezés (összekapcsolva a JOB_HISTORY és az EMPLOYEES táblákat) megadja az adott részleg alkalmazotti létszámát. Az SQL lekérdezés:

SQL-megold1a

A részeredmény:

SQL-eredmeny1a

Ezután állítsuk elő a hiányzó adatokat! Tudjuk, hogy azokban a részlegekben, amelyek DEPARTMENT_ID-je nem szerepel a JOB_HISTORY táblában, de szerepel az EMPLOYEES táblában, azok léteznek, de nem „adtak” projektmunkára alkalmazottat (azaz COUNT_PROJECT_EMPLOYEES=0). Nevük és alkalmazottaik száma ugyanúgy megadható, ahogyan az előbb. Az SQL lekérdezés:

SQL-megold1b

A részeredmény:

SQL-eredmeny1b

A két részeredményt egyesíteni kell és egyben hasznos DEPARTMENT_NAME szerint növekvő sorrendbe rendezni az alábbi lekérdező paranccsal:

SQL-megold1c

Az eredmény:

SQL-eredmeny1c

2. megoldás

Kiindulhatunk abból is, hogy a DEPARTMENTS egy szótártábla, így közvetlenül hozzáférhető a DEPARTMENT_ID és a DEPARTMENT_NAME, de össze kell kapcsolni az EMPLOYEES táblával, hogy csak olyan részlegeket adjon vissza a lekérdezés, ahol van(nak) alkalmazott(ak). Az eredményhez szükséges további két oszlop könnyen aggregálható az adott részlegre vonatkozóan: a JOB_HISTORY táblában előforduló EMPLOYEE_ID-k száma adja a COUNT_PROJECT_EMPLOYEES-t (probléma nélkül tud 0 lenni) és az EMPLOYEES táblában előforduló EMPLOYEE_ID-k száma adja a COUNT_EMPLOYEES-t. A rendezés most is szükséges. Lényegesen tömörebb lekérdező parancsot kapunk:

SQL-megold2

Az eredményül kapott táblázat megegyezik az 1. megoldás eredményével.

A két megoldás teljesen különböző gondolatmenettel született. Mindkettőben vannak olyan elemek, amelyek – konkrét feladatból általánosítva – univerzálisan használhatók. Természetesen összehasonlítjuk a két megoldás végrehajtási tervét és részletesen elemezzük is.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java adatbázis-kezelő tanfolyam 9-12. óra: Oracle HR séma elemzése, 13-16. óra: Konzolos kliensalkalmazás fejlesztése JDBC alapon, 1. rész, 33-36. óra: Grafikus kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalomhoz kapcsolódik.

Az SQL forráskód formázásához a Free Online SQL Formatter-t használtam.

Interjú Csolti Péterrel

Csolti Péter

Csolti Péter informatikatanár, az OKJ szakképzés területén dolgozik. Több intézményben is programozást tanít. A SZÁMALK-Szalézi Szakgimnáziumban a szoftverfejlesztő szak szakfelelőse.

Ismeretsége az informatikával a Word és az Excel programokkal kezdődött. Ehhez kötődik az első oktatói tevékenysége is, egy békásmegyeri közösségi házban. Valami még hiányzott, de nem tudta mi az. Hamarosan bővítette a palettát a grafikai majd, a tervezői irányba, természetesen a hozzájuk kapcsolódó szoftverekkel. De ez még mindig nem volt az igazi, pedig a műszaki rajzok miatt – jó értelemben – alig tudott aludni! Aztán ezek mellett az egyik munkahelyén egyszer csak programozni „kellett”… És akkor rátalált!

Közben és utána kipróbált néhány iskolát. Amiről papírja van az a gazdaságinformatika, számítógép-rendszerprogramozó, C# és Android tanfolyamok, de évről évre folyamatosan képzi magát, inkább célirányos, rövidebb kurzusokkal.

Csolti Péter

Az interjút Kaczur Sándor – az it-tanfolyam.hu alapítója és oktatói csapatának szakmai vezetője – készítette 2019. október 21-én.

K. S.: Mi motivált az informatika felé?

Cs. P.: A Commodore 64-től kezdődött – kb. 12 éves koromban – a dolog. A középiskolában még C64-et tanultunk, de még nem programozást. Sokat játszottunk a haverokkal: hetente legalább kétszer összegyűltünk és „toltuk az InterKarate 3-at”. Elsősorban nem a játék érdekelt, hanem az alkotás lehetősége. A kalandprogram írásának rejtelmei című könyvet kikölcsönöztem a könyvtárból és eldöntöttük, hogy közösen készítünk egy játékprogramot: a barátom szépen rajzol és én meg majd BASIC-ben leprogramozom.

K. S.: Milyen szakterületekben szereztél tapasztalatokat?

Cs. P.: Mérföldkövet jelentett a számítógéppel való kapcsolatom kialakulása során, amikor életem első Phong-árnyalású piros színű golyóját rendereltem a 3D Studio R4 verziójával – később ebből lett a 3ds Max – és láttam, hogy milyen szép és részletekben gazdag, és persze szembesültem azzal is, hogy milyen lassan készült el az állókép. Mindez odaszögezett és eldöntöttem, hogy ilyet akarok csinálni! Tetszett, hogy a grafikus programok szkriptelhetők, programozhatók, testre szabhatók. A grafika érdekelt, de nem ez jelentette a fő csapásirányt. Egy grafikus stúdióban dolgoztam, de inkább programozáshoz kötődő (rész)feladatokat láttam el. Nem szépet alkottam, hanem praktikusat és hasznosat. Szerettem rajzolni. A műszaki rajz is jól ment. Tervezőkkel, építészekkel kooperálva készítettem 3D látványterveket.

Évekig programoztam/szkripteltem a 3ds Max programban, kicsit kitekintettem az AutoCAD LISP nyelvére, de az nem ragadott magával. A Unity programozás is megfogott, a játékfejlesztéshez, grafikához és a virtuális valósághoz kötődve.

„Nem gombot szeretnék nyomkodni, hanem az érdekel, hogy mi történik a gombra kattintva és én azt akarom megírni! Nagyon rá tudok kattanni arra, hogy mi van mögötte.”

Ebben az élet úgy támogatott, hogy mindig adódott lehetőségem programozni. Az első munkahelyi élményem, hogy amikor programozni kellett, akkor jött a felismerés/érzés, hogy „na ezt vártam”. Megvolt az első flow élmény és az alkotás élménye azóta is megvan. Kicsit felemás, hogy nincs egy fizikai megjelenése a programozásnak, de azért megtestesült termék is bőven előállítható. Az alkotói folyamat továbbra is vonz, illetve az informatikához kötődő állandó fejlődés, megújulás is biztosított.

Néhány éve elkezdtem érdeklődni aziránt, hogy mi az informatika szerepe a gazdasági életben, azaz az IT hogyan tud támogatást nyújtani ehhez. Tettem egy kis kitekintést a számvitel és a könyvelés felé. Büszke vagyok magamra, hogy ezt abszolváltam és közben megfogalmazódott bennem, hogy „igen, most már tudom, hogy miért nem ebbe az irányba mentem”. Ha adódna lehetőség, akkor az üzemeltetés felé is szívesen nyitnék.

Az informatika egy feneketlen kút. Ezért akármerre fordulok/indulok, elárvultnak érzem magamat. Persze jönnek a pozitív megerősítések, hogy jól csinálom, amiket talán korábbi tapasztalataim alapján kialakult rutinnak köszönhetek. Érzem a diákokon is, hogy ők még nagyobb tengerbe csöppennek bele és nekik még „egypontnullásabb” a mentőmellényük, mint az enyém volt kezdőként. Szoktam mondani a diákoknak, hogy:

„Ha nem tudsz rákattanni arra, hogy hová nem tettél pontosvesszőt, akkor lehet, hogy nem neked való a szoftverfejlesztés. Nem ez a szakma szépsége, de fontos rész ez is. Következetesnek kell lennünk. Az nem megy, hogy tippelünk.”

K. S.: Hol találtál kapcsolódási pontokat a matematika és a programozás között?

Cs. P.: 15 évesen mágikus élmény volt számomra, amikor láttam, hogy egy térbeli modellezett alakzat megjelent a 2D monitoron és még forgott is. Lenyűgözött az, hogy emberek kitalálták a transzformációs mátrixokat, és azok milyen egyszerűen használhatók. Mindig nagyon jó matematika tanáraim voltak, de valahogy nem szerettem a tantárgyat. Ismerősöktől szívesen hallgatok a témakörben különböző problémákat, megoldásokat, algoritmusokat. Egy ideig aggódtam, hogy nem matek faktosként mi lesz majd velem, hogyan fog menni a programozás? Végül ez nem jelentett gondot. Néha érzem a határaimat egy nagyon absztrakt matematikai eszköztárat igénylő feladatnál, de ez természetes.

„Egy problémát addig érzel bonyolultnak, amíg meg nem oldod. Ez megerősít abban, hogy a megoldással szintet léptél.”

K. S.: A programozás tanításában hogyan jutsz el a starttól a célig? Legyen a start a nyelvi/szintaktikai problémák és a cél az OO tervezési minták.

Cs. P.: Onnan indulunk, hogy megpróbáljuk megfogalmazni a számítógép számára érthető módon a megoldandó feladatot. Tanuljunk algoritmusokat! Mondjuk azt – egyszerűsítve –, hogy minden algoritmizálható és három építőkockánk van: szekvencia, szelekció, iteráció. Egy darabig a szintaktikáról szól a történet és az építőkockákból építkezünk. Egy következő szint, amikor már nem határozzuk meg a feladatspecifikációban, hogy milyen építőkockákat és adatszerkezeteket használjunk, hanem ezeket fel kell fedezni, ki lehet választani, azaz bővül a mozgástér. Elvonatkoztatunk az eddigi konkrétumoktól.

Jönnek az objektumorientált alapelvek. Modellezünk, tervezünk, leképezzük a valós világ dolgait osztályokká és megvalósítjuk azokat objektumokkal. Átgondoljuk, hogy mi mivel/mikkel jellemezhető, mivel mi történik. Az OO három alapelvét – egységbezárás, öröklődés, polimorfizmus – hangsúlyozni kell. A szakdolgozatokban már kijöhetne az OOP ereje/előnyei, de ez sokszor még nem dominál. Az OKJ-ban a jószívű ötöshöz elegendő az OO szemlélet helyes alkalmazása: helyes modellezés, saját osztály(ok), helyes egységbezárás, koncepcionálisan helyes öröklődés.

Nagyobb projektekben már megjelen(het)nek az elosztott alkalmazások és a tervezési minták is. Igazi szakmai kihívás eddig eljutni a tananyagban és a diákoknak átadni azt, hogy „ha eddig eljutsz, akkor nagyon fogsz tudni szárnyalni”.

K. S.: Mi motiválna, ha karriert váltanál?

Cs. P.: Nyilván van az a pénz… Most az életpályám pedagógusi szakaszában vagyok, így innen tudnám megközelíteni a váltás lehetőségét. Ami itt tart jelenleg, az a szoftverfejlesztő szak menedzselési lehetősége. Az iskola hangulata is tetszik. A céges légkört is élveztem, amikor korábban kijártam oktatni. Ha csak azt csinálnám, akkor hiányozna az iskola légköre. Szereztem korábban ipari tapasztalatokat – nem multi környezetben –, de annyira nem éreztem jól magamat, hogy önmagában a pénz ott tartson.

K. S.: Kipróbálnád magadat külföldön?

Cs. P.: Mindkét testvérem élt és dolgozott már külföldön néhány évet, így van némi rálátásom erre. Örültem, hogy meg tudták csinálni. Alapvetően nem változott meg az életük. Persze újdonság, kipróbálható, de önmagában az, hogy külföld nem vonz a dolog, inkább „itthon ülő” vagyok. Nem attól boldogul az ember, hogy külföldön él.

Csolti Péter

K. S.: Ha a szakmai pályafutásod hossza 100 egység, akkor jelenlegi tapasztalataid alapján hol tartasz, és milyen mérföldköveket fogalmaznál meg ehhez kötődően?

Cs. P.: 20 évesen láttam a Kardhal című filmet. Éreztem, hogy hú: ha nem feltétlenül hackerré, de ilyenné kell, hogy váljak! Akkoriban 10 egység körül lehettem. Mindenféle cégnél dolgoztam és körvonalazódott, hogy ez nem én leszek, de a szakmai érdeklődés megmaradt. Ha jönne most egy hasonló kihívás, akkor azt nem tudnám elengedni, illetve nem szívesen engedném el. Egyébként annó a film után, jó pár év elteltével, de kaptam egy ilyesmi lehetőséget. Jól jött, hogy ismertem a Perl nyelvet, belecsöppenve a linuxos világba, egy asztrológia-párkapcsolati-társasági oldalt fejlesztettünk. Az idő tájt még javában dübörgött a Flash, ami szerencsére akkoriban a kisujjamban volt, a horoszkópot programozottan számoltattuk, rajzoltattuk vele.

A mostra az 50-et mondanám. Van még hová és akarok is fejlődni. Nyolc éve léptem a tanári pályára. Aktuálisan az oktatás és a módszertan irányára koncentrálok. Az OKJ-ben szükséges a módszertan. Jelenleg a helyemen vagyok.

Hogy újabb mérföldkő lesz-e? Talán attól is függ, hogy az IT milyen technológiát hoz egyre közelebb a hétköznapjainkba. A Big Data és a mesterséges intelligencia közül engem inkább az utóbbi tudna megfogni. 5-10%-ot minden évben hozzátettem az informatikai tudásomhoz. Az utóbbi időben ez inkább online kurzusokat jelent.

K. S.: Rád keresve a Google alig ad találatot. Tudatos, hogy ennyire korlátozottan vagy jelen online?

Cs. P.: Nagyon szeretem saját magam kézben tartani a dolgokat. Bizonyos értelemben introvertált vagyok, kissé antiszociálisba hajló módon. A magánéletnek meg kell maradnia magánéletnek. Féltem szakmai versenyektől gyerekként. Nem éreztem azt, hogy bizonyos helyeken már megmérettem magamat, így hiányzott ez a fajta szakmai önbizalom. Ez a mentalitás megmaradt: annak ellenére, hogy ma már tudom, hogy ebben-abban jó vagyok, mégsem érzem azt, hogy ezt-azt meg kellene osztani, ki kellene rakni. Tudatos törekvés a részemről a minimális online jelenlét. Fotó is csak az utóbbi időben érhető el rólam, az is csak azért, mert néhány helyen kötelező volt. Amióta elérhetőek a különböző chat platformok, azóta fennáll a veszélye annak, hogy a világon több ezer km-re lévő „ismerősödről” többet tudsz, mint a közvetlen szomszédodról.

Én szeretem magam megélni a saját élményeimet. Nem fotózom például, helyette inkább belül tárolom el az élményt/infót. Nem érzek késztetést arra, hogy ezeket megosszam. Nem akarok időt szánni az online jelenlétem „karbantartására”. Akikkel szeretném megosztani ezeket a dolgokat, azokkal személyesen éljük át az élményeket.

K. S.: Alapvetően más a diákokhoz/hallgatókhoz való hozzáállás az OKJ szintjén és a felsőoktatásban…

Cs. P.: Az OKJ-ban jellemzőbb a személyes kontakt és jobban van helye a fejsimogatásnak. A felsőoktatás kevésbé egyénre szabott. Az OKJ-ban a tutori, mentori feladatok markánsabban jelen vannak. A felsőoktatásban mindezek inkább csupán a tehetséggondozásra korlátozódnak.

A diplomához is adhat lendületet az OKJ. Egyrészt felmentésekkel a felsőoktatásban szóró-tantárgynak tekinthető programozás tantárgyakból, másrészt a tanulásban szerzett tapasztalatok – általában is – hasznosnak bizonyulnak.

K. S.: Milyen visszajelzéseket szoktál kapni az elhelyezkedett diákjaidtól?

Cs. P.: Alapvetően nem a programozási nyelvet kérik tőlük, hanem inkább a helyes objektumorientált gondolatmenetet. Elegendő munícióval keresnek állást a munkaerőpiacon. Az első fél-egy év komoly tanulással szokott telni, de tudnak mire építkezni. Például OO tervezési minták, adatbázis-tervezés. Fontos megerősítés, hogy hasznos az, hogy kimerítően foglalkozunk a szoftverfejlesztő képzésben például az adatszerkezetekkel és a programozási tételekkel, amivel megalapozható az absztraktabb dolgok felé vezető út. A többség tesztelőként helyezkedik el először és kb. fél-egy év gyakorlat után lépnek tovább a fejlesztői pozíciók irányába. Főleg a webes és a mobil irány a jellemző. A Java és a C# nyelvek esetében nagyobb arányban és kiforrottabban van jelen az OO. A webes vonalon (PHP és JavaScript) mindezek másként és kevésbé fordulnak elő. Ez a szakdolgozatok színvonalán is jól megfigyelhető.

Minden diákunktól visszajön, hogy támogatják, mentorálják őket a kezdeti időszakban. Az önálló szakmai fejlődésre vonatkozó igény mindenhol jelen van a szoftverfejlesztő szakmában. Néhol el is várják, hogy úgymond főiskolai/egyetemi végzettséget is előbb-utóbb szerezzenek. Az OKJ-ről továbbtanuló diákok tipikus visszajelzése: „az egyetem = OKJ + matek”.

Szervezett formában nincs alumni követésünk, de gyakran előfordul, hogy a szakdolgozati konzulensükkel egy ideig még tartják a kapcsolatot a diákok, sőt, gyakran visszajönnek az iskolába látogatóba. Ilyenkor felkeresnek szaktanárokat is.

K. S.: Az OKJ képzéseket rendszeresen átalakítják. Most is egy ilyen időszakban vagyunk…

Cs. P.: Amikor hozzányúlnak egy OKJ képzéshez, akkor a koncepció általában világosan látszik és jó is mindig az irány, de a megvalósítás nem mindig sikerül. Most egyelőre annyit lehet tudni, hogy a szoftverfejlesztő szak új nevet fog kapni: szoftverfejlesztő és –tesztelő. Ebből látszik, hogy merre megy a hajó, de az óraszámokat és a témakörök arányait még nem ismerjük (még a ráépülések esetében sem). Hasznos, hogy egyre inkább összecsengenek az OKJ szakok követelményei és a valós munkaerőpiaci igények.

K. S.: Hol van az OKJ helye a munkaerő-piacon?

Cs. P.: Alapvetően jó képességű diákokról van szó. Igény mindenképpen van rá. De ez nem végállomás, csupán egy mérföldkő. Több végzett diáktól is hallottam, hogy OKJ-vel megpályázott olyan pozíciót is, ahová diplomát kértek és fel is vették. Olyan helyeken, ahol nem várnak el több éves gyakorlati tapasztalatot és/vagy nem igényelnek komplex tervezést/modellezést, belépő szintként elegendő az OKJ végzettség. Kezdő/belépő/gyakornoki pozíciókról beszélünk. Alapvetően a szakmai hozzáértés/tapasztalat számít az iparban – ebből a szempontból a papír mellékes lehet. Hasznosnak gondolom, hogy az oktatásban rendelkezésre áll az OKJ – mint lépcsőfok.

K. S.: Az informatikai OKJ szakok között mennyire jellemző, hogy átjárhatóak?

Cs. P.: Az SZVK-k bizonyos mértékben lehetővé teszik ezt. Adott a törekvés arra, hogy a kétéves informatikai OKJ képzésekben az első év legyen közös. A gyakorlatban ez nem tud teljesen megvalósulni és nem is biztos, hogy egészséges. Joggal merülhet fel egy CAD-CAM informatikusban, hogy miért kell neki annyit tanulnia a hálózatokról, mint egy informatikai rendszerüzemeltetőnek, illetve náluk meg miért kell annyi programozást tanulnia, mint egy szoftverfejlesztőnek. 10%-nyi előrehozott szakmai tartalmat engedélyez a kerettanterv. Emiatt az első évben, motivált hozzáállással az átjárhatóság megoldható, azonban ha valaki menekül egy adott szakról, annak nincs szerencséje a felzárkózással. A második évben az átjárás már ésszerűtlen (lenne).

K. S.: Mit tanácsolnál azoknak a diákoknak, akik most szeretnének dönteni/választani az OKJ és a felsőoktatás között? Hasznos lehet némi pályaorientáció a szoftverfejlesztéshez kötődően.

Cs. P.: Sokan azért választják az OKJ-t, mert az „csak OKJ”. Ez úgy értendő, hogy talán kicsit könnyebb és egyszerűbb lesz. Ez még belefér (képesek rá és rövidebb is a képzés). Sokan nem mernek vállalkozni a főiskola/egyetem után. Kettős a hozzáállás: többen túl könnyűnek („ez csak ennyi?”), többen pedig túl nehéznek („miért tanuljuk ezt a nehéz témakört is, amikor ez egy OKJ?”) érzik. Néhányan nem érzik magukat a helyükön, de nem azért mert tényleg nincsenek a helyükön, hanem azért mert ez fejben dől el. Többen úgy gondolják, hogy játékfejlesztők lesznek, mert nagyon szeretnek játszani. Nyilván önmagában ez még kevés.

„Jobb, ha támogatunk valakit abban, amit akar (nyilván ha már tudja, mit akar). Sokkal inkább, mintha csak úgy elindítjuk egy irányba (ha még nem tudja, mit akar)”.

Aki még nem próbálta ki magát ebben a témakörben, az mindenképpen OKJ-vel kezdje, mert jóval hamarabb lesz sikerélménye. A felsőoktatásban tovább tart a sikerhez vezető út.

Aki még nem annyira tanult meg önállóan tanulni, annak is az OKJ-t javaslom, hiszen itt ebben is fejlődhet. A felsőoktatásban nem lesz/lenne ideje/lehetősége megtanulni tanulni.

Az OKJ esetében már két év múlva papírja lesz ahhoz, hogy bármihez kezdjen. Nem tanácsolnám, de akár önálló vállalkozásba is belefoghat. Inkább azt javaslom, hogy szakmai munkát végezzen.

Ha alapvetően nem tudom, hogy milyen motivációval jön a diák (hiszen előfordul, hogy ő sem tudja még), akkor pro-kontra elvekkel tudom orientálni.

Csolti Péter

K. S.: Milyen soft skillek szükségesek/hasznosak a szoftverfejlesztőknek?

Cs. P.: Konkrét skilleket nem neveznék meg, inkább példákat hoznék. Rendszerben gondolkodni, folyamatokat átlátni, illetve egy lépéssel előre látni/tervezni mindenképp szükséges. A logikus gondolkodás is elengedhetetlen, de persze nem a matematikai megközelítésben. A hozzáállást tekintve fontos, hogy merjen próbálkozni, merjen elindulni egy úton, merje felvállalni a saját döntését. Önálló kutatásra is legyen képes. Ne csak passzív befogadó legyen a tanulás során. Kell egyfajta elszántság, kitartás és belső motiváció is, hiszen néha olyan dolgokat is meg kell tanulni, olyan projektekben is részt kell venni, amit nem (mi) szeretnénk.

„Nem jó az a klisé, hogy az informatikus kocka csendben kockul és az jól van úgy, hiszen szakmai véleményt kell nyilvánítania, megfelelően ki kell fejeznie önmagát, képviselnie kell szakmai álláspontját.”

Meggyőzően akkor lehet kommunikálni egy projektfeladatról, ha otthon is belerakott időt/energiát. Ha ez hiányzik vagy kevés, akkor nyilvánvaló, hogy a dolog nem fog menni, de egyben egyértelmű az is, hogy mit kell azért tenni, hogy menjen. Ha egy feladat nincs precízen specifikálva, akkor is nagyon sok mindent észre kell vennie a sorok között. Az angol nyelvtudás nélkülözhetetlen.

Kell reális önismeret is. Egyben nyitottnak kell lenni a világra, a környezetünkre is. Értsd úgy, hogy a fejlődéshez nem a gép előtt töltött idő mennyiségét kell növelni, hanem annak minőségét is. Egy-egy új feladatnál fontos, hogy tudja: menni fog, mert ilyet már csinált, van benne tapasztalata, látott már hasonlót, tud kitől kérdezni, becsülhető meddig fog tartani (és van is annyi időm), illetve: be kell látnia, hogy valami nem fog menni (esetleg csak időhiány miatt).

A társas együttműködés lényeges a szoftverfejlesztésben. Akár virtuálisan is. Akár angolul is. Önállóan is kell tudni dolgozni. Lényeges a beilleszkedés, a tudja hol a helye. Megfelelő hozzáállás: a neki kiosztott részfeladatot akkor is el kell végeznie, ha a másik nem csinálta meg a sajátját. Iskolai környezetben könnyebb elevickélni a projektmunkákban mások farvizén, mint valós feladatokkal munkahelyi környezetben. Előbbi esetben nem szabad azt leszűrni, hogy hatékonyan tud kooperálni – pedig nem.

K. S.: Megfogalmazhatók eltérések a különböző OKJ képzést folytató intézmények között?

Cs. P.: A képző intézmények között mindenképpen vannak különbségek. A kimenetnek elvben azonosnak kellene lennie. Ez egyértelműen szerepel az SZVK-ban (Szoftverfejlesztő szakmai és vizsgakövetelmények). A vizsgafeladatok egyik része központi – tehát egységes –, és nagyságrendileg az első tanév tananyagát kéri számon. A vizsgafeladatok másik része az intézmények hatáskörébe tartozik, azaz a helyi tanárok állítják össze a feladatsort, és többnyire a második tanév szakmai anyagára vonatkozik. Utóbbi esetben követelmény, hogy grafikus felülettel rendelkező komplex alkalmazás legyen. Itt máshová helyezhetők a hangsúlyok (algoritmusok, adatbázis, tervezés, hálózatos kommunikáció, játékfejlesztés), attól függően, hogy ki és mit tanított.

A szakfelelős egy intézményben összefogja a szakot és felelős annak szakmai tartalmáért. Nem kötelező, hogy egy-egy intézményben legyenek szakfelelősök. Úgy tűnik, hogy ott, ahol vannak, szervezettebb/összefogottabb az élet és magasabb színvonalú a kimenet, illetve ahol nincsenek, ott jóval gyengébb a kimenet és nagyobb a szórás. Az óraszámok és tantárgyak tematikájának összeállítása során adott némi mozgástér. A szakfelelős feladata ezek meghatározása, egyeztetése, kialakítása, illetve belsős és óraadó tanárok felkérése a szakhoz kötődő tantárgyak oktatására, tananyagainak kidolgozására és a számonkérés lebonyolítására. A szakfelelős akkor tudja a munkáját eredményesen és hatékonyan végezni, ha megfelelő támogatást kap az intézmény vezetőségétől, illetve amikor egy-egy nem szakmai vélemény/igény/elvárás nem írja felül a szakmai szempontokat. Azokban az intézményekben, ahol több/sok szak is van, nem elvárható a vezetőség részéről, hogy mindegyikhez értsen, ezért is lényeges a szakfelelős szerepe.

K. S.: Milyen markáns különbségeket tapasztalsz a nappali és esti képzésre járó diákok között?

Cs. P.: A nappali tagozatra többnyire közvetlenül érettségi után jelentkeznek a diákok. Sajnos náluk jellemző a következő motiváció, némileg kisarkítva: annyit fog majd keresni, hogy az első fizetéséből is majd jachtot fog venni az unokája. Simán bemondják a 4-600 ezer forintos nettó fizetési igényt. Mindez persze messze nem reális. Ha valaki motivált, akkor nappalisként jóval több ideje van a képzés során, hiszen fiatal, még nem dolgozik, nem családfenntartó.

Az esti/felnőtt képzés esetén általában 25 év felettiek, és már rendelkeznek némi munkatapasztalattal, szakmai gyakorlattal. Náluk sokkal nagyobb a motiváció és tudatos a szándék, hogy ezt miért akarja végigcsinálni. Többnyire karrierváltók. Velük könnyebb dolgozni, annak ellenére, hogy lényegesen kevesebb idejük adódik tanulni, munkahelyi kötelezettségeik is vannak, esetleg gyerekeket is nevelnek.

Az is előfordult, hogy valakiben a képzés során tudatosult, hogy „nekem egy baromi jó szakmám van, és nem fogok váltani”. Úgy érezte a képzés felénél (egy év után), hogy két év alatt a szoftverfejlesztésben nem fog odáig eljutni, ahol jelenleg a másik szakmájában tart. Szerintem ez a pozitív megerősítés hosszú ideig ki fog nála tartani. Messze nem biztos, hogy bármilyen szakmából könnyen válhat valaki szoftverfejlesztővé.

K. S.: Milyen tévhitekkel találkoztál a szoftverfejlesztő képzéshez kötődően?

Cs. P.: Van egy pályaalkalmassági tükör – kvázi egy szintfelmérő, orientáló – amely segít eligazodni/eldönteni, hogy „alkalmas vagyok-e szoftverfejlesztőnek”. Elterjedt tévhit: mindenki úgy gondolja, hogy erre a szakmára alkalmas. Gyakran lezajlik az alábbihoz hasonló párbeszéd:

– Miért nem grafikusnak, orvosnak, biológusnak mentél?
– Mert ahhoz nincs készségem, ahhoz nem értek.
– És mit tudsz a szoftverfejlesztésről?
– Semmit, de azt biztosan meg tudom tanulni.

Mintha mindenki azt gondolná, hogy a szoftverfejlesztéshez nem kell „kézügyesség” (vagy egyebek), hanem beülök, a tanár elmondja, hogyan kell csinálni, megértem, megtanulom és milliomos leszek. Nem tudom, ez hol csúszik el, de a köztudatban ez van.

A másik gyakori tévhit, hogy aki szeret játszani, azt érdekli az informatika és egyben ért is hozzá.

K. S.: Vannak ösztöndíjak az OKJ képzésben?

Cs. P.: Igen, adott intézményi ösztöndíj és állami ösztöndíj is. Függhet a tanulmányi eredménytől, hiányzástól, szakmai eredményektől. Lehet jelképes összegű ösztöndíj, ami arra jó, hogy jól mutat később az önéletrajzban. Előfordulhat komolyabb összegű ösztöndíj is, amivel már lehet tervezni is.

K. S.: Követed a szakmai blogunkat? Van kedvenc olyan cikkünk, amit ajánlanál diákoknak?

Cs. P.: Amikor szakmai tartalomra vágyok, ötletet akarok meríteni, akkor természetesen a repertoárban benne van a szakmai blogotok. Azt nem mondhatom ebben az évben, hogy heti rendszerességgel visszajárok bármilyen oldalra, de azt igen, hogy a jókat rendszeresen felkeresem.

Nem emelnék ki egyetlen cikket, inkább azt, hogy a koncepció, a naprakészség, az aktualitás, a profizmus átsüt az egészen. Rengeteg hasznos, érdekes olvasmány található Nálatok, javaslom a szemezgetést. Kezdve a kipróbálható egyszerűbb – Hello World! másképpen – kódoktól, az adatbázison át az előadásokig, sok minden van. Ezt az IT karrier interjúsorozatot is egzotikumnak vélem a palettán. Szóval nem emelnék ki cikket, de azért javasolnék a diákoknak valamit: a záródolgozatukkal kapcsolatban sokat mondom, hogy ne arra törekedjenek, hogy „javíthatatlan”, befejezett, szakemberek által kikezdhetetlen munkát adjanak le, persze rakjanak bele mindent, hanem arra, hogy legyen meg a koncepciójuk, tudják, hogy az adott problémára miért azt a megoldást választották. Ezt az érzést, illetve a tanácsom magyarázatát láthatják a blogotok szakmaiságában, megjelenésében. Megéri felkeresni és időt szánni rá a tanulmányok során. Talán utána is.

K. S.: Véleményeznéd tanfolyamaink tematikáit?

Cs. P.: Nem titok, hogy nagyságrendileg a könyved alapján tanítok. Azért esett rá a választás, mert nem találtam más, módszertanilag ilyen jól felépített könyvet. Persze jó, hogy vannak benne gyakorló feladatok, meg kidolgozott példák is. A sokéves oktatói tapasztalat nagyon érződik. Röviden szólva: ugyanezt gondolom a tanfolyamaitok tematikáiról. Persze van, amit én máshogy csinálok/csinálnék, de biztosra veszem, hogy számodra ezeknek megvan a helye és nem véletlenül került oda. Hogy mondjak példát is, ilyen a fájlkezelés, talán az OKJ kimenet miatt, de jóval előrébb hozom az alapjait. Mélységeiben ráér később is. Illetve megemlíteném a tervezési mintákat, ami egy haladó, absztrakt szint. Ott a helye az OO ismeretek bővítésénél, én mégis valahogy külön kezelem, az OOP „elsajátítása” után mintegy ablakot nyit a következő szintre.

K. S.: Van kedvenc IT-s idézeted, mémed?

Cs. P.: Nem is tudom… ami van, az kicsit talán elcsépelt. Ha akarod, akkor felidézhetek ezekből, azonban egy időben gyűjtöttem a diákok válaszait, név nélkül természetesen. Van néhány, amire emlékszem, IT oktatós körökben szerintem megállják a helyüket:

– Mi a strukturált program jellemzője?
– Hogy teljesen strukturált.

– Mire jó a Scratch?
– Egy állatnak parancsokat lehet adni, és az végre is hajtja őket.

– Milyen számokkal tesztelnéd a fenti algoritmust?
– Háromfélével: 0, negatív és pozitív számmal.

– Mi a különbség az osztály- és az objektumdiagram között?
– Az objektumdiagram részletes, míg az osztálydiagram a felületes tervezést szolgálja!


Blog bejegyzéseink IT karrier témakörben

Csolti Péter

Interjú Csolti Péterrel

Csolti Péter informatikatanár, az OKJ szakképzés területén dolgozik. Több intézményben is programozást tanít. A SZÁMALK-Szalézi Szakgimnáziumban a szoftverfejlesztő szak szakfelelőse. Ismeretsége az informatikával a Word és az Excel programokkal kezdődött ...
Bővebben
/
Révész András

Interjú Révész Andrással

Révész András alapvégzettsége biológus, ökológia szakiránnyal. Szakmai pályafutását tájökológiával kezdte, azon belül is élőhely térképezéssel, amihez kötődik a térinformatika. Négy évig kutatás-fejlesztéssel foglalkozott az MTA Ökológiai és Botanikai Intézetében, majd ...
Bővebben
/
Schmidt Attila

Interjú Schmidt Attilával

Schmidt Attila három éves szoftverfejlesztői gyakorlattal (főként Android platformhoz kötődően) és két éves szoftvertesztelői tapasztalattal rendelkező mérnök-informatikus. Az interjút Kaczur Sándor – az it-tanfolyam.hu alapítója és oktatói csapatának szakmai vezetője ...
Bővebben
/
Takács Roland

Interjú Takács Rolanddal

Takács Roland egyéves automatizálási teszt mérnöki és ötéves professzionális adatbázis-kezelés (MSSQL, Oracle) tapasztalattal rendelkező mérnök-informatikus. Jól érzi magát multikulturális környezetben. 2017 nyara óta külföldön él és dolgozik. 2018 őszétől PL ...
Bővebben
/
Lovas Bertalan

Interjú Lovas Bertalannal

Lovas Bertalan 22 éves pályakezdő szoftverfejlesztő. A kütyük mindig érdekelték. Hivatásként és hobbiként is gondol a programozásra. Sportos, korábban dzsúdózott, tornázott és a műugrást is kipróbálta. Korábban részt vett a ...
Bővebben
/

Interjú Görög Ibolyával

Görög Ibolya protokollszakértőt mindenki ismeri, bemutatni nem szükséges. De mégis illik, legalább röviden: 1987-től 1999-ig a Miniszterelnöki Hivatal protokollosa, majd protokollfőnöke volt, illetve 1999-től felnőttképzésben oktat. Érdeklődési körébe tartoznak: viselkedéstörténet, ...
Bővebben
/

Interjú Szűcs Tiborral

Szűcs Tibor mérnök-informatikus. Jelenleg a Corvinus Egyetem Koordinációs Irodáján dolgozik órarendszerkesztőként. Ez a feladat a létesítménygazdálkodáshoz kötődik és ő osztja be – sok-sok szempont alapján – az előadásokat, szemináriumokat, számítógépes ...
Bővebben
/
Nádai Gábor

Interjú Nádai Gáborral

„Nádai Gábor vagyok, de sokan leginkább Mefiként ismernek, a legtöbb felületen a @mefiblogger nicknév alatt vagyok elérhető. Eredetileg mérnökinformatikusként végeztem, a kétezres évek közepén a fősuli mellett saját vállalkozásba kezdtünk ...
Bővebben
/
Markovics Győző

Interjú Markovics Győzővel

Markovics Győző nem­zet­kö­zi kap­cso­la­tok sza­kos köz­gaz­dász, va­la­mint po­li­to­ló­gi­át is ta­nult a Bu­da­pes­ti Cor­vi­nus Egye­te­men. Az egye­tem­től fő­ként időt ka­pott – fel­nő­ni a kép­zés alatt. Gya­kor­la­ti is­me­re­te­it min­dig mun­ká­val sze­rez­te. Csa­lá­di ...
Bővebben
/

SzámOkt 2019

logo-emt

EMT, SzámOkt 2018Az Erdélyi Magyar Műszaki Tudományos Társaság (EMT) Számítástechnika Szakosztálya által – évente – szervezett XXIX. Számítástechnika és Oktatás Konferencia – SzámOkt 2019 Temesváron került megrendezésre 2019. október 10-13-ig. Társszervező volt a Sapientia Erdélyi Magyar Tudományegyetem Marosvásárhelyi Kar. Párhuzamos rendezvény volt XX. Energetika-Elektrotechnika Konferencia – ENELKO 2019 az Erdélyi Magyar Műszaki Tudományos Társaság (EMT) Energetika-Elektrotechnika Szakosztálya és a Magyar Energetikai Társaság (MET) társszervezésében.

A konferencia célja:

  • lehetőséget teremteni az erdélyi és külföldi magyar szakembereknek tudományos eredményeik bemutatására, illetve szakmai kapcsolatteremtésre és tapasztalatcserére,
  • az erdélyi magyar számítástechnikusok – középiskolai és egyetemi tanárok, rendszergazdák, egyetemi hallgatók, vállalkozók, felhasználók – számára találkozási lehetőséget biztosítani egy olyan rendezvényen, melynek keretében beszámolhatnak legújabb tapasztalataikról az oktatás, kutatás terén,
  • hogy egy átfogóbb képet nyújtson a magyar kutatók munkásságáról és eredményeikről, mint az informatika területén dolgozó magyar kutatók/fejlesztők fóruma.

8 témakörben hirdették meg az előadóknak a jelentkezési lehetőséget:

  • Számítástechnika és oktatás,
  • Algoritmika és programozás,
  • Informatikai alkalmazások,
  • Irányítástechnika, automatika, méréstechnika,
  • Képfeldolgozás és mesterséges intelligencia,
  • Elosztott és párhuzamos rendszerek, cloud rendszerek,
  • Hálózati kommunikáció és Internet, IoT, Industry.4.0,
  • Gazdasági informatika.

Letölthető a konferencia programja.

Már 2015-ben és 2018-ban is részt vettem előadóként ezen a konferencián szakmai előadással és magyar nyelvű cikkel. Ezek a publikációs listámban megtalálhatók.

2019-ben két előadást tartottam „Térképek dinamikus ábrázolása Google Charts, Java és JavaScript eszközökkel”, valamint „Kik vettek részt projektmunkában? – Java esettanulmány az Oracle HR sémára építve” címmel 2*15 percben, amelyek a konferencia „Számítástechnika és oktatás” című szekciójába kerültek. Az előadásokra sok-sok ábrával, képernyőképpel, technológiai apróságokkal/részletekkel/érdekességekkel készültem. A cikkeim is megjelentek a konferencia kiadványában. Négy párhuzamos szekció volt és sokan vándoroltak közöttük érdeklődési körüknek megfelelően, de kb. 30-an megfordultak a „Számítástechnika és oktatás” szekcióban. Nagyon tetszett Kádek Tamás kolléga előadása a ProgCont API-ról és a több évnyi tapasztalat összegzése az online programozó versenyek automatizált értékelési rendszeréről. Izgalmas kitekintést jelentett számomra a hardver architektúrákról (és ezek programozásáról) szóló két előadás, amelyeket Bakó László és Drótos Dániel kollégák tartottak. A Budapest-Temesvár és vissza utazás is valódi élményt jelentett. Ritkán töltünk kollégákkal együtt annyi időt, amennyit most autóztunk. Közben tartalmasakat beszélgettünk.

SzámOkt 2019

Az előadásaim prezentációját ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Az első előadásom témája a Java EE szoftverfejlesztő tanfolyam 13-16. óra: JSON feldolgozás alkalmához, a második előadásom témája a Java adatbázis-kezelő tanfolyam 29-32. óra: Konzolos kliensalkalmazás fejlesztése JDBC alapon, 2. rész alkalmához kapcsolódik.