Mitől jó egy programozó?

Amennyiben foglalkoztat a programozástanulás kérdése, biztosan felmerült már benned az is, hogy mitől lesz egyik programozó jó, a másik meg kevésbé jó. Ezen a területen minőségi különbséget tenni nem olyan könnyű, mint mondjuk egy szék, asztal vagy ruhanemű esetén.

Előrebocsátom, hogy egy programozó a lehető legtöbb esetben gazdasági környezetben működik, azaz a fizetését és a kapcsolódó egyéb költségeket egy véges pénzügyi erőforrásokkal rendelkező szervezet biztosítja, ami lehet egy profitorientált vállalkozás, vagy akár egy nonprofit alapítvány, de mindenképpen valahonnan kapja a pénzt. A cél, hogy minél kevesebb pénzből minél nagyobb haladást érjünk el.

Így az első minőségi kritérium a gyors kódírás. Mondjuk el kell készíteni egy új androidos applikációt, egyáltalán nem mindegy, hogy 1 hónap vagy 3 hónap alatt készül el. Ezt értjük. Az ételek íze sem mindegy.

Kapcsolódik, de kicsit mégis más, hogy egyáltalán meg tudja-e oldani valaki az adott feladatot, mert lehet, hogy nem. A juniorok pl. inkább kisebb, egyszerűbb feladatokat oldanak meg, mert az összetettebb feladatokkal nem tudnak még megbirkózni, még akkor sem, ha a világ összes ideje a rendelkezésükre áll.

A hibátlan kódírás is fontos: minél precízebb valaki, annál jobb ezen a téren. Manapság bevett az, hogy programok tesztelik a programokat, szóval jó esetben már nem (vagy kevesebb) hibát tartalmaz a program, ami elkészül, de minél precízebben sikerül valakinek a programot megírnia, annál gyorsabban jut túl az ellenőrző teszteken. A Java Távoktatás tanfolyamban az első leckétől ezt a folyamatot szimuláljuk: a programnak teljesítenie kell az elfogadási teszteket: egy ellenőrző program értékeli a beküldött programot.

A következő már nem annyira egyértelmű: ha az alkalmazást módosítani kell, mennyire lehet a kész produktumot gyorsan módosítani. Kevés olyan alkalmazást láttunk, amiből megállt volna a fejlesztés egy adott verziónál. A Windows 10 is azért Windows 10, mert volt már előtte 9 másik. Ha éppen fejlesztjük az új funkciókat, nagyon nem mindegy, hogy az eredeti változatot az eredeti programozó mennyire írta könnyen módosíthatóra. Ez egy ahhoz hasonló rejtett minőségi paraméter, mint az ételek tápértéke. Lehet, hogy ízre jó a gyorséttermi kaja, de ha sokat eszik belőle az ember, megnézheti magát. Ennek egy része az, hogy “olvasható” kódot írjon, ami lefordítva azt jelenti, hogy olyan programsorokat írjon az ember, ami megfelel a programozás “íratlan” szabályainak, úgy épül fel, hogy az egyik programozó könnyen tudja követni elődje munkáját. Ha ez megvan, akkor a program könnyebben módosítható, mint ha nincs. A Java Távoktatás tanfolyamban azért alkalmazunk tapasztalt programozókat, hogy ezeket az íratlan szabályokat is ellenőrizzék és átadják a növendéknek.

Mennyire erős az analízis képessége: Ha maradunk az ételes példánál, akkor azt kell mondjam, hogy a szoftverfejlesztés kicsit olyan, mintha valaki mesélne egy ételről, amit valamikor evett, de nem ismeri a receptet, amiből utána el kellene készítenünk, amire vágyott: először ki kell tudni szedni a megrendelőből, hogy mire vágyik (ezt nem feltétlenül a programozó végzi), utána analizálni kell, meg kell állapítani, milyen összetevőkből állhatott, azok hogyan kapcsolódtak egymáshoz.

Ha ez megvan, akkor az összetevőket a megfelelő eljárások alkalmazásával össze kell állítani, azaz egy meglévő eszközkészletből dolgozva meg tudja konstruálni a végső megoldást (illetve milyen gyorsan és jól teszi ezt meg). Ez a LEGO-zás része a programozásnak: a LEGO-játékban is van egy halom különböző építőkocka, amiket szinte tetszőlegesen lehet kombinálni egymással, és a végén kijön belőle mondjuk egy tűzoltóság két tűzoltóautóval. Ha szerettél régen LEGO-zni, akkor a programozást is élvezni fogod!

Ez utóbbiak a legnehezebben átadható részei a programozásnak, kell, hogy elmélyüljön, összeérjen a tudás a fejben. Ezért van sok összetettebb programozós feladat a Java Távoktatás tanfolyamon, és nem csak 3 billentyűt kell lenyomni a megoldás érdekében. Célunk, hogy olyan programozók hagyják el a tanfolyamot, akik – a tapasztalati szintjükhöz mérten – a lehető leginkább rendelkeznek az analízis és a konstrukció képességével, gyorsan írnak olvasható, módosítható programkódot, hogy utána hasznos és megbecsült tagjai legyenek a programozócsapatnak, ahova a végzés után kerülnek.