Ki a jó programozó?

img

A kérdés jogos, ki a jó programozó, kit tart a környezete, a munkaadók, a programozó társak jónak?

Szerintem a jó programozó:

  • Könnyen tudjon tanulni
  • Hatékonyan ír kódot
  • Ismeri a modern technikákat
  • Folyamatosan fejlődik
  • Rendszeresen gyakorol

Vegyük sorra a fenti pontokat. Vannak átfedések a pontok között, így megpróbálom mégis a fenti struktúrát követni.

Könnyen tudjon tanulni

Minden álláshirdetésben ott van a bűvös sor:

Gyors tanulási készség, jó problémamegoldó képesség

Miért is kell ez egy programozónak. Tegyük fel, hogy az évekkel ezelőtti alap motorodat használod mindenhol. Mert eddig jó volt arra, amit csináltál. De ma is jó-e? Követi-e a trendeket?

Én évekkel ezelőtt utáltam, ki nem állhattam az Objektum Orientált Programozást. Egyszerűen nem volt rá időm, hogy leüljek és megértsem. Emiatt mindent függvények, és összekalapált scriptek oldottak meg.

Ma már minden gondolatom a normálisan megtervezett program körül forog. Megértettem, hogyan is működnek az osztályok.

A másik része, ha nem tudsz gyorsan elsajátítani új technikákat, akkor feleslegesen írod a régi kódot, amit csak te értesz meg, fejlődnöd kell a programoddal együtt.

Hatékonyan ír kódot

Mint feljebb is említettem, a könnyű tanulás előnye, hogy gyorsan sajátítasz el új dolgokat. Ezáltal a kódod átláthatóbb, hatékonyabb lesz. Miért kell, hogy átlátható legyen a kód, úgysem nyúl hozzá más?

Épp nemrég futottam bele ebbe a kérdésbe egy régebbi programommal. Szeretem magamba szívni az információkat, így folyamatosan blogokat, könyveket bújok, hogy tartsam a szintet, sőt emeljek rajta. Itt jön képbe az, hogy ugyanazt a problémát ma már teljesen máshogy oldom meg, mint 2 hónapja, fél éve vagy akár évekkel ezelőtt.

Minden nap tanulok valami újat, minden alkalommal, mikor beírok egy keresést az adott problémámra a Google-be, más emberek véleményéből, hibáiból is képes vagyok tanulni. Így a kódom is napról napra átláthatóbb, precízebb és gyorsabb.

Tehát nemrég kérték, hogy rakjunk be valamit egy 2 éve megírt programba. Kapok érte kis pénzmagot is, hogy megcsináljam, csak legyen kész holnapra. Ültem a kód felett és nem értettem, hogy mi van oda írva... Szó szerint nem láttam át a programomat. Dühöngtem, mert ha akkor jobban átgondolom a kódot, ma átláthatnám. Persze ez sok dolgon múlt, hogy nem szép a kód, de ezt majd holnap.

Így a kevés pénzért, ami csak egy fejlesztés lenne, átírtam az egész kódot. Nulláról. Egy éjszaka alatt.

Tanulság a dologból, hogy ne másnak akarjon a programod megfelelni, hanem mindig gondolj arra, hogy ebbe évek múlva is bele kell nyúlnod.

Ismeri a modern technikákat

Igen. Kell. Mivel egyszerre vagyok backend és frontend programozó is, így még nehezebb követni az aktuális trendeket. Ne menjünk el arról, hogy a PHP-ból kikerül (valamikor) a teljes mysql_ függvény. 5.5.0-ban már notice-t kapsz, hogy a funkció deprecated, magyarul halálra van ítélve. Hamarosan végleg megszűnik a támogatása.

Mit is akartam ezzel? Tehát, ha nem követed a trendeket, akkor a programod egy php verzió frissítéskor sikoltozni fog, hogy gond van. Ilyen volt például az ereg, ami a PHP 5.3.0-ban lett depricated. Egyik nap még minden szép, másik nap egy képernyőnyi hibaüzenet vár.

Utána olvasol, és rájössz, hogy a libraryk, amiket használsz nincsenek karbantartva vagy nem frissítetted őket, és a programod szépen, lassan halálra van ítélve.

Legjobb esetben lefrissíted a külső modulokat és a probléma megoldódott, ha pedig te írtad a kódot, akkor végig kell rajta menni, és javítani.

Másik fontos dolog, ami főleg a frontendhez kapcsolódik, például ott vannak a külső libraryk, frameworkök, amiket használunk, jQuery, bootstrap, fontawsome, stb. Ha nem figyeled a változásaikat, a programjaid lassan működésképtelenné válhatnak. Próbálom mindig a legfrissebbet használni mindből, hogy a legjobb eredményt kapjam, emiatt általában a régebben írt kódok ki is hullanak. Ilyen volt, mikor a jQuery a live() helyett .on() függvényre váltott az 1.7-es verzióban. A régebbi kódom egyik napról a másikra megállt, mert frissítettem a jQuery verziót.

Tehát, ha nem tartod a tempót, akkor lemaradsz. Nagyon.

Folyamatosan fejlődik

Utálok egy helyben topogni. A legtöbb cégnél elvárás, hogy a kódodat újra tudd hasznosítani. Ebből születnek a webshop alapra írt híroldalak, vagy a viccoldal alapra megírt recept oldal. Nem. Ezt az egyet nem bírom. Minden egyes alkalommal, mikor jön egy új kérés, az adott problémához (vagy feladathoz) megfelelő kódot kellene megírni. Mivel egy webshop teljesen más alapokon működik, mint egy híroldal. De ezt várják el tőled, nincs időd fejleszteni új motort alá, mert az 3 hónap, neked pedig már tegnapelőtt kész kellett volna lenned.

Ha programozol, kell, hogy tudj fejlődni. Ezt szerintem saját érdekedben is muszáj megtenned, mert ha évekig ugyanazt a kódot kalapálod, sehová sem fog jutni a kód. Van az a pont, amikor le kell ülni, és újra kell tervezni a kódodat. Jobb alapokra helyezni, átláthatóbban megírni, bővíthetőre tervezni. Felesleges köröket fut egy három szintű kategória lekérdező az egy kategória szintű híroldalon.

Persze értem én, hogy a munkáltatónak nem érdeke, hogy te is elégedett légy a kóddal. Nekik csak az számít, hogy futószalagon jöjjön ki a program, tegnapelőttre. Oké, ezt is megértem, mert ebben az országban a pénzügyi helyzet, főleg kis cégeknél, nem engedi meg, hogy hónapokig programot fejlessz.

De ebbe csak gondolj bele. Lenne egy céged. Lenne 1-2 programozód. Lenne 5 megrendelésed. Mennyivel könnyebb lenne a programozónak, ha nem egy másik programot kellene átkalapálnia, hanem megnyitná a mappát, átmásolja az alap programot, és ráfejleszt egy admint és a weboldalt.

Ezt lehet csak én látom rosszul, ezért ne nézz le, sajnos vannak rossz tapasztalataim a múltból.

Rendszeresen gyakorol

A programozás nagy része berögződött kódrészletek sorozatából áll. Ha csinálsz egy adatbázis lekérdezést, nem fogod minden alkalommal máshogy megírni. Mindig ugyanazt a sémát követed, ahogy megtanultad, ahogy kényelmes, ahogy a program és a helyzet követeli.

Ezeket a sémákat be kell gyakorolnod, hogy ne ülj magad elé bámulva a monitor előtt, hogy ezt most, hogy is kellene megoldani.

A gyakran ismétlődő részeknek a kisujjadban kell lennie. Bejelentkezési felület? Nem gond, ezret írtam már, menni fog. Termékek lekérdezése adatbázisból? Nem probléma.

Tehát akkor leszel hatékony, ha a sokszor használt részeket már álmodból felkeltve is fújod.

Összegezzünk

Tehát a jó programozó, folyamatosan tanul, minden egyes percben, a saját és mások hibáiból. Folyamatosan keresi az új és jobb megoldásokat. Folyamatosan fejlődik a szemlélete, a kódja, a tempója.

Létezik-e jó programozó?

Saját véleményem magamról

Először is leszögezném, hogy a fentiek a személyes tapasztalatokon alapulnak. Mindenkinek egyéni véleménye lehet a dologról.

A legelső kérdésre: Ki a jó programozó?

A saját válaszom: "én nem"

Miért? Pont a fent leírtak miatt. Mert amit ma tudok, holnap kevesebbet ér, mert jönnek ki az új megoldások, frissítések. Folyamatosan maxon kell pörögni, hogy a rengeteg információt megtanuld. De ez még nem minden, ezeket gyakorolnod kell, ki kell próbálnod, meg kell értened, tudnod kell bővíteni.

Ezért nem érzem magam profinak, ezért van bennem a folyamatos vágy, hogy újat tanuljak, újat alkossak, fejlődjek.

Szerintem a válaszomat, majdnem minden jónak tartott programozó kimondja. Persze vannak a szakmában is Supermanek, akik sérthetetlenek, nem kell tanulniuk, mert még azt is tudják, ami ki sincs adva, de ettől függetlenül szerintem, aki erre azt mondja, hogy "én az vagyok", az szeret nagyot álmodni.

Szeretnék én is jó lenni, sőt a legjobb. De miben? Mindenben? PHP-ban? Mindenben nem lehetek jó, lehetetlen. PHP-ban lehetek, de kreatív programozóként vagy kóderként? Szerintem soha nem tudom azt mondani magamról, hogy jó vagyok. Akkor sem, ha egyedül leprogramozok egy Facebook klónt, ami jobban is működik, mert még abban is találnék, vagy találna más olyan kisebb-nagyobb problémákat, megoldásokat, amikkel hatékonyabb lehetne a programom.

Persze, mondhatom, hogy jó vagyok. Mert tegyük fel az vagyok. De csak a saját szememben? Vagy te is így gondolod? Az ügyfelek is így érzik? Jó programozó vagyok?