Programozás kezdőknek: Kiből lesz sikeres fejlesztő?
Rekord digitálismunkaerő-hiány ide vagy oda, a programozói tudás önmagában még kevés, ha valaki a programozás terén képzeli el a jövőjét. Ahhoz hogy valakiből sikeres fejlesztő váljon, fel kell venni a tempót a technológia és a piac állandó változásaival, nem elég megérteni, de meg is kell tudni értetni egy-egy feladatot vagy problémát, és nemcsak csapatban, hanem csapatként kell dolgozni másokkal. Összeszedtünk hét területet, amire minden kezdő programozónak érdemes ráfeküdnie, ha a maximumot szeretné kihozni magából – és a karrierjéből.
Analitikus gondolkodás és problémamegoldás
A programozás nem más, mint kommunikáció a számítógéppel, sok-sok pici utasításon keresztül. A fejlesztőcsapattól viszont az ügyfelek nem azt szokták kérni, hogy írjon húszezer kis parancsot, hanem hogy „csináljatok egy alkalmazást, ami ezt és ezt tudja”. A programozó feladata, hogy elemezze és szétszedje a kapott igényt, majd a kis darabokból, lépésről lépésre összerakja a megoldást. Ehhez pedig elengedhetetlen, hogy komplex rendszerben tudjon gondolkodni, átlássa az egész folyamatot, és fejben tudja tartania a részkomponenseket.
„Ez a fajta gondolkodásmód egész egyszerűen nem helyettesíthető semmivel, és elég sok gondot okoz, ha valaki elveszik a saját gondolatmenetében” – magyarázza Tompa Tamás, a Codecool oktatási vezetője.
A szoftvervilágban nincsenek kész válaszok, ami sok frusztrációt tud okozni, főleg, ha valaki még most ismerkedik vele. De legalább annyi sikerélményt is! Fontos, hogy soha ne ess neki egy feladatnak, amíg nem érted 100%-osan, mi a teendő, és nem jártál utána az összes hiányzó információnak – akár az ügyfél nem mondott el mindent, akár te nem találkoztál még hasonló problémával. „Az egyik legfontosabb dolog, amit kezdő programozóként már a kurzus során megtanultam, hogy merni kell kérdezni, és időben kell kérdezni” – meséli Kovács Márk, végzett Codecool-hallgató, aki április óta a BlackRock szoftverfejlesztőjeként dolgozik. „Az esetek döntő többségében nem lesz hatékony, ha ráülsz egy problémára, mondván, hogy úgyis megoldod majd valahogy egyedül.”
Hogyan fejleszd magad? Szinte bármilyen hétköznapi folyamatot le lehet bontani kicsi lépésekre, egy rohanós hétköznaptól kezdve a heti nagybevásárláson keresztül egy szülinapi buli megszervezéséig. Kezdd ezekkel! Készíts folyamatábrát, fogalmazd meg, majd szedd szét a célokat és a feladatokat, elemezd a lépéseket, és bogozd ki az összes már felmerült és lehetséges jövőbeli problémát is! Ha pedig már belevágtál a programozásba, haladj ebben is lépésről lépésre: minden új nyelvet érdemes egy egyszerűbb, nagyon specifikus feladattal kezdeni, például egy „Hello, World!” típusú program megírásával, amin keresztül megismerheted az adott nyelv alapvető szintaxisát.
Kritikus gondolkodás
A World Economic Forum előrejelzése szerint 2020-ra ez lesz az egyik legkeresettebb készség a szektorban, fej fej mellett a már említett problémamegoldó képességgel. Nem véletlenül: „Ha a fejlesztőcsapat csak bólogat, akármi legyen is az ügyféligény, akkor a végeredmény általában vagy középszerű lesz, vagy döcögősen és sokszor kifejezetten drágán fog megvalósulni” – mondja Tompa Tamás. A Codecool mentora szerint a programozás egy olyan közös építkezés, amibe a megbízónak és a végrehajtónak ugyanúgy bele kell tennie a maga részét. És itt jön be a képbe a kritikus gondolkodás. Mit jelent ez a gyakorlatban? A fejlesztői oldalon lefordítjuk az ügyfél kéréseit, kérdezünk és megkérdőjelezünk, az oda nem illő részeket kidobjuk, és közben saját ötleteket gyűjtünk. Végül pedig az egészet összegyúrjuk egyetlen komplett, logikus rendszerbe.
Programozóként arra is jó időről időre emlékeztetni magunkat, hogy a kódolásban soha nem csak egy jó megoldás van. Az agyunk ebben bizony ellenünk dolgozik: hajlamosak vagyunk azokat az információkat előnyben részesíteni, amik megerősítik az álláspontunkat, és figyelmen kívül hagyni minden olyat, ami megkérdőjelezheti az igazunkat. A megerősítési torzítás legjobb ellenszere a folyamatos önvizsgálat és a nyitottság: hallgasd meg az alternatívákat, próbáld meg más szemszögéből is megvizsgálni az adott problémát, és a különböző megoldások kapcsán mindig mérlegeld a pro és kontra érveket!
A kritikus gondolkodást a programozáson kívül a legkönnyebb gyakorolni – csak ne felejtsük el fejlesztőként is alkalmazni. Válassz ki valamilyen összetett kérdést, akár a munkahelyedről, akár a közéletből! Érvelj mellette és ellene, építs ok-okozati kapcsolatokat, és vizsgáld meg tüzetesen az álláspontodat, és azt is, hogy hogyan jutottál el hozzá! Sokat segít az objektívebb szemléletmód kialakításában, ha követed a Pearson-féle kritikusgondolkodás-modell lépéseit, vagyis a felismerést (válaszd szét a tényeket, véleményeket és feltételezéseket), az értékelést (objektíven és érzelemmentesen mérlegeld az érveket) és a következtetést (a meglévő információkat rendezd össze egy rendszerbe, majd vond le a logikus következtetéseket).
Az eredmények hatékony bemutatása

Ma már szinte nincs olyan cég, amelyik ne használna valamilyen agilis módszert. Ez pedig egy programozó mindennapjaiban azt jelenti, hogy akár hétről hétre be kell számolnia az elkészült munkákról. Itt az esetek többségében nem szoftverdemóra kell gondolkodni, hanem a háttérmunkák bemutatására: például amikor kész egy adatbázis vagy egy folyamat terve, vagy elkezdődött a munka egy fontos komponensen. Azaz sokszor nehezebben megfogható vagy kvázi unalmasnak tűnő lépéseket kell elmagyarázni úgy, hogy a munkafolyamat bárki számára érthető és követhető legyen. Ilyenkor különösen fontos, hogy el tudj vonatkoztatni a konkrét kódtól és ne egy rakás száraz adatot zúdíts a hallgatóságra, hanem történetmesélés és vizualizáció segítségével megmutasd az adatok között rejlő összefüggéseket.
Persze nem árt dolgozni a prezentációs készségeken sem. A Codecoolban ezért is tartunk minden pénteken demó napot, ahol a diákok csapatokban mutatják be, mire jutottak a hét folyamán, majd közösen értékeljük a látottakat. Bár sokan ódzkodnak eleinte a szerepléstől, sőt, állítólag csomóan jobban félnek tőle, mint a haláltól, általában már pár hét elteltével mindenkin látszik a fejlődés. „Én kifejezetten lámpalázas típus vagyok” – meséli Dr. Karóczkai-Koreny Dóra, aki az orvosi pályáról nyergelt át a programozásra.
„De a rendszeres gyakorlásnak hála az elmúlt nyolc hónapban fokozatosan megjött a bátorságom, és ma már olyan szerepléseket is bevállalok, amiket egy éve élből elutasítottam volna.”
A Codecool szakértői szerint a fejlődés kulcsa egyszerűen az, hogy „csinálni kell”. Például egy-egy nagyobb megmérettetés előtt ajánlott barátok és családtagok előtt tréningezni magad: „ez nemcsak plusz magabiztosságot ad, hanem egyfajta szűrőt is jelent, hogy mennyire sikerült a mondandódat közérthetően megfogalmazni és átadni nem szakmabelieknek” – javasolja Tamás. Annak is jó ötlet utánajárni, milyen meetupok és munkacsoportok vannak, ahol hasonló érdeklődésűeknek tudod kis csoportban elmesélni, min dolgozol éppen. Mindig kérj feedbacket és építs arra, ami már jól megy: „Nagyon fontos a pozitív megerősítés, még akkor is, ha nem minden sikerült úgy elsőre, ahogy elterveztük. Ehhez általában szemléletváltásra van szükség: koncentráljunk az erősségekre, ahelyett, hogy csak a hibákon pörgünk!” Ez új lendületet fog adni, és segíti a jó viselkedésformák ismétlését és berögződését.
A programozás csapatjáték
Sokan emlékszünk még a Nyugati téri felüljáró történetére: a legenda szerint a híd két oldalát egymással párhuzamosan kezdték el építeni, csakhogy középen nem találkoztak az elemek. A programozásban hasonlóan félre tudnak menni a dolgok. Ma már a technológia lehetővé teszi, hogy ugyanazon a funkción elosztott rendszerekben húszan vagy akár ötszázan dolgozzanak egyszerre, sokszor a világ különböző pontjain, amihez viszont elengedhetetlen, hogy mindenki pontosan a megbeszéltek szerint végezze a dolgát. Ez csapatszinten közös, minden részletre kiterjedő stratégiai tervezést és kölcsönös bizalmat, egyéni szinten pedig odafigyelést és jó kommunikációs készségeket igényel.
„Mi a Codecoolban négy-ötfős csapatokban dolgozunk. Eddig szinte minden projektnél előfordultak hibák, de senki nem születik tökéletes csapatjátékosnak” – mondja Dóra. „Az emberek többsége például nem szeret konfrontálódni, pedig nincs mit tenni, muszáj megtanulni kezelni a konfliktushelyzeteket és bátran megosztani egymással a gondolatainkat.” Ez bizony egy hosszú tanulási folyamat, ami a hatékony kommunikáció mellett egy csomó más személyes készséget is magában foglal az alkalmazkodóképességtől kezdve az egymásra figyelésig.
A Codecool oktatási vezetője szerint sok múlik az önreflexió képességén is: ha nem vagy tisztában az erősségeiddel és nem ismered fel a gyengébb pontokat, nehéz lesz hatékonyan csapatban dolgozni. De a csoportos önismeret sem árt. A Belbin-rendszer például kilenc csoportszerepet különböztet meg az elnöktől az ötletgyároson keresztül a helyzetértékelőig. A kutatások szerint szinte minden ember két-háromban teljesít a legjobban, párban pedig átlagon alul. És ezzel nincsen semmi baj. Mindegyik szerepkör ugyanannyira fontos a hosszú távú eredményes munkához, viszont egy-egy viselkedésforma egy közös projekt különböző szakaszaiban ugyanúgy lehet előrevivő, mint kifejezetten hátráltató tényező.A csapat sikere éppen ezért azon múlik, hogy a tervezés és a feladatmegosztás során felismerjük és elfogadjuk-e a köztünk lévő különbségeket, és tudjuk-e erőforrásként használni a sokszínűségünket. Ha ez megy, egy csomó felesleges konfliktustól kíméljük meg magunkat, javul a csapattagok közötti együttműködés, és növekszik a hatékonyság is.
Kitartás

„Sokszor látom a diákokon, hogy ha valami nem sikerül elsőre, kudarcként élik meg, holott a hibázás a tanulás egyik legfontosabb jele” – magyarázza Tamás. Kezdő fejlesztőként nem árt minél előbb megbarátkozni ezzel a gondolattal, és átkeretezni a kudarc fogalmát. Márk is egyetért: „Eleinte sokkal könnyebben feladtam, de szép lassan megtanultam, hogy programozás közben merni kell hibázni. Egész egyszerűen addig kell próbálkozni, amíg az ember el nem jut a megoldásig.” Úgy tapasztalta, hogy junior programozóként gyakoribb a frusztráció: hol bürokráciával kell megküzdeni, hol az adott terület tudásanyagát kell gyorsan felszedni. De az ember szép lassan megtanul ezekkel együtt élni és túllépni rajtuk. Dóra azt tanácsolja, hogy készülj fel arra is, hogy intenzív a képzés és lesznek olyan pillanatok, amikor az ember kicsit elveszti a kedvét és a motivációját. Ilyenkor érdemes szünetet tartani, kikapcsolódni, majd friss fejjel újrakezdeni.
Tamás szerint a kitartás azért is fontos, mert programozóként nem mindig lehet sablonmegoldásokra támaszkodni, időről időre muszáj kísérletezni. Rengeteg a variációs lehetőség, hogy egy problémát hogyan lehet orvosolni, viszont könnyű beleragadni a programozás régi, jól bevált sémáiba.
„Néha érdemes emlékeztetni magunkat, hogy nem a saját szokásainkhoz, hanem a feladathoz kell keresni a megoldást. Csak így lehet fejlődni, ráadásul jó eséllyel hatékonyabb és sokkal élvezetesebb is lesz a munka” – javasolja.
Mint mindenben, itt is az egyensúlyt kell megtalálni: ha szoros a határidő, dolgozz a bejáratott módszerekkel, de ha nem szorít az idő, merj kitörni a megszokott rutinból!
Egy olyan világban, ahol már-már napi szinten változnak az elvárások és válnak feleslegessé készségek, nem árt megtanulni, hogyan tudsz te is változni. Carol Dweck, a fejlődési szemlélet (growth mindset) világhírű kutatója szerint az, hogy elérjük-e a céljainkat, sokkal inkább a szemléletmódunktól, mint a tehetségünktől és a képességeinktől függ. Programozd át magad: ahelyett, hogy valami nekem „nem megy”, mondd azt magadnak, hogy „még nem megy”! „A Codecoolban azon dolgozunk, hogy a diákjaink se saját magukat, se a tudásukat ne tekintsék kész dolognak. És nem megtanítunk nekik dolgokat, hanem megmutatjuk nekik, hogyan tudják őket megtanulni” – magyarázza Tamás. Aki pedig már elsajátította a fejlődési szemléletet, az kellő kitartással akár a személyisége alapvető vonásait is meg tudja változtatni.
Kapcsolatépítés online és offline
Elakadtál programozás közben? A jó hír, hogy fejlesztőként sosem vagy egyedül: számtalan online kérdezz-felelek közösségbenmegtalálhatod a megoldást a Stack Overflow-tól kezdve a Quoráig vagy eddig a subredditig. Használd ki, hogy ezek az oldalak nem befejezett tudástárak: ha nincs fent, amit keresel, tedd fel te a kérdést! „Sokan nem hiszik el, de attól, hogy más még nem találkozott a problémáddal, az nem jelenti azt, hogy nincs rá megoldás vagy senki sem tudja, mi az, netalántán magával a kérdéssel van a gond” – magyarázza Tamás. Sőt, akár magát a program íróját is megkeresheted, hiszen a közösség bármelyik tagja pár kattintásra van tőled. Sok kezdő programozó azonban fél megtenni az első lépést, így a Codecool oktatási vezetője szerint jól szokott jönni egy szakmabeli noszogatása: „A blokk leggyakrabban a kudarctól való félelem miatt van, pedig ritkán marad kérdés megválaszolatlanul. A legtöbb szakértő már egy órán belül reagál és kifejezetten örül a megkeresésnek.”
De nem csak a virtuális világban érdemes megtanulni, hogyan kell kapcsolatokat ápolni. Járj rendszeresen konferenciákra, meetupokra és hackathonokra, és beszélgess szakmabeliekkel!Csak a Codecoolban évente közel 30 szakmai eseményt rendezünk, ahol a junioroktól a cégvezetőkig megfordulnak a kollégák. Figyeld az IVSZésazEventbrite oldalát, és csatlakozz szakmai közösségekhez, például a Django Girls-höz! Rengeteg plusz tudást fogsz összeszedni. Arról nem is beszélve, hogy így a legkönnyebb felkerülni a szakmai térképre: egy Linkedin-felmérés szerint manapság az állások 85 százalékát networkingen keresztül töltik be.
Megoldásfókusz
Bár a programozás alapvetően egy problémaközpontú műfaj, ez nem jelenti azt, hogy mindig a hibák kijavítása és az okok megtalálása vezet a legjobb megoldáshoz. Van, hogy egy egész gondolatmenet hibás vagy az aktuális tudásunk szerint sokkal szebb kódot is össze tudnánk rakni. De van, hogy annyira rápörög az ember egy-egy bugra, hogy ezt elfelejti. Gyakran azonban a toldozgatás-foldozgatás helyett jobb ötlet a refaktoráláshoz nyúlni: újraírni a programot vagy legalábbis egy részét, mert már elavult, nem hatékony, vagy egyszerűen nem a legideálisabb megoldás. Ilyenkor már ne ragaszkodj mindenáron az eredeti kódhoz, hanem fuss neki újra, akár a nulláról a problémának! Ehhez jelent segítséget a megoldásfókusz: az újragondolást érdemes mindig a vágyott végeredménnyel kezdeni, és abból kiindulva megkeresni a legfrappánsabb megoldást. Nem kizárt, hogy egy harmadik – vagy sokadik – variáció lesz a nyerő.
A megoldásfókusz egy olyan mentális gyakorlat, ami az egyéni és a csapatmotiváción is sokat tud dobni. Ha például a felhasználó szempontjából vizsgáljuk meg a megrendelő kérését és közösen elképzeljük, ahogy a célközönség pár hónap múlva örömmel használja a szoftvert, az sokkal izgalmasabbá teszi a megvalósítás folyamatát. Ugyanígy a tanulásban is sokat tud segíteni, ha belehelyezkedsz egy jövőbeli, vonzó állapotba, például elképzeled, milyen büszke leszel magadra, ha befejezed a projektet, amin hetek óta dolgozol. Márk is ezt vallja: „Ma már elég tisztán látom, hogy hova szeretnék eljutni, miben akarok fejlődni, és évről évre milyen technológiákat szeretnék megtanulni. Ez pedig motivál abban, hogy munka után is leüljek fejleszteni magam.”
Érdekel a programozás? Vágj bele nálunk! Jelentkezz a Codecool kéthetente induló programozóképzésére és szerezz piacképes, biztos tudást egy év alatt!