Szeretném-e a programozást? – III.

Programozói munka jellemzői és kihívásai

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.
A befejező rész a programozó munka jellemzőit és kihívásait mutatja be.

Az első rész itt, a második itt olvasható.

Programozói munka jellemzői

Kívülről nem (feltétlenül) látható, de olyan dolgok, amiket tudnod kell, mielőtt belevágsz:

  1. A programozói munka sok üléssel jár. Napi 7-8 óra ücsörgés simán benne van a pakliban, erre készülj fel! Ha érzékeny vagy a sok ülésre, akkor keresd meg a neked való megoldást (vannak álló asztalok, fittball, fel lehet polcolni a gépet, eljárhatsz úszni, jógázni, masszázsra, csontkovácshoz…) Számos lehetőség van, keresd meg, ami neked jó! Most lehet, hogy ez nem tűnik annyira fontosnak, de pár év komoly ülőmunka után már érezni fogod, hogy szükség van valamire.
  2. A munka csöndben zajlik. Ez lehet, hogy elsőre furcsa lesz, főleg, ha mozgalmas munkát végeztél előtte. Szóval általában a szobában csönd van (vagy kéne legyen), és a kollégák szótlanul, magukba mélyedve dolgoznak. És valószínűleg te is.
  3. Elmélyült munkavégzés.
    A legtöbb programozó nem is szereti, ha az elmélyült munkában megzavarják, mert egy-egy kérdés akár 30-60 percre is visszaveti a produktivitásban. Ha meg 30 percenként elkezd valaki telefonálni a szobában, vagy kérdez valamit, akkor a produktivitás olyan is lesz – csapatszinten.

    (Rengeteg mém foglalkozik ezzel:)

    Ezzel kapcsolatban a legnagyobb öngól – véleményem szerint – programozókat open office-ba kényszeríteni. Manapság már egyre több cikk foglalkozik ezek hátrányaival. (//karrierplusz.jobline.hu/allaskeresok/20170307_Ujabb_erv_az_open_office_ellen_az_agyat_i)

  4. Alkotás öröme. A programozói munka ugyanúgy alkotómunka, mint egy asztal, egy épület, vagy egy LEGO-építmény elkészítése, és ugyanolyan szórakoztató és örömteli is, a végén sikerélménnyel.
  5. Eszközök, építőelemek készítése a programhoz / saját magunknak. A közismertebb alkotó tevékenységekhez képest, ahol jól elválik az eszközök, nyersanyagok és késztermékek csoportja, a programozásban sokkal tágabb keretek között mozoghatunk, építkezhetünk. Az eszközeink ugyanúgy programsorokból állnak, ahogyan az a mű, ami végül elkészül, szóval a programozás olyasmi, mintha asztalosként a vésőnket vagy a kalapácsunkat is el tudnánk készíteni a magunk számára… vagy akár egy asztallábkészítő gépet.
  6. Szellemi kihívást jelent. A programozásban elért siker nem a kézügyességeden fog múlni, sokkal inkább a szellemi képességeid lesznek a mérvadóak. A programok írása elsősorban tehát a tudásunkat, a logikánkat, valamint a rendszerek átlátására és felépítésére vonatkozó képességeinket használja ki.

Kihívások a programozásban

Az alábbiakban azokat a nehézségeket mutatom be, amik programozástanulás vagy programozóként való elhelyezkedés után várhatnak. Ha ezek bármelyike eltántorít, akkor ez a szakma nem neked való, megtanulása nem fogja elhozni a várt elégedettséget.

  1. Talán a legnagyobb kihívás az, amikor az ember “beleakad” egy problémába, azaz amikor készített egy programot, de nem akar működni, akárhogy is próbálgatja az eszébe jutó megoldásokat. Nem érti a jelenséget, esetleg a hibaüzenetet sem, azt sem tudja, hol keresse a megoldást. Nehéz helyzet, mert nagyon igénybe veszi az ember önmagába vetett hitét, és az az igazság, ha egy programozó olyan területre téved, amit még nem ismer mélyrehatóan, akkor ez haladó programozóval is előfordulhat.
    Milyen megoldások léteznek?

    • Segítséget kérni. Nem véletlenül állítottuk össze az oktatási rendszerünket úgy, hogy legyen lehetőség oktatói segítséget kérni. Egy probléma önálló megoldásával lehet a legtöbbet tanulni, de ha ez már olyan sokáig tart, hogy az aláássa az ember önbizalmát, akkor kontraproduktív. Ezért van az, hogy a megoldást jelentő oktatói segítség nem azonnal, hanem néhány naponta érhető el: legyen egy kis önálló küzdés, de ha nem megy, akkor ott legyen a megoldás.
    • Pihenés. Ha nem megy, akkor ott kell hagyni egy kicsit, és mást csinálni, hogy a tudatalattink (felszabadulva a nyomás alól) megoldja a problémánkat. A pihenésre sok minden jó: séta, mozgás, lefeküdni a kanapéra, aludni vagy zuhanyozni/fürdeni egyet. (Fura módon a vízzel való érintkezés sokaknak segít problémákat megoldani, új ötleteket kreálni).
    • Rubber-duck debugging. Végy egy sárga gumikacsát, mondd el neki a problémádat, és mire elmondtad, megsúgja a választ… vagyis persze nem ő, hanem te, magadnak. A probléma elmondása esetén ugyanis olyan szintről kell kezdeni a dolgokat, hogy a gumikacsa is megértse, és fel kell építeni mindent egészen a megoldásig, így gyakran olyan részekre is kénytelenek vagyunk “elkalandozni”, ahol addig nem jártunk gondolatban. Így lehet, hogy éppen megtaláljuk a megoldást.
    • Felépíteni a tudást az adott területen. A programozás területén általában felmerülő problémák túlnyomó részét logikailag meg lehet oldani. A probléma legtöbbször az, hogy az ember valóságról alkotott belső képe nem egyezik meg a valósággal, és ennek következménye az a bizonyos “beleakadás”. Ilyenkor – hosszú és körülményes, rengeteg időt igénylő – megoldás, hogy rendesen megtanuljuk az adott eszköz használatát. Legtöbbször gyorsabb és olcsóbb, ha valakitől, aki jól magyaráz, és hajlandó is néhány szónál többet mondani, segítséget kérsz.
    • Internetes keresgetés (Stack Overflow és társai). Azért hagytam a végére, mert a tipikus “beleakadós” esetben ez nem szokott hatékony lenni. A Stack Overflow abban jó, hogy ha megvan a pontos képed az adott területről, akkor részmegoldásokra, esetleg pontos szintaktikára, példákra rákeress. Arra viszont nem alkalmas, hogy megfelelő képet alkoss a valóság kérdéses szegletéről.
  2. Nem tudsz tervet sem alkotni. Amikor annyira nem vagy képben a témával, hogy elkezdeni sem tudod.
    Megoldások:

    • Mentoring. Ilyenkor a leghatékonyabb valakivel átbeszélni a lehetőségeket, és megtalálni a megfelelő megoldást, hiszen így célzott segítséget tudsz kapni a problémádra.
    • Tudásépítés. Valószínűleg ez esetben hiányos a tudásod az adott területen, célszerű, ha egy tanfolyam keretében beleásod magad a témába.
  3. A programod látszólag jó, de később (pl. egy módosításkor) jössz rá, hogy annak idején lábon lőtted magad, csak nem tudtál róla. (Hogy nagyjából érzékeltetni tudjam: építettél egy házat, és beköltözéskor veszed észre, hogy nincs rajta ajtó.)
    Megoldások:

    • Mentoring. Keress egy hozzáértőt, aki meg tudja nézni, mit csináltál, és tud szólni előre, hogy valami nem jó. (Szól, hogy a házterveden nincs ajtó.)
    • Rutin. Ez különbözteti meg a senior és junior programozót. A senior már érzi a jó megoldást, a junior meg simán belesétál az ilyesfajta buktatókba. 5 év ugyanazon a területen, és te is látni fogod őket. (Mivel már 5 házat építettél ajtó nélkül, hatodik alkalommal csak eszedbe jut.)
    • Tanulás. Nemcsak a programozási nyelvet / eszközt, hanem magát a programalkotást is érdemes tanulni. (Elmész egy kurzusra, ahol az építészetről van szó, és megtanulod a ház részeit: alap, fal, ajtó, ablakok, tető…)
  4. Folyamatos tanulás. A tudásod mélyebb részei (strukturált programozás, OOP, funkcionális programozás…) viszonylag ritkán, felszíni részei gyakrabban szorulnak frissítésre (pl. új eszközök jelennek meg a választott programozási környezeten belül). Hogy a programozás absztrakt világán kívüli példával éljek: ha cukrász vagy, akkor nem fog megváltozni, hogy a liszt mennyi nedvességet vesz fel. Az, hogy kell valamilyen nedvesség, ami összetartja a tésztát, az meg egy alapelv. De attól még megjelenik a gluténmentes liszt a piacon (ami tök másképp viselkedik, mint a sima), amit azért meg kell tanulni használni. De jó kiindulás, ha tudod, hogy nedvesség kell a tésztához, a gluténmentes liszt meg sokkal kevesebbet vesz fel, mint a sima, ebből azért össze lehet rakni gyorsan a megoldást – ha megvannak az alapok.
    Fel kell készülj arra, hogy ha felvettek a céghez, akkor sem áll le a tanulás. Ha nem szeretsz (a programozás témájában) tanulni, akkor ez a pálya nem neked való. De tényleg. Persze jelenleg ezt még nem tudod eldönteni, hiszen nem tanultál még programozást. Végezd el a Java SE modul minimum kétharmadát próbáképp, és közben meglátod, mennyire szereted meg a folyamatot.
    Mi minden tőlünk telhetőt elkövettünk, hogy megszerettessük veled a tanulást, szóval adj neki egy esélyt!

+1

Ha mindezek után még mindig bizonytalan vagy abban, hogy szeretnéd-e a programozást vagy sem, egyetlen dolgot tudok még javasolni: próbáld ki! A StudiCore Online oktatási rendszer egyik erőssége, hogy olyan tevékenységeket kell végezni tanulás közben is, mint amit majd programozóként is teszel, tehát már tanulás közben le tudod mérni, hogy maga a programozástanulás és a programozási feladatok megoldása mennyire a te világod.

Továbbá nálunk nem szükséges hét számjegyű összeg befizetésével elkötelezned magad a pályaváltás mellett, nyugodtan mondhatod némi tanulás után is, hogy ez nem neked való, keresel más tevékenységet. És még csak haragudni sem fogunk rád. 🙂

Egyet viszont kérnék: Adj neki időt! Az ingyenes első 5 fejezetben még nem kerülnek elő összetett problémák, így ha igazi választ akarsz a kérdésedre, tovább kell haladnod, és el kell jutnod a Java SE tanfolyam minimum kétharmadáig. Ha nem jön be, akkor is szereztél némi pluszképességet a logikus, analitikus gondolkodás terén, jobban át fogsz látni rendszereket, folyamatokat, és viszonylag kevés energia- és pénzbefektetéssel megtudtad, hogy nem szeretsz programozást tanulni.

Ha meg igen, akkor hajrá!

Ha még nem töltötted ki a tesztünket, töltsd ki, és 5 napos ingyenes hozzáférést kaphatsz a StudiCore Online Simple programhoz. Ha kérdésed lenne, az ügyfélszolgálatunk tud segíteni.

Pasztuhov Dániel