Publikálva:
2016.04.08.

Így készülj fel junior programozóként egy állásinterjúra!

Minden programozói állásinterjú más, de pár praktikus tanáccsal a Green Fox is segíthet neked, hogy nagyobb eséllyel juss számodra megfelelő munkához.

Minden felvételi interjú más, de pár praktikus tanáccsal mi is segíthetünk neked, hogy nagyobb eséllyel juss számodra megfelelő munkához. Íme a Green Fox tippjei álláskereső junior fejlesztőknek.

Legendás írásnak számít Steve Yegge Get that job at Google című posztja a messzi 2008-ból, amely szinte minden részletet elárul a fejlesztői állásinterjúkkal kapcsolatban. Még azt is, hogy milyen a tökéletes whiteboard filctoll, amit érdemes is magaddal vinni, hogyha ideális helykihasználtsággal akarod megoldani a felvételi kérdéseket. A cikk mintájára számos felvételi kisokos született: a Microsoft, az Amazon vagy a Facebook állásinterjú tutorialja világszerte kedvelt olvasmány. Ha másért nem, jót lehet rajtuk szórakozni. De az is megeshet, hogy egyszer ezekre a helyekre adod be a jelentkezésed. Ám még ne szaladjunk ennyire előre: nézzük, milyen technikai kérdésekre számíthat egy magyar junior fejlesztő, ha állásinterjúra hívja a vágyott cég?

Beszélgetés és teszt - vagy fordítva

Az állásinterjúk forgatókönyve változó. Számos cég általános beszélgetéssel kezdi a felvételi folyamatot, és csak utána tér rá a tesztre. A mottó: ha nincs meg a kémia, akkor mindegy, mekkora a tudás. Van olyan munkaadó is, aki szereti egy beugró teszttel előszűrni a jelentkezőket. “Ez sokszor valóban csak egy egyszerű kérdést jelent, és csak alapfogalmakat tisztáz, hogy kiderüljön, nem a sarki fűszeres ugrott be tévesen az interjúra. Ugyanakkor a nulladik feladat is lehet nagy falat. Létezik ugyanis olyan employer branding, mely szerint azt az üzenetet kell sugallni, hogy hozzánk nehéz bekerülni, mivel itt mindenki irtó okos, tehát érdemes is hozzánk jönni, mert sokat lehet tanulni”. Az ellenpóluson pedig az a munkaadó áll, akinek meggyőződése, hogy nem engedheti meg magának, hogy bárkit is elveszítsen csak azért, mert túl nehéz a teszt. Ilyenkor az interjú az első, és ha kölcsönös a szimpátia, a jelölt később pozitívan áll a teszthez, sőt, szárnyakat is kaphat.” - mondja Csudutov Csudinka, az informatikai munkaerőpiacra specializálódott tanácsadó cég, a Mimox ügyvezetője.

“Nem létezik kifejezetten junioroknak vagy senioroknak szóló feladat. Vagy pontosabban: ugyanaz a feladat elsüthető mindkét esetben. Ha a junior nem nyújt tökéleteset a teszt során, de okosan és lelkesen próbálkozott, az akár többet is érhet, mint egy senior közepes teljesítménye.” - teszi hozzá Csudi.

Körözsi Tamás, az Epamsoftware engineeringmanagere szerint a lexikális tudás kevésbé fontos junior szinten: “Ha valakinek jó képességei vannak, akkor úgyis rövid időn belül megtanul majd mindent, ami az adott munkáhozszükséges. Nekünk szinte mellékes a jelentkező végzettsége. Az elhivatottság sokkal fontosabb. Az pedig hamar kiderül. Aki azért programozik, mert az örömöt szerez neki, az a szabadideje egy részében - vagy egészében is - ezt teszi, hiszen az élteti, hogy problémákat oldjon meg. Ha viszont valaki csak azért jön erre a pályára, mert felkapott és jól fizet, és úgy végzi el az egyetemet, hogy csak annyit programozott közben, ami beadandókhoz szükséges volt, az általában már az előszűrésen kiesik.”

A teszt maga

Az esetek egy részében egy online tesztet kell helyben megoldanod, melyhez jár egy felhasználónév, egy jelszó, a meccs időre megy, a guglizás kizárt. Gyakori megoldás, hogy a vizsgán egy Githubon elhelyezett open source szoftverhez kell valamit hozzátenni - akár otthon is. A kérdés itt részben az, hogy hogyan tudod értelmezni és alkalmazni valaki másnak a  kódját, és hogyan integrálod azt a sajátodba. Ebben az esetben időmérés ugyan nincsen, de a munkával töltött időt számon tartják. Nem tiltja semmi a segédeszközök használatát, de érdemes csakis kifejezetten elegáns megoldások kedvéért a Google-höz nyúlni. A feladat típusával a munkaadó sokszor meg is határozza, milyen típusú munkára számíthat majd a szerencsés kiválasztott. Persze előfordulhat, hogy ezen a ponton már nem is érzed úgy, hogy megnyerted a lottó ötöst.

“A teszt egy lehetséges - és nem kifejezetten közkedvelt - formája a paper coding, azaz a helyben, fehér A4-es papíron (vagy whiteboardon) elkészített kód. Ilyen esetben nem jellemző a túl bonyolult feladat. Egyszerű, de gondolkodós kérdésre lehet számítani, és inkább a helyzet kényelmetlenségének van jelentősége. Magyarul: hogyan old meg a jelentkező egy problémát, ha a feltételek nem ideálisak.” - tudtam meg Csuditól.

“A szakmában nem ritka hogy whiteboardon vagy A4-es papíron kell bizonyítani.” - ezt mondja Tamás is. “Ezt sokszor a junior kollégák félreértik, és azzal mentegetőznek, hogy azért nem teljesítenek jól, mert nem szoktak így dolgozni. Elárulom, hogy senki sem szokott whiteboardon programozni. Itt pont arról van szó, hogy egy igazán tehetséges fejlesztőnek teljesen mindegy, milyen felületet használ. Természetesen tudnánk gépeket adni, hogy azon programozzanak a srácok, de így sokkal szebben előjönnek az erősségek és a gyengeségek. Én úgy látom, hogy ha valakinek komoly gondot okoz, hogy papíron vagy táblán kódoljon, általában ez már azt is jelzi, hogy nem rendelkezik a szükséges képességekkel.

Természetesen nem csak az a fontos, hogy a kód azt tudja, amit kell. A dokumentáció legalább akkora hangsúlyt kap az értékelésnél. Készített a jelölt user manualt? Milyen a szoftver hibakezelése? Mennyire tesztelte le a jelentkező a kódot? Vagy esetleg “túltesztelte”? Ha a feladatmegoldás közben kommunikálni kell, annak minősége is sokat vet a latban. A felvételiztetők mindig értékelik, ha a feladathoz nagy kedvvel látsz hozzá, és ha hibázol, de eszedbe jut, hogyan tudnád kijavítani a hibát, ezt azonnal jelzed is.

Gyakorlás teszi a mestert

Vámosi Dani, a Green Fox Academy első osztályának mentora

A gyakorló, vagy challenge site-oknak se szeri se száma. Hogy mégis könnyebben igazodjatok el közöttük, megkérdeztem Vámosi Danit, a Digital Natives vezető fejlesztőjét, egyben a Green Fox mentorát, hogy melyik weboldalakat tartja a leghasznosabbnak: “Mi tanítás közben is gyakran használjuk például aHackerRank vagy a CodeWars feladatait, de híres gyűjteménynek számít aCodekata is. Itt olyan alapvető kis programok találhatóak, melyek bármilyen nyelven implementálhatóak és pontosan lemérhető velük, ki, mennyit tud. Ha könyv, akkor pedig Brian P. Hogan Exercises for Programmers című gyűjteményét ajánlom, ami 57 kihívást tartalmaz. Ha nagyobb fejlesztői csapatba készülsz, hasznos lehet a The Algorithm Design Manual című könyv, de ahol az önálló problémamegoldás hangsúlyosabb a megpályázott munkakörnél, ott az Algorithmic puzzles című mű tehet jó szolgálatot. Ebben olyan feladatokat találhatunk, melyek sokkal inkább számítanak fejtörőknek. Nem szükséges programozni a megoldásukhoz, hanem az algoritmikus gondolkodás, a probléma megfogalmazása a lényeges.”

Tamás Robert C. Martin Clean code című könyve mellett teszi le a voksot. “Igazán olvasmányos könyv, amit a fejlesztők zöme - talán nem véletlenül - alapbibliának tart. A karrierünk elején érdemes többször is elolvasni, mert minél több tapasztalatot szerzünk mellé, annál többet mond nekünk.” Az Epam egyébként kifejlesztett egy saját alkalmazást is, amely képes felmérni a juniorok kódolási képességét. “Ez egy online, otthonról is kitölthető teszt, amely sokkal többet mér, mint amit elsőre gondolna az ember. Olyan adaptív tesztelő rendszerről van szó, amely folyamatosan figyeli a teszt kitöltőjének a teljesítményét, és attól függően más és más kihívások elé állítja őt, hogy miként teljesített addig a pillanatig a teszten. Így senki nem érzi könnyűnek a tesztet, hiszen mindenki a saját szintjének megfelelő feladatokkal kell megküzdenie. Lényegében kódolási feladatokat kell megoldani - gyorsan és sokat. Az eredmény alapján meg tudjuk mondani például azt is, ha valaki nagyon precíz, viszont jóval lassabban dolgozik, mint az átlag.” - mondja Tamás, aki úgy látja, a jelentkezők általában élvezik a “játékos” tesztjük kitöltését.

Ki a junior?

Nehéz a kérdés, és nincs egyértelmű válasz. Sokan, sokféleképpen használják a junior szót. Akad olyan munkaadó, aki a kezdőt tartja juniornak, aki épp kikerült az “iskolapadból”, és még soha nem fejlesztett éles környezetben semmit. Mások azt a szabad szemmel már látható tapasztalattal rendelkező fejlesztőt hívják így, akit valamilyen oknál fogva mégsem tekintenek seniornak. A köztes állapot is létezik: ha a fejlesztő dolgozott már pár hónapot valahol, és/vagy fel tud mutatni néhány hobbi projektet. A lényeg, hogy mindkét félnek érdeke, hogy minél hamarabb kiderüljön, a konkrét munkakör esetében mekkora és milyen típusú tudásra van szükség. “Hivatalosan nálunk az számít juniornak, akinek még nincs legalább 1-2 éves, napi 8 órás munkatapasztalata. Azt is tudni kell, hogy az Epam például saját képzési programokat is futtatunk, így ha valaki junior fejlesztőnek jelentkezik hozzánk, azt általában még 3 hónapon keresztül képezzük.” - mesélte nekem Tamás.

Tovább olvasnál?