Pár gondolat a programozásról

Idén 11. éve foglalkozom programozással hobbi és munka szinten is. Ez idő alatt nem egy embert oktattam programozásra különböző nyelveken. Ezen kis szösszenet a tapasztalataimról szól.

A programozás mai digitális világunkban egy olyan hasznos képességé vált, amiből meg lehet élni. Ez alatt értem azt, ha semmi máshoz nem ért az ember, de kódolni nagyon, nagyon jól tud, akkor iskolai végzettség nélkül is lehet egy szép jövedelmet keresni. Persze nem annyit, mint diplomával, de meg lehet élni belőle. Itthon is, nem feltétlenül kell külföldre menni.

Persze külföldön jobban fizetnek, de ehhez nem árt legalább társalgási szinten angolul tudni és az sem árt, ha van igazolható referenciád, tapasztalatod. Kezdőként igen nehéz referenciát és tapasztalatot szerezni, de nem lehetetlen. Erre jó, ha nyílt forráskódú szoftvereket fejlesztesz. Ennél jobb referencia nem is kellhet, hiszen a leendő munkaadóid is megnézhetik a kódodat és már az interjú előtt pozitív előnnyel indulhatsz. Persze ennek feltétele, hogy a kódod ne gányolások sorozata legyen.

A nyílt forráskódú projektekben való részvétel azért is jó, mert tapasztalatot szerezhetsz a következőkben: csapatmunka, dokumentálás, verziókezelés és nem utolsó sorban modern technológiákkal találkozhatsz.

A diplomát sok fejlesztői állás mellé azért kérik, mert ezen papír megléte feltételezi azt, hogy értesz a számítógépek belső lelki világához. Persze sok esetben a papír nem egyenlő a tudással. Ezért a felvételi elbeszélgetésen programot, tesztet íratnak majd veled, hogy megbizonyosodjanak arról, hogy ténylegesen tudsz. És ha tudsz, akkor bizony nem feltétlen kell a papír.

A tudás megszerezhető iskola nélkül is. Sőt az igazi programozási tudás kő kemény gyakorlást igényel, ezt meg iskolában nem tanítják. Úgy még senki se tanult meg programozni, hogy az iskolában bejárt az órákra és az órákon megírta a programokat. Ahhoz, hogy csuklóból jöjjenek a megoldások nem egy, nem kettő programot kell megírni, hanem több százat, ezret. Ez a szám elsőre elrettentően hangzik, másodjára is és n+1. alkalommal is, de ez az igazság.

Le kell ülni és programokat kell írni. Megtanulni a dolgot könyvből is meglehet. El kell menni a helyi könyvesboltba és a választott nyelvhez venni egy könyvet. Ez kicsit borsos kiadás lesz, mivel egy jobb programozási könyv 8-15 ezer forint között mozog sajnos. Viszont ennyit bőven megér ez a befektetés.

Sok iskolában nem megfelelően oktatják a programozást, ez tény. Jól oktatni a programozást igen nehéz, de nem lehetetlen. Alapvetően a probléma ott kezdődik, hogy sok helyen a koncepció, ami mentén oktatnak, 20+ éves. Értem ez alatt, hogy 2015-ben nagyon nem menő dolog konzolos alkalmazásokat íratni 15-22 éves korosztály tanulóival, mivel ezen gyerekek bőven a Windows95 utáni korszakban nőttek fel. DOS-t, Linuxot többségük a büdös életben nem látott és nem is használt. Ebből adódóan nem igen tudják értékelni, hogy a 80×25 karakteres ablakban megjelenik a Hello World felirat. Ez 20+ évvel ezelőtt lehet menőnek számított, de egy mai gyerek ezt már nem tudja értékelni és ez egy olyan tény, amin nem lehet változtatni.

Persze lehet morfondírozni azon, hogy mit tanítson nekik az ember, ha még egy for ciklust se tudnak megírni. Tény, hogy vannak lusta gyerekek, de többségüket demotiválja, hogy ha nem látják eredményét a munkának. De hogy ne csak a levegőbe beszéljek, adok konkrét ötleteket is.

Számos iskolában C/C++ programozást oktatnak, mert ezen nyelvek igen fontosak és jól bejáratottak. Grafikus alkalmazás fejlesztésre nem feltétlen jók, de lehetséges. Ott a Qt widget set, azzal lehet szép grafikus C++ programokat kreálni. De ott a Quake III és a Doom III forráskódja is, amire lehet módosításokat fejleszteni. A Quake III C-hez jó, míg a Doom III. már C++. És mielőtt még valaki azzal jön, hogy az ilyen játékoktól agresszívak lesznek a gyerekek, az téved.

Nem muszáj C/C++ vonalon elindulni. Ott van például a Python, ami egy remek kezdő nyelv. El lehet benne sajátítani mindent, látványos dolgokat lehet alkotni, ingyen van, van hozzá olcsó RaspberryPi.

De említhetném a C# nyelvet is. Szép, modern, mentes a C és C++ pointer fetisizmusától, széleskörűen használt, ingyenes hozzá a fejlesztő eszköz és viszonylag rövid idő alatt lehet benne nagyon látványos dolgokat alkotni, valamint ez piacképes tudás. ASP.NET, Windows alkalmazás, Windows Phone fejlesztőket mindig keresnek.

Említhetném a Java-t is. Bár ha Java, akkor érdemes Android fejlesztéssel összekapcsolni, mivel az asztali Java alkalmazásoknak sosem volt és sose lesz komoly jövője a desktop piacon. Szerver oldalon más a helyzet, de az nem éppen kezdőknek való téma 🙂

Másik érdekes hülyeség még az oktatással kapcsolatban a papíron programoztatás. Értem én, hogy nem kell hozzá eszköz, de ez olyan, mint ha egy kőművessel esszét íratnék a betonozás filozófiai vonatkozásairól. Köszönő viszonyban sincs ilyen szinten az elmélet és a gyakorlat. Persze fontos az elmélet, de nem feltétlen arra kell rámenni a számonkérésben, hogy egy 20x egymásba ágyazott rekurzív függvény az utolsó hívás után mit ad vissza eredménynek (sajnos létező feladat, 2014-ben találkoztam vele egy meg nem nevezett egyetem meg nem nevezett karán egy meg nem nevezett programozási tantárgy vizsga feladatai között.).

A lényeg ebből az, hogy ha nem megfelelően oktatjuk és nem korrekt módon kérjük számon a tudást, akkor bizony lehet lesz olyan, aki teljesíti a tárgyat, de többségében nem fogják tudni és nem is akarják majd teljesíteni az elvárásokat. Ez pedig irtózatosan nagy baj, mivel ezen emberek többsége egy ilyen rossz tapasztalat után a büdös életben nem fog programokat írni, ez pedig hosszútávon baj lesz.

Ha az IT szektor ilyen ütemben fejlődik tovább, mint az elmúlt 20 évben, akkor bizony informatikusokra nagy szükség lesz, sőt van is. Angliában a programozók hiánya akkora probléma, hogy kötelezően oktatják a programozást az iskolásoknak.