Pasztuhov Dániel

Programozásoktatás

Programozásoktatás

Ingyenes állami programozóképzés - mi várható a kompetenciateszten?

... és hogyan készülhetsz fel rá?

2020. augusztus 15. - Pasztuhov Dániel

Zajlik az ingyenes állami informatikai karrierváltó program, melynek első lépése mostanában zárul(t) le. Ez egy 8 hetes képzés volt, melynek során videós tartalmakkal és kapcsolódó kvízekkel szűrték meg az érdeklődőket. A vizsga első körét a héten tartották.

Az Újratervezés Program következő állomása az ún. kompetenciateszt, melyben a képző intézmény(ek) az illető programozásra való alkalmasságát igyekeznek lemérni.
Nekünk is van egy ilyen kompetenciatesztünk, mely egyben a saját képzésünk belépési pontja is.

Az egyik kapcsolódó Facebook-csoportban (Újratervezés Program Tanuló Szoba) elindult a találgatás, hogy vajon egy programozási kompetenciateszt milyen elemekből fog felépülni.

A következőekben a saját álláspontomat fogom leírni, ami nem hivatalos álláspont, pusztán saját lassan 20 éves oktatási tapasztalatomból leszűrt esszencia. Ez idő alatt nagyon sok tanuló útját tudtam végigkísérni a kezdetektől az egyetem befejezéséig vagy az állás megszerzésééig, sőt néha még azon túl is.

Milyen kognitív készségek szükségesek a programozáshoz és mi várható a kompetenciateszten?

    • Logikai készségek

      A programozásban nagyon sokszor van szükség a logikára. Le kell tudni vonni bizonyos megadott alapfeltételekből származó következtetéseket, és ez szinte mindennapos.

      A mi tesztünkben ezeket a készségeket mérik a sütis feladatok.

      Készülni erre az aspektusra leginkább általános iskolai szöveges matematikai feladatokkal vagy akár IQ-tesztek kitöltögetésével lehet – természetesen a programozás mellett.

    • Precizitás, odafigyelés

      Ha végig is csináltad az Újratervezés Program feladatait, akkor biztosan találkoztál már azzal, hogy ha a programban lemarad egy írásjel (pont, pontosvessző stb), akkor az már nem érthető a számítógép számára. Ilyenkor jó, ha gyorsan meglátod, észreveszed a problémát.

      Ez persze programozás közben magától is fejlődik, ha kellően tapasztalt vagy, akkor egy oldalnyi kódban, ránézésre is észre tudod venni, hogy melyik sor végén maradt le a pontosvessző.

      A tesztünkben ennek a készségnek a felmérésére szolgálnak azok a feladatrészek, amikor a formátumnak pontosan kell illeszkednie az elvárásokhoz (pl. az egyik sütis feladat).

      Készülni erre az olyan feladatokkal tudsz, amikor két majdnem egyforma kép között kell észrevenni a különbségeket – vagy debugolással…

    • Analitikai képességek

      Ez arról szól, hogy nem csak ki tudod következtetni az alapfeltételekből a végeredményt, hanem mindezt általánosítani is tudod, illetve meg tudod határozni egy összetett rendszer alapelemeit, látod, hogyan épül fel, a részek miként kapcsolódnak össze.

      A tesztünkben az a feladat értékeli ezt a tulajdonságot, amelyikben betűkkel és műveleti jelekkel kellett leírni a sütisütés során használt összefüggést.

      Készülni erre úgy tudsz, hogy olyan szöveges példákat oldasz meg, amelyek egyszerű egyenletekre vezethetők vissza (általánosítás).

    • Olvasott szöveg értése (angolul is!)

      Programozóként nagyon sokat kell majd szakmai szövegeket olvasnod. Egyrészt új programozási eszközök leírását, másrészt a feladatot megfogalmazó specifikációt… Illetve amikor elakadsz, akkor az internetes oldalakat olyan megoldások után kutatva, ami pont az általad használt eszközök kombinációjára vonatkozik (pl. Bootstrap + alap Javascript). Mert persze a nem Bootstrapes megoldás nem lesz jó, a nem alap Javascriptes (hanem mondjuk Angularos) megoldás szintén nem. Ez nagyon sok olvasást, sőt, még inkább sok “átfutást”, “átnézést” (skimmelést) fog jelenteni. (Egy videót – ha van is – nem tudsz skimmelni, maximum felgyorsítani, de annak is van egy határa…)
      Kell tudnod tehát szakmai szöveget gyorsan és pontosan feldolgozni, és utána használni.

      A tesztünkben az utolsó két (változós) feladat ezt hivatott lemérni.

      Készülni olvasással tudsz, programozással kapcsolatos leírások mellett pl. receptek vagy használati utasítások átfutásával, és a lényegi információk felidézésével.
      (Az angolt nem említem külön, az angol nyelvű szakmai szövegek megértése mellett a nyelvtudás az ügyfelekkel vagy külföldi kollégákkal való kapcsolattartás miatt lehet még fontos.)

    • Algoritmizálás

      Kapcsolódik az analitikai képességekhez, de nem teljesen azonos. Itt arról van szó, hogy egy tevékenységet hogyan tudsz elemi lépésekre lebontani.

      A tesztünkben a teknőcös és az utolsó feladat ezt méri.

      Készülni egyrészt “használati utasítások” készítésével lehet. Biztos van valamilyen hobbid, amiben professzionális vagy: főzés, sütés, barkácsolás, növénytermesztés, kutyaidomítás… Találj a területeden belül egy konkrét tevékenységet, és azt magyarázd el, írd le valakinek, akinek azon a területen egyáltalán semmi alapképzettsége nincsen. Pl. nagyon finom hagymalevest tudsz készíteni, akkor írd le a receptjét, pontosan úgy, ahogyan te szoktad csinálni. Legjobb, ha ezt tényleg ki is próbálod valakivel, aki visszajelzést tud adni arról, hogy megértette-e az instrukciókat vagy sem. Elképzelhető, hogy olyan tudást tételeztél fel róla, amit nem birtokol. Főzés esetén ilyen nem egyértelmű utasítások pl. “annyi lisztet tegyél bele, amennyit felvesz”, “a galuskatésztát galuskatészta-sűrűségűre keverjük”, “majd úgyis látod, hogy jó” (mert aki kezdő, az nem látja és nem tudja, milyen sűrű a galuskatészta, mert sosem még látott olyat sem).

      Másrészt pedig programozással: mégpedig olyan példák írásával, ami az Újratervezés Program videóiban található egyszerű algoritmusok szintjén kezdődik, vagy még jobb, ha valamilyen csavarral, vagy akár több ilyen kombinálásával oldhatóak meg. (A mi képzésünk első 11 fejezetében rengeteg ilyennel találkozhatsz – a rendszer kiértékelője azonnal teszteli is a programodat, és jelzi, ha valamit nem jól írtál meg).

Hogyan tudunk mi segíteni?

  • Próbáld ki a mi kompetenciatesztünket! – ingyenes

    Ha még nem töltötted ki, akkor itt lehetséges. Ingyenes, 20-30 perc alatt megvan.

  • Kóstolj bele a programozásba! – ingyenes

    Ha már kitöltötted a tesztet, akkor van (volt) egy kéthetes lehetőséged az első 5 fejezet ingyenes végigtanulására, és ha elég jól sikerült a teszt, akkor még mentori támogatás igénybevételére is lehetőséged van (volt).
    A programozási kompetenciateszthez kapcsolódó készségek valószínűleg programozással fejlődnek a legjobban. �
    (Ha ezt a lehetőséget esetleg elszalasztottad, írj az info@studicore.hu címre, vagy regisztrálj be egy másik emailcímmel…)

Bízom benne, hogy ezekkel az információkkal tudtam segíteni.

Sikeres felkészülést kívánok!
Pasztuhov Dániel

Tanácsok home office-hoz

Negyedik éve vezetjük online programozásoktató cégünket távmunkából, “home office”-ból, és mindketten (CEO és CTO) dolgoztunk már ezelőtt is otthonról. Szeretnénk megosztani eddig összegyűlt tapasztalatainkat:

  1. Ismerd meg magadat!
    Akármilyen tanácsokat is kapsz, nem biztos, hogy pont neked működni fognak. Vannak introvertált és extrovertált emberek, vannak külső és belső kontrollosak. És nyilván vannak különböző élethelyzetek is, hogy mást ne mondjak: van gyerek vagy nincs gyerek. Így lesz ez ezzel a felsorolással is. Elmondjuk, hogy nekünk mi működött, és ami tetszik, próbáld ki, és ha működik, fogadd meg!
  2. Találd meg a produktív időszakaidat!
    Nálunk ebből vannak nehézségek. Az ügyvezető inkább délutántól aktív, a CTO pedig délelőtt és este. A közös metszet a délután és este, ami a szociális élet szempontjából nem optimális.
    A lényeg, hogy – ha a céged lehetővé teszi – találd meg azt, hogy számodra mi a legjobb munka szempontjából. Produktív időszakban gyorsabban, hatékonyabban és nagyobb kedvvel el tudod végezni azokat a feladatokat, mint egyéb időszakokban. Találd meg, neked mi működik!
  3. Alakítsd ki a munkahelyedet!
    Ha most kezdesz home office-ban dolgozni, akkor nincs munkahelyed a lakásban. Nyilván most rengetegféle helyzetben rengetegféle (vész)megoldás elképzelhető. Ideálisan üríts ki egy szobát munkavégzésre, ahol lehetőleg kevéssé zavarnak, vagy esetleg egy sarkot egy másik funkcióval is rendelkező szobából, de – ha lehet – legyen egy külön tered a munkához. (Tudom, tudom, ha gyerekek is vannak, akkor ez nem könnyű…)
  4. Alakítsd ki a munkakörnyezetedet!
    Azon kívül, hogy ráböksz egy sarokra vagy szobára, érdemes a berendezésen is elgondolkozni. Más egy asztal vagy szék, ha leülsz mellé enni (30 percre) és más akkor, ha napi 8 órát tervezel azon a helyen dolgozni. Próbálgass, találd meg a megfelelő asztalt, széket.
    A gerincünk védelme érdekében célszerű szemmagasságba helyezni a gép képernyőjét (akár könyvekkel alátámasztva), és – ha laptopról van szó – külső billentyűzettel, egérrel használni.
  5. Zárd ki a külső ingereket!
    Ha elmélyülést igénylő munkát kell végezned, akkor zárd be a Facebookot. Ha a cégnél bentről tiltották, akkor meg különösen. Hasonlóképpen az email fiókkal, a telefont meg érdemes lehalkítani vagy repülőgép üzemmódba tenni.
  6. Építs be szüneteket!
    Ez megint egy egyéni kérdés. Én (CTO) inkább belemélyedek és órákig csinálom a feladataimat, a CEO-nk pedig gyakrabban igényli a szüneteket. Tapasztald ki, hogy neked mi a jó megoldás! Nézz utána a Pomodoro-technikának is!
  7. Munka-magánélet egyensúlya
    Ha nincsenek külső keretek, akkor az ember hajlamos szétcsúszni, és vagy túl keveset (alig), vagy túl sokat dolgozni. Hosszú távon célszerű az egyensúlyra törekedni, és a produktív időszakok ismeretében beosztani a munkaidőt és a magánélet idejét.
    Azaz még akkor is, ha nincs kötött munkaidő (vagy egyébként sem, vagy a home office miatt), akkor is érdemes egy napi menetrendet kialakítani, amire azt mondja az ember, hogy “most dolgozom”. Ez is segíthet megfelelő mentális állapotba kerülni, másrészt segíthet abban, hogy kicsit jobban elváljon egymástól a munka és a nem munka.
  8. Használd ki a home office nyújtotta előnyöket!
    1. Otthon vagy, így nyugodtan haladhat a házimunka is munka közben: berakod a mosógépet, elindítod, dolgozol, másfél óra múlva (akkor érdemes is szünetet tartani, kiteregetsz (10 perc)
    2. Ha többen a családból otthon vagytok, együtt ebédelhet a család, amire normál időszakban keveseknél van lehetőség.
    3. Ha van teraszod, erkélyed, és jó az idő, dolgozz a szabadból! Főleg ha eddig irigykedve nézted azok fotóit, akik ezt megengedhetik maguknak. Most te következel! Legyen neked is irigylésre méltó munkakörnyezeted!
    4. Most, hogy home office-ban vagy, megspórolod az utazási időt (és költséget). Ez Budapesten átlagosan naponta akár 1,5-2 órát is kitehet. Gondolkozz el, mit kezdhetsz a felszabaduló idővel. Képezd magad, tanulj új dolgokat, hogy a vírushelyzet lecsengése után egy a korábbiaknál sokkal jobb pozícióból vághass neki a folytatásnak!

Kiegészítés családosoknak

a két pici gyerekkel otthonról dolgozó ügyfélszolgálatosunk tollából:

  1. Ha az otthoni munkavégzésed mellett a gyereke(i)d napját is vezényelned kell, nem vagy könnyű helyzetben, de van egy jó hírem! A küldetés nem lehetetlen! Ami ebben a legnagyobb segítségedre lehet, egy közös NAPIREND.
    Az ideális rendszer felállításához azonban valóban idő kell: először összegyűjtöd, kinek mi az ideális menetrend, majd igyekszel a közös pontokba kapaszkodva addig gyúrni, hogy mindenkinek megfelelő legyen az első vázlat. Szedd össze mindazt a tevékenységet, aminek bele kell férnie az adott napba, és mindenhez legyen meg a rászánt időkeret is. Aztán napról napra finomítod, amíg tarthatóvá nem válik.
  2. Érdemes a gyerekek napirendjéből kiindulni: a bölcsi/ovi/suli rendszerét tudod alapul venni.
    Ha kicsi gyermeked van (ovis/bölcsis) fel kell készülnöd arra, hogy jó esetben 40-60 percre képes magát elfoglalni, utána szükség lesz egy kb. 20-30 perces közös elfoglaltságra. Tervezzétek ilyenkorra a közös házimunkát játékos formában, főzzetek együtt, vagy adj ki hasonló részfeladatokat. A lényeg, hogy ő is könnyebben elfoglalja magát, ha tudja, hogy anya/apa most dolgozik, de utána együtt játszotok egy picit. A kicsiknél előny, hogy még rávehető 1-2 óra alvásra, csendes pihenőre ebéd után, amikorra beiktathatod a komolyabb odafigyelést igénylő feladatokat.
  3. Ha már iskolás korú a gyermeked, a napi suli szinte ugyanúgy lefoglalja, mintha iskolában lenne, persze az étkezésekről akkor is gondoskodni kell. Viszont ne feledd, a te felelősséged, hogy a gyermek valóban leüljön tanulni, de nem te vagy a tanár, aki leadja neki az anyagot. Jelöljetek ki minden nap egy órát, amikor átbeszélhetitek, hol akadt el, és hogyan tudja erre magától megtalálni a megoldást. Beszélj a többi szülővel, kérj segítséget a tanároktól, de ne vedd a nyakadba a tanítást, hacsak nincs rá kapacitásod. Inkább segíts neki, hogy önállóan meg tudja oldani a problémáit! Eleinte lehet, hogy hosszabb lesz ez az idő, amíg átbeszélitek a napi elakadást, de meg fogsz lepődni, mennyi önállóságot fog tanulni ebből a helyzetből, és hogyan fog hétről hétre ügyesedni, belerázódni a problémamegoldásba. És amíg ő “iskolában” van, addig te is ragyogóan tudsz haladni a munkáddal.
  4. Ha megvan a nyers napirend, minden nap vizsgáld felül, és javítsd addig, amíg nem érzed úgy, hogy ezt már sikerrel tartani tudjátok.

Egyik oktatónk tapasztalatai

Számomra a döntő kérdés a határok kijelölése, betartása volt, fizikai/térbeli, időbeli és tevékenységbeli egyaránt.

Egy külön szoba/sarok nagyon kellett, de időben is meg kellett szabnom, hogy mikor mivel foglalkozom. Ez az alvásra is vonatkozott, beletelt pár hétbe, mire kikísérletezgettem, hogy mi a jó, személy szerint a nagyjából fix lefekvés és felkelés a napirendem alapja. Mivel az agyam reggel sokkal aktívabb, egy óra mínusz a felkeléskor óriási kiesés. A nap végén (kinek mikor) pedig meghúzok egy határt, ami után már nem foglalkozom a dologgal, ez nálunk a hétfő és csütörtök esetén ugye nem érvényes, itt inkább másfél napos ciklusok alakultak ki, összegezve inkább azt mondanám, hogy a ritmus megtalálása a kulcs.

A tevékenység esetén pedig a legfontosabbnak a multitasking minimalizálását (lehetőleg nulla közelébe) tartanám, sok energiát megspórol nélküle az ember. Amikor flow-ba kerülök, fontos, hogy azt kihasználjam, amikor pedig pihenő idő van, akkor pedig tényleg kikapcsolódjak, legjobb esetben a friss levegőn, bár ez most korlátozott.

Szóval mindent egybevetve, a saját szabályok/szokások kialakítása szerintem az alap.

+1. Adj magadnak időt átállni!
Azt érzékeljük a társadalmon, hogy mindenki egyből tökéletesen akar mindent csinál(tat)ni. A tanároktól azt várják, hogy 2 nap alatt legyenek képesek tökéletesen kiforrott távoktatást nyújtani, a cégek pedig ugyanolyan hatékonyságot várnak el most, mint a korábban megszokott módszerekkel.
Egy normál esetben 10-20 ÉV(!) alatt bekövetkező változást nem lehet napok alatt meglépni.
Adj magadnak időt, és engedd meg magadnak, hogy kezdetben ne optimális megoldásokat használj vagy próbálj ki. Oktatócégként nagyon jól tudjuk, hogy az egyik legnagyobb demotiváló erő az önmagunkkal szembeni túlzott elvárás. Mert örökös kudarcélményhez vezet, és a vége a megkeseredés és a (tanulás) feladás(a). Home office-ra váltani is egy tanulási folyamat. Szóval: engedd meg magadnak, hogy ne legyen minden tökéletes azonnal! Engedd meg magadnak, hogy hibákat kövess el! És engedd meg magadnak a tanulás lehetőségét: ami most nem megy jól, azon változtass, és majd később jobban fog menni. Vagy ha nem, változtass még. Gondolkozz úgy, hogy nem az a fontos, hogy azonnal jól menjen, hanem az, hogy mindig egyre jobban.

Nagyon sok kitartást kívánok mindenkinek ezekre a nehéz időkre!
Pasztuhov Dániel

Szeretnéd-e a programozást? – I.

Nem csak a programozás...

Nem csak a programozás…

Visszatérő téma az ügyfélszolgálatunkon az, hogy egy leendő tanulónk amiatt bizonytalan, mert nem tudja, hogy maga a programozás örömet okozna-e neki. Mert a pénzt és az időt szívesen rászánná, de ha a végén nem érzi magát boldogabbnak, mint a jelenlegi munkájában, akkor nem érte meg a folyamat az áldozatot.

Ez egy teljesen érthető szempont, és erre szeretnék reflektálni a sorozat három blogcikkében. Az első rész általánosabb, nem kizárólagosan a programozáshoz kapcsolódó szempontokat sorol fel.

A cég

Az első dolog, ami eszembe jutott: mielőtt oktató és vállalkozó lettem volna, dolgoztam programozóként is. Nagyon érdekes volt megfigyelni, hogy két cég közül az egyiknél nagyon szerettem dolgozni, a másiknál pedig nagyon nem. Annak ellenére, hogy mindkettő esetében programozás volt a feladatom.

Annál a cégnél, aminél szerettem dolgozni, jó kapcsolatban voltam a főnökkel, elismerte a munkámat, a feladataimat 100%-osan el tudtam látni, sikereket értem el a szoftver fejlesztése során (pl. észrevettem, hogy egy gyakran használt funkciót hogyan lehet háromszorosára gyorsítani), érdekelt az a téma is, amiben az adott cég a szoftverét gyártotta. Tehát minden ideális volt (kivéve a fizetést és a pénzügyi nehézségeket, aminek következtében mint utolsónak érkező, először kényszerültem távozni).

A másik cégnél nem voltam jó kapcsolatban a főnökkel, a munkatársaim egy része elég idegesítő személyiség volt, a főnök rendszeresen ordítozott (valójában eléggé hiányosak voltak a vezetői készségei). Az eszközök, amiket használtunk, számomra (akkor még) újak voltak, és nem igazán foglalkozott senki a betanítással. A téma is távolabb állt tőlem, amiben a programot kellett készíteni. A munkámat nem ismerték el, sőt, igazából folyamatosan az volt az érzésem, hogy nem vagyok elég jó nekik, én vagyok a megtűrt személy (pl. az irodához másfél év alatt sem lett saját kulcsom, és nem lett céges emailcímem sem).

A “szeretem”-céghez szívesen mentem be, sőt, alig vártam, hogy beérjek, a “nemszeretem”-cégnél meg alig vártam, hogy leteljen a munkaidő (az megvan, amikor az ember időzítőt állít be, hogy mennyi van még hátra a napi munkaidejéből?), reggel meg alig bírtam kikecmeregni az ágyból, és a legkisebb hőemelkedéssel is rohantam az orvoshoz…

Az első dolog, amit mondani akarok, hogy nagyon fontos, hogy a megfelelő (hangulatú) céghez / csapathoz menj, miután programozni már megtanultál. És lehet, hogy ugyanolyan eszközökkel, ugyanolyan feladatot kell megoldanod, de az egyiknél jól fogod érezni magad, a másiknál meg nem.

A munka – túl könnyű, túl nehéz?

Boldogtalan a munkahelyén az ember nemcsak a cég, a csapat vagy a főnök miatt lehet. További aspektus az, hogy ha a munka már csuklóból megy, nem jelent kihívást, így az ember egyszerűen megunja, mert nincs lehetősége a fejlődésre. Ennek következtében boldogtalan.

De lehet pont a másik véglet is, amikor meg úgy érzi, hogy a rábízott feladat meghaladja a képességeit, nem elég jó hozzá, ilyenkor meg az alkalmatlanság érzése gyötri. Ez esetben pedig a frusztráció miatt nem érzi teljesnek az életét.

A két véglet között jól kell belőni az arany középutat, hogy kihívás is legyen, de ne legyen túl sok, és ez amúgy az oktatásban is nagyon-nagyon fontos. Egy tantermi tanfolyam esetében nagy veszély az, hogy a tanfolyam haladási sebessége nem felel meg pontosan a mi igényeinknek: lehet, hogy elveszítjük a fonalat, lehet, hogy csak unatkozunk az elején.

Ha már nem kérdés, hogy szeretnéd-e a programozást, próbáld ki magad ingyenes tesztünkön, amit itt tudsz kitölteni.

Pasztuhov Dániel

 

Hogyan lett Edit GYED alatt programozó?

Bizonyára sok ember forgatja a fejében, hogy megtanul programozni. Cél lehet, hogy karriert váltson, vagy egy kreatívabb munka végzése, magasabb jövedelem elérése, esetleg az hajtja, hogy szabadabb életet élhessen.

Ha elkezdjük megvizsgálni a lehetőségeket, nagyon sok kérdés felmerülhet szinte azonnal: Alkalmas vagyok-e rá? Elegendően idős / fiatal vagyok-e már / még a programozáshoz? Az a jó, ha nő vagy az a jó, ha férfi vagyok? Majd ezen túlmenően: Milyen utat is válasszak a tanuláshoz? Végülis, ha nem értek hozzá, honnan tudjam, hogy igaz-e, amit egy oktatócég állít? Ha utánanézek egy-egy Facebook-csoportban a dolgoknak, valószínűleg nem leszek biztosabb a dolgomban: a gyakorló programozók között sok negatív véleményt is lehet olvasni a karrierváltókról...

De azért mégiscsak jó lenne programozásból élni...

Szóval csináljam, vagy ne csináljam? - lehet a végső kérdés.

Nagyon szerencsésnek tartom magam, hogy egyik - a segítségünkért nagyon hálás, StudiCore-os - tanulónk hajlandó volt válaszolni néhány kérdésre a tapasztalataival kapcsolatban. Olvasd el, és mérlegeld ezeket a szempontokat is.

Át is adom a szót Bognár Editnek:Hol tartasz most?
Lassan kilenc hónapja Java backend-es fejlesztőként dolgozom egy szuper szoftverfejlesztő cégnél, ahol már eddig is rengeteget fejlődtem, de a tanulás még korántsem ért véget.

Miért döntöttél úgy, hogy belevágsz a programozástanulásba?
Gyeden voltam otthon a kisfiammal, és úgy döntöttem, hogy nem az előző szakmáim egyikében (matematika-fizika szakos tanár, tankönyvfejlesztő szerkesztő) akarok majd tovább dolgozni a gyed/gyes letelte után, hanem új területen próbálom ki magamat. Baráti tanácsra esett a Java programozás tanulására a választásom. Azt kell, hogy mondjam, remek tanács volt, érdemes volt megfogadnom.

Mi alapján választottál képzési formát?
Mivel otthon voltam a másfél éves kisfiammal, nálam csak az online képzésforma jöhetett szóba, olyan tanfolyamot kerestem, amit teljes egészében otthonról el lehet végezni.

Mi volt a legnagyobb kihívás a tanulás során?
Az, hogy semmilyen informatikai előképzettségem nem volt, így minden új volt, mintha kínaiul akartam volna megtanulni. De aztán idővel sok sikerélményt begyűjtöttem, és ez erőt adott a tanulás folytatásához.

Mi segített átlendülni a nehezebb időszakokon?
Az, hogy nem akartam feladni. Mert úgy éreztem, hogy ha nehezen is, de sikerül majd megoldanom az adott feladatot, illetve sikerül megértenem az adott elméleti részt. És ez mindig így is lett. Így utólag már nyilvánvaló számomra, hogy nagy butaság lett volna bármikor is feladni.

Mi volt a tapasztalatod a munkaerőpiacon, az interjúkon?
Nagynevű cégekhez nem sikerült bejutnom, de a kevésbé ismert cégeknél sikerültek az interjúim. Két helyre is felvettek volna, én dönthettem, hogy melyik ajánlatot fogadom el végül. Mindez a munkakeresés elkezdése után két héttel történt. (Azóta is folyamatosan keresnek meg fejvadászok, de nyilván ez már nem érdekes a számomra.)

Hogyan telik egy napod? Mik a tapasztalatok, így pár hónap után a szakmában?
Lényegében egész nap programozok, és közben rengeteg új dolgot tanulok.

Mennyire volt elég a tanfolyam anyaga a boldoguláshoz a munkahelyeden?
Nagyon jó alap volt, és az interjúhoz is elég volt, de utána még rengeteget kellett, és kell most is tanulnom.

Mit tanácsolnál azoknak, akik most készülnek belevágni vagy épp kicsit megakadtak?
Ha sikerült jól megírniuk a tanfolyam belépő tesztjét, akkor az azt jelenti, hogy rendelkeznek azzal az észbeli, logikai képességgel, ami a tanfolyam elvégzéséhez szükséges. Így már csak a szorgalmukon és kitartásukon múlik, hogy végigcsinálják-e a tanfolyamot. Érdemes.

UTF-8, UTF-16, Unicode, ASCII

Informatikai szakkifejezések érthetően 1.

A számítógépprogramozásnak – hasonlóan más szakmákhoz – megvan a maga tolvajnyelve: a programozók egymás közötti kommunikációját megkönnyíti, és nyomokban elősegíti az összetartozás kialakítását is.
Ahogyan a laikus ember nem érti az orvosokat vagy akár egy napellenzőgyár alkalmazottjának a beszédét úgy a programozással ismerkedő sem érti feltétlenül azt, amit egy számítógépprogramozó, informatikus mond.
Az egyik tanulónk javasolta, hogy írjunk az olyan szavakról, amiket az informatikusok használnak, de az ismerkedők még nem értenek. Ráadásul meg is lepett egy listányi szóval, amiből álljon itt az első téma.

Azt szerintem már mindenki hallotta, hogy a számítógép egyesekkel és nullákkal dolgozik, meg hogy kettes számrendszert használ. Ami ebből most nekünk fontos, hogy alapvetően a számítógép számokkal dolgozik. Felmerülhet a kérdés, hogy hogyan is lesz akkor a számokból ikon, ablak, grafikon,… vagy egyáltalán egy betű, amit el tudunk olvasni. Az első része is elképesztően érdekes, de maradjunk most csak annál, hogy hogyan lesz a számokból (amit a számítógép kezel) betű (amiket akár most is olvasni tudsz).

A megoldás pedig az, hogy van a számítógépnek egy táblázata, amiben egymáshoz kapcsolja a számokat (mondjuk azt, hogy 65), azzal a kis piktogrammal, amit mi nagy A betűnek ismerünk fel. A számítógépnek amúgy elképzelése nincs arról, hogy ez a nagy A betű amúgy nekünk bármit is jelent, csak azt tudja, hogy ha megkérjük rá, hogy egy 65-ös számnak megfelelő piktogramot rajzolja ki, akkor előveszi a megfelelő táblázatot, és kinyomtatja az A betűt nekünk.

Honnan is jöhet amúgy ez a szám?

Pl. fájlokból. Ha megnyitjuk a notepad programot, és beleírunk egy A betűt, elmentjük, akkor kapunk egy 1 bájtos fájlt, amiben a 65-ös szám szerepel, amit ha megfelelő módon olvasunk vissza, akkor hozzátársíthatjuk az A szimbólumot, és akkor el tudjuk olvasni.

Kép eredeti helye: http://esoerik.blogspot.com/2012/10/remaking-windows-terminal-blocky-font.html

Miért pont az A és a 65-ös szám került egymáshoz?

Ez tulajdonképpen pont annyira esetleges, mint az, hogy olaszul az este az, hogy “sera”, angolul, hogy “evening”, magyarul meg hogy “este”. Ez egy választás volt, amit valahol valaki meghozott, a többiek meg átvették.
És ahogyan több beszélt nyelv is létezik, több ilyen szám-piktogram összerendelés is létezik. (Ezeket az összerendeléseket nevezik amúgy karakterkiosztásnak vagy kódtáblának, esetleg kódlapnak).

Az első, széles körben elterjedt ilyen kiosztás az ASCII volt, mely először a 0-127 közötti számokhoz határozta meg a kapcsolódó karaktereket (a piktogramok), majd kiegészítéssel végig fixálta a 0-255 tartományban, hogy milyen számhoz milyen karakter tartozik.

Alapvetően ez egy amerikai találmány volt, és arra szolgált, hogy az amerikaiak karaktertárolási igényeit kielégítse, tehát nem volt a karakterek között (eleinte) semmilyen ékezetes betű, majd a 255-ig való kibővítéskor beletettek néhányat a világ nyelveinek speciális karakterei közül. 128 jel azonban nem volt elegendő minden nemzet speciális betűinek tárolására, így kialakult több, egymással rivális, egymással nem kompatibilis (azaz nem együttműködő) kódlap. Erre az időre tehető a legnagyobb káosz: csak Magyarországon kb. ötféle egymással versengő kódlapot használtak az emberek (852, Windows-1252, Latin2…), és ebből a Windows is kétfélét (egy a terminálban (“cmd-ablak”), egyet pedig a grafikus felületen, szóval a Windows még önmagával sem volt kompatibilis.

A káoszban rendet kellett tenni, de alapvetően a gond az volt, hogy nem volt elég hely új karaktereket eltárolni (a mostani számítógépek a 8 bináris számjegyből álló bájtot tekintik alapegységnek, ami 0-255-ig tud számokat tárolni, és azt rögzítette az ASCII, hogy minden karakter egy bájt lesz).

Mindenféleképpen több lehetőség kellett. Az első gondolat az volt, hogy akkor használjunk két bájtot minden karakter ábrázolásához, ez biztosít 65536 különböző lehetőséget, ami elég soknak tűnik. (Nem volt elég). Viszont van néhány probléma vele: az egyik, hogy minden szövegfájl kétszerannyi tárterületet foglal (most nem az 1 bájtos A betűt tartalmazó fájlunkat tekintve, ami így 2 bájt lesz, hanem inkább a több 10 megabájtos fájlok esetében lesz ez probléma). A másik probléma pedig az, hogy a notepad program nem fogja tudni egyáltalán kezelni az új fájlokat (legalábbis addig, amíg fel nem fejlesztik hozzá az új verzióban).

Ennek a megoldására jött létre az UTF-8, mint a Unicode karakterek leírási formátuma. Nem fixálja azt, hogy egy karaktert hány bájton kell leírni, tehát lehet 1, 2, …, és úgy hozták létre, hogy ha egy bájt egy karakter, akkor az megfelel annak az összerendelésnek, amit az eredeti, 128 jelet tartalmazó ASCII használt. Ennek következtében az ékezetes betűket nem tartalmazó UTF-8 kódolású szövegfájlt megnyitva egy nagyon-nagyon régi szövegszerkesztővel, azt el fogjuk tudni gond nélkül olvasni. (Az A betű ASCII és UTF-8 esetén a 65-ös bájtnak felel meg). Az ékezetes betűket a réges-régi, ASCII szövegszerkesztő pedig többkarakteres kriksz-kraksznak fogja ábrázolni.

Az UTF-16 esetében nincs opció arra, hogy egy karakter egyetlen bájtot foglaljon el, mindenképpen legalább 2 bájt egy karakter.

Ha te még csak ismerkedsz a témával, és nem tudod még, hogy alkalmas lennél-e programozónak, íme egy ingyenes teszt: töltsd ki, és megtudod!

Pasztuhov Dániel

P.S. Ha esetleg hozzáértő vagy, tudd, hogy ez a bejegyzés teljesen kezdőknek szól, így jelentős és szándékos egyszerűsítéseket tartalmaz.

Miért olyan nehéz megtanulni programozni?

Amit ebben a cikkben fogok írni, azt kivételesen nem saját kútfőből írom. Az elmúlt időszakban olvastam egy könyvet, amiben találtam egy olyan gondolatot, ami kapcsolódik a programozástanuláshoz is. A könyv Ken Blanchard: Vezetés magasabb szinten c. műve volt.

 

A könyv egyik jelentős gondolata, hogy a különböző tudásszinten lévő beosztottakat különböző szintű vezetéssel célszerű irányítani.

Vezetés szempontjából elkülöníti az irányítás (megmondja a vezető, pontosan miket csináljon a beosztott) és a támogatást (lelkesítést, biztatást).

Az alkalmazottakat szakmai tudásuk szintje szerint a könyv négy csoportra osztja:

  • lelkes kezdő, aki nagy örömmel dolgozik, de hozzáértése még alacsony szinten van, így közvetlenül kell még irányítani. Lelkesíteni viszont kevésbé kell, hiszen az megvan
  • kiábrándult tanuló, aki elszenvedte első kudarcait, rájött, hogy nem annyira könnyű az új területen helytállni, a lelkesedése alacsony szintű. Őt az irányítás mellett még támogatni, lelkesíteni is kell, hogy tovább tudjon lépni
  • óvatos haladó, aki már szakmailag egyre magasabb szinten van, de a lelkesedése még nem tért vissza. Őt lelkesíteni még mindig kell, de szakmai irányításra már kevesebb szüksége van
  • magabiztos profi, akinek a szakmai hozzáértése is és a lelkesedése is (újra) megvan. Őt leginkább csak hagyni kell dolgozni

Vetítsük át mindezt a programozástanulásra!

Amikor nekikezdesz, akkor még nagyon lelkes vagy, bár semmit nem tudsz még. Minden érdekel, minden lázba hoz, örülsz az új információknak, minden egyre fokozza az élvezetet. Aztán ahogy telik-múlik az idő, előbb-utóbb lesz egy olyan rész, ami mégsem annyira hajlik meg az akaratod előtt: megakadsz egy feladatnál, egy témánál. Ha ez néhányszor előfordul (Ken Blanchard szerint ez törvényszerű), akkor jön a "kiábrándult tanuló" fázisa: nem lesz már kedved folytatni, a lendület elillan.

Egy kiábrándult tanuló két irányba léphet tovább:

  1. csak azért is kitart, és megy tovább, amelynek következtében előbb-utóbb (természetesen sok erőfeszítés árán) eljut az óvatos haladó, majd a magabiztos profi szintjére.
  2. feladja, és elkönyveli, hogy a programozás nem neki való. Ez a választás nagyon gyakori, főleg azok körében, akik autodidakta módon tanulnak, pedig sokszor csak némi bátorításra lett volna szükség.

Szóval ha (programozás)tanulásra adod a fejed, akkor tudd, hogy előfordulhatnak olyan helyzetek, amikor nehéz lesz, készülj fel rá lelkileg, és adott esetben tedd meg a szükséges lépéseket: kérj támogatást (nem elsősorban szakmailag), meríts erőt abból, amiért az egészet elkezdted, és semmiképpen ne hagyd abba!

Sok sikert!
Pasztuhov Dániel

Emelt szintű informatika érettségi 4. feladatának nem hivatalos megoldása (2018. május)

A most érettségiző fiatalok tegnap (2018. május 14.) 8:00-tól írhatták meg az emelt szintű informatikaérettségi gyakorlati feladatait.

A dolgozatra 240 perc volt, melynek során 4 feladatot kellett megoldaniuk.

A szövegszerkesztés, táblázatkezelés és adatbáziskezelés mellett programozniuk is kellett.

Emelt szintű informatika érettségi feladatainak szövege

Értékelési útmutató

A programozás feladatra a (nem hivatalos) megoldás, és a megoldás menete pedig itt található:

https://gitlab.com/studicore/e_inf_18maj-java/

Üdv,
Pasztuhov Dániel

Elakadtál egy problémával... hogyan tovább?

Elkezdtél tanulni egy programozási nyelvet, környezetet, és valamit nem sikerül megoldani: a te logikád szerint helyes, de a gép mégsem azt csinálja, amit szeretnél tőle. Vagy kiír valami hibaüzenetet, amit esetleg nem is értesz. Vagy nem is ír ki semmit, mégsem megy a dolog.

Jobb esetben megkérdezed a mentorodat - ha van kit -, de ő sem ér rá mindig, így nem árt, ha van valami a tarsolyodban hasonló helyzetekre is.

  1. Google. (Nahát! ;-)) Írd be a keresőbe, hogy éppen mit szeretnél megtenni vagy mi a hibaüzenet, felsorolva a környezeteket is, pl. “java array arrayindexoutofboundsexception” vagy “reactjs touch drag and drop” esetleg “spring data jpa dao” vagy ilyesmi. Saját tapasztalat, hogy mostanában 2-3 szó is elmegy a környezet megadására, viszont fontos, hiszen nélküle esetleg egy másik környezet megoldását találod meg.
    (Ide tartozik, hogy ha egyszerű kérdést teszel fel mondjuk egy csoportban / fórumon, akkor lehet, hogy LMGTFY választ kapsz, ami a “Let me Google that for you” rövidítése. Van rá weboldal is: LMGTFY. Egyszóval: Jó, ha megvan az alaptudásod az adott témakörben, és csak utána próbálkozol a Google-ben a konkrét kérdésre választ kapni.
  2. Ha már működik a program, és a hiba forrásának helyét keresed:
    1. Tesztkiírásokat tenni a programba, amikor kiírsz valamilyen információt a programról (pl. egy változó értékét) a konzolra (képernyő vagy böngésző console-ja). Az előnye, hogy minden környezetben használható, és gyorsan előállnak az információk, viszont azok köre szűkebb.
    2. Lépésenkénti futtatás. A legtöbb programozási környezet támogatja azt, hogy a programodat lépésről lépésre, soronként hajtsd végre, és minden sor után megállj, megnézni a változók, kifejezések értékét. Az információk köre széles, de a lépésenkénti haladás miatt nem túl gyors.
    3. Oszd meg és uralkodj!. Ez már egy haladó technika, a mérnöki problémamegoldás (egyik) kvintesszenciája. A lényegét hadd mutassam be mondjuk egy házimozi-rendszeren: Tegyük fel, hogy van egy lejátszónk, erősítőnk, hangfalunk, valamint kábelek a lejátszó és erősítő, illetve az erősítő és a hangfal között, és azt tapasztaljuk, hogy bár kép van, hang nincs. Hol lehet a hiba? Valójában bárhol: lehet, hogy a film, amit lejátszanánk, nem tartalmaz hangsávot, a kábelek valamelyike megsérült, az erősítőben romlott el valami, esetleg a hangfal ment tönkre… vagy valamelyik eszköz nincs bekapcsolva.

      Elsőként nézzük meg, hogy az erősítőnél (vagy inkább az erősítő előtti kábel végénél) van-e hang, ami kb. a rendszer felénél van. Ha van hang, akkor tudjuk, hogy a vizsgált pontig minden rendben, a hiba utána, azaz az erősítő, erősítő utáni kábel vagy a hangszóróban keresendő. Ha nincs hang ott sem, akkor az első felében valami gond biztos van (ezzel nem zártuk ki, hogy az erősítő utáni részben gond van-e).
      Menjünk tovább azzal az esettel, hogy az erősítőnél nincs hang. A következő lépés, hogy ezt a részt is megfelezzük: nézzük meg, hogy a lejátszó ad-e ki hangot (mondjuk egy fejhallgatóval). Ha itt sincs, akkor tovább kell haladni visszafelé, ha van, akkor a lejátszó utáni kábelben (vagy az erősítőben – attól függ, hol néztük) keresendő a gond.
      A kérdéses komponenseket mindig megpróbáljuk elfelezni és megnézni, hogy középen mi a helyzet.
  3. Ha nem működik a program és nem érted, miért nem:
    1. Elmész tusolni, alszol rá egyet. Ilyenkor a tudatos elme kikapcsol, és hagyja, hogy a tudatalatti elme megoldja a dolgokat. Ilyenkor jönnek álmunkban a felismerések (Friedrich August Kekulé is így járt a benzol molekula szerkezete kapcsán) vagy esetlen fürdés közben tör ránk a felismerés (az Arkhimédésznek tulajdonított – ám vélhetően hamis – történet szerint a fürdőben jött rá, hogy II. Hierón által rendelt koszorúban hogy lehet megmérni az arany mennyiségét). Egyszóval kapcsolódjunk ki!
    2. Rubber duck debugging.

      Fogj egy gumikacsát! Tedd fel a gépedre, és mintha élő ember lenne, mondd el neki a problémádat. Mire végzel, lehet, hogy megvan a megoldás is. Hogy miért? Az ember hajlamos ugyanazokat a gondolati köröket befutni újra és újra. Ha viszont valaki másnak kell elmondani, akkor az elejéről kezdjük és lépésről lépésre építjük fel, ami közben a gondolkodásunk is új utakra téved. Működik házastárssal, baráttal is!

Ha még csak tájékozódsz a programozástanulás lehetőségeiről, töltsd ki megújult, de továbbra is ingyenes programozási alkalmassági tesztünket! Ha jól sikerül, még ajándékot is kapsz!

Milyen a programozók világa?

Mit csinál egy programozó, amikor órákig el sem mozdul a gép elől?

Ha kívülállóként közelítünk a programozás világához, akkor felmerülhet bennünk a kérdés: “Végü lis mit csinál egy programozó egész nap? Szeretném-e én ezt csinálni?”

A kérdés jogos, főleg, hogy az IT szakemberek között százával terjednek az ehhez hasonló összeállítások:

 

Ezek persze a humor kategóriájába tartoznak, de azt jól jelzik, hogy megérteni kívülállóként, hogy mit csinál egy programozó, nem könnyű.

Amit kívülről lehet látni: reggel bemegy az irodába, köszön, és szociális igényeinek megfelelően vagy elbeszélget az ember a kollégákkal, megiszik egy kávét, vagy azonnal leül a gép elé, és elkezdi püfölni a billentyűket. Néha megáll, és elmerült tekintettel bámul a semmibe. Esetleg rajzolgat. Néha szitkozódik, néha majd kiugrik a bőréből. Máskor meg csak próbálja megzabolázni a Google-t, hogy azt az infót adja, amire neki szüksége van.

A számítógépet akár úgy is elképzelheted, mint a ruhásszekrényt a Narnia krónikájában, a 9 3/4. vágányt vagy az Abszol utat a Harry Potter-könyvekből, vagy a tükröt az Alice csodaországból. Kívülről csak egy tárgy, de ha beavatott vagy (pl. varázsló), és átmész rajta, akkor fantasztikus mesevilág tárul fel előtted, varázslényekkel, beszélő állatokkal, különféle csodás dolgokkal. Kívülről csak annyi látszik, hogy bebújtál egy ruhásszekrénybe, átmentél a falon, vagy keresztülléptél egy tükrön. Belülről meg akár több egész estés filmet is le lehet forgatni a kalandjaidból.

A számítógép is ilyen. Ha belépsz ebbe a "mesevilágba", az általad birtokolt rendszerek gyakorlatilag korlátlan ura lehetsz. Ha akarsz, alkothatsz, ha akarsz, pusztíthatsz. Új világokat teremthetsz (mondjuk egy játék megírásával), amelybe együtt tölthettek időt a barátokkal, és bárkinek a bőrébe belebújhatsz. Ha akarod, olyan rendszereket hozhatsz létre, amelyek segítik a vállalkozásod életét, vagy a saját személyes életedet.

 

Olyan vagy ennek a világnak a szempontjából, mint egy varázsló a fantasy filmekben. A lehetőségek nagyon nagyok, az építőkövek szinte ingyen és szinte korlátlan mennyiségben állnak a rendelkezésedre. A teremtő lehetőségeidnek valójában egy nagyon komoly határa van: a TUDÁSOD és a GONDOLKODÁSOD. Minél nagyobbra növeled a tudásod, minél jobb a gondolkodásod, annál nagyobb részét érted meg, és vonod uralmad alá ennek a világnak.

(Persze korlátok itt is vannak. Nem sétálhatsz be csak úgy a CIA titkos szervereire, és nézegethetsz meg különféle titkosított adatokat. Mondjuk úgy: ezeket a helyeket nagyhatalmú varázslók és varázslócsapatok védik. Őket is ki lehet játszani, ami egy tudásalapú játék (ez a “hekkelés”). Nem növelheted korlátlanul a számítógéped (varázspálcád) kapacitását, hiszen a számítógép még ebben a világban létezik. És persze vannak olyan dolgok, amelyek – a jelenlegi tudásunk alapján – elvileg lehetetlenek. Aztán még amit fontos tudni, hogy idő kell az építkezéshez: ahogy egy ház sem születik a gondolatoktól “magától”, ebben a világban is össze kell rakosgatni a téglákat egymásra).

És ahogy a Narnia krónikái esetén a valós világban árva gyerekek voltak a történet szereplői, “odaát” pedig uralkodók, és ahogy Harry Potter is egy közönséges árva volt, a varázslóvilágban pedig szupersztár, úgy a programozók között is van olyan, aki ideát egy "unalmas kis kocka", odaát pedig “nagy tudású varázsló”.

A programozók valójában részben ennek a világnak a polgárai. Ők ebben a világban egy bizonyos jól meghatározott cél érdekében egyesítik erőiket: általában egy cég valamilyen informatikai rendszerének megalkotása, aminek létrejötte, fejlődése segíti az adott vállalkozás piaci szerepének megőrzését vagy erősítését. A cégnek meg megéri őket finanszírozni, hiszen az általuk teremtett rendszerek pénzt termelnek vagy pénzt spórolnak a vállalkozásnak.

Egy-egy informatikai rendszer kifejlesztésének sok lépése van. Onnan indul, hogy (ha már varázslós példát hoztam) a “muglikkal” le kell egyeztetni, hogy mire is van szükségük. Aztán ha sikerült belőlük “kivarázsolni”, hogy mit is szeretnének, akkor azt le kell fordítani “varázslónyelvre”, hogy a programozók is megértsék. Ezek után a programozók a számítógépük (varázspálca) segítségével a tudásukat és gondolkodásukat, kreativitásukat felhasználva előbb-utóbb – néha hónapok, évek alatt – megalkotják a szükséges rendszert. Ezt utána (vagy esetleg többször is, menet közben) megmutatnak a “mugliknak”, hogy tényleg jó úton járnak-e a fejlesztésben. Közben és utána pedig ellenőrzik az készülő művet, hogy tényleg nem követtek-e el katasztrofális hibát (hogy elkövettek kisebb-nagyobb hibákat, az szinte tuti), azaz tesztelik a szoftvert. Majd végül átadják és üzemeltetik (azaz betanítják a “muglikat” a programok használatára, válaszolnak az időről időre felmerülő kérdésekre, megoldják a felmerült igények kielégítését, kijavítják a felbukkant hibákat, stb).

Hogy miért is kell “fordítani” a “varázsnyelv” és a normál nyelv között? Ahogy ez a humoros (bár túlzó) képregény is mutatja, van némi különbség a két tábor között:

 

Ennek a folyamatnak a programozók csak egy részét látják el, a teljes folyamatban többféle szakma képviselője vesz részt, illetve a programozót én most számos néven illetett szakemberek közös gyűjtőnevére használtam (lehet szoftverfejlesztő, szoftvermérnök, programozó, szoftverfejlesztő). Valójában legtöbbször nincs éles határ az egyes nevekkel illetett emberek között.

Ahogyan pl. a Harry Potterben is, a programozóknak is megvan a maga nyelvük, csak nem “invito pálca”, hanem pl. “input a”. A rowlingi világgal ellentétben a programozók világában sokféle nyelv terjedt el (mintha attól függően, hogy milyen varázspálcát használnál, más és más nyelven kellene vele beszélni). Ezeket hívjuk programozási nyelveknek. A jó az, hogy a szükséges gondolkodásmód nagyon hasonló, de a kifejezésmód meg nagyon eltérő.

Persze az is igaz, hogy mindenki a Harry Potterben sem lett varázsló: vannak ugye a varázstalanok, akik származás ide, vagy oda, mégsem voltak képesek a varázsolni. Így a programozáshoz is kellenek képességek. Ha szeretnéd megtudni, neked megvannak-e ezek, töltsd ki ingyenes programozási alkalmassági tesztünket!

Pasztuhov Dániel

Melyik programozási nyelvet válasszam?

Ha most kezdesz programozást tanulni, akkor nagy fejtörést okozhat az a kérdés, hogy melyik programozási nyelvet is válaszd a tanuláshoz. Van ugyanis sokféle: Java, C++, Python, Javascript, C#, PHP - hogy csak néhányat említsek a rendelkezésre 100-nál is több nyelvből. Ha már tanulsz valamit, akkor olyat szeretnél tanulni, ami megéri.

Előfordulhat, hogy igyekszel egy programozótól segítséget kérni, és válaszol is, legjobb tudása szerint, amiből lehet, hogy csak annyit értesz, hogy melyik nyelvet ajánlja, de azt, hogy miért, az nem biztos, hogy 100%-ig átjön.

Mondok egy analógiát, ami elég jól hasonlít ehhez a helyzethez: tegyük fel, hogy most akarsz megtanulni autót vezetni (ez lesz a programozástanulás), és az a kérdés, hogy milyen autón tanulj (ez lesz a programozási nyelv). Hiszen annyiféle van, melyikkel jársz legjobban? (Hátsókerékhajtás, elsőkerékhajtás, automata váltó, kézi váltó, Fiat, Suzuki, Opel, Skoda, Mercedes,...)

Ha nem tudsz dűlőre jutni, lehet, hogy megkérdezed az autóversenyző haverodat (ő a programozó), hogy szerinte melyik a legjobb autó vezetni. Amire ő lehet, hogy visszakérdez, hogy milyen úton szeretnél versenyezni: milyen bajnokságban, milyen talajon, stb. (a programozási nyelvek is különböző feladatra jók). Amire nem is tudsz válaszolni, hiszen nem is tudtad eddig, hogy vannak különféle bajnokságok. Aztán mond valamit, hogy szerinte melyik a legjobb autó (az alapján, hogy ő melyik bajnokságban versenyez), és megindokolja egy csomó olyan technikai adattal, amiből egy szót sem értesz. Aztán mondjuk azt mondja, hogy a legjobb autó a Ford Focus WRC, mert a WRC-ben (akármi is az) ezzel az autóval nyerték a legtöbb VB-futamot. És ha megkérdezel egy másik versenyzőt (aki mondjuk szintén WRC-versenyző), akkor ő meg vitába száll az előzővel, hogy de nem is a Ford Focus WRC a legjobb, mert ... (nem érted, miért), hanem a Citroen C4 WRC, mert ... (ezt sem érted).
És akkor ők még csak WRC-sek (World Rally Championship) voltak: ha a Forma-1-ben szeretnél indulni, akkor máris egy másik márka lesz a befutó, ráadásul más paraméterek szerint és másról fog szólni a hozzáértők vitája.
De térjünk vissza az eredeti kérdéshez:

Milyen autón tanulj meg vezetni?

Ebből is biztosan sokaknak van favoritjuk, de egy dolgot szeretnék leszögezni: az, hogy milyen autón tanulsz meg vezetni, vajmi keveset számít abban, hogy utána milyen autót leszel képes elvezetni a közúton. Ha Opel Corsa F-en tanultál meg vezetni (mint én), az nem jelenti azt, hogy ha beülsz egy 2016-os Skoda Octaviába, akkor mindent újra kell tanulni, és onnan kezded az ismerkedést, hogy akkor most hogyan is kell az autót a gázzal és a kuplunggal mozgásba hozni és hogy tekeredik a kormány (vagyis persze igen, de ez kb. 30 másodperc, nem pedig órák, mint elsőre). Ez a programozásban is pontosan így van. (Java-tudással a Python kiismerése annyira, hogy el tudd "vezetni" - néhány nap).

És addig, amíg egyáltalán nem tudsz vezetni, addig neked édesmindegy, hogy első- vagy hátsókerék-hajtású az autó. Annak már több jelentősége van, hogy automata vagy kézi váltós, hiszen ha nem tanulsz meg kézi váltós autóval közlekedni, azt később megtanulni már nehéz. Ha egész életedben automatás autód lesz, akkor válassz automatás tanulóautót, különben jobban jársz a kézi váltóssal. (A programozási nyelveknél is vannak ilyen szempontok azért).

Az is igaz, hogy ha versenyző (senior programozó) akarsz lenni, akkor sokat kell még tanulni azután is, hogy mondjuk kiengednek a forgalomba (elvégzel egy iskolát), és folyamatosan fejlesztened kell magad. Az is igaz, hogy a különböző kategóriában versenyzők valamilyen szinten más és más képzettséget kell szerezzenek (ahogy a programozók is: nem mindegy, hogy mit programozol, mire specializálódsz). Az is igaz, hogy ahogy az autóversenyzők is kipróbálhatják magukat más kategóriákban (és sokszor sikeresen), úgy a programozók számára sem átjárhatatlan az egyes specializációk határvonala.

Mit ajánlok akkor autóvezetés programozásoktatóként?

A programozási nyelveket már más is hasonlította járművekhez: If programming languages were vehicles.

A link alapján a legjobb választás programozni tanulni: a Java, a C# és a Python. Ezek közül az első kettőt azért ajánlom, mert ... (techie blabla) ... - a lényeg az, hogy a kötöttebb nyelvi struktúrák miatt jobban megtanulod, mint egy szabadabb nyelven, ahol könnyű elveszni és trehánynak lenni - autós példában: A Java és a C# kézi váltós, a Python meg automatás. A maradék kettőből nekem a Java a kedvenc és ebben tudok neked a legtöbbet segíteni.

De akárhogy is: ahogy az autóvezetés előtt is kell egy alkalmassági vizsga, úgy programozástanulás előtt sem árt egy programozási alkalmassági teszt, hogy vajon érdemes-e bele időt, energiát fektetni, pénzt szánni rá vagy sem.

Pasztuhov Dániel

süti beállítások módosítása