9. Feb 2022Backend & DevOps

Ako sa pripraviť na pohovor a zvládnúť live coding pre Junior Backend developera 

Prečítaj si, čo by mal vedieť junior developer ešte pred pohovorom, aké otázky môžeš dostať a prečo by si sa nemal až tak báť, ak dostáneš pozvanie na skúšku v programovaní.

Matej DugovičBackend Developer

Najlepší výkon na pracovnom pohovore by si pravdepodobne podal, keby si tú prácu vlastne ani nechcel. Počas ostatných pokusov budeš zo začiatku tak vystresovaný, že sa ti stane aj nejaký trapas. U mňa to bola odhadom jedna katastrofa k deviatim bežným pohovorom.
 

Najbizarnejší bol online video rozhovor, ktorý som robil bez živej osoby na druhej strane.

Keď som na videu zbadal, ako vyjavene vyzerám už po prvej otázke, zaklapol som notebook a dúfal, že sa to zresetuje. Stream, bohužiaľ, pokračoval ďalšími otázkami. Obrazovku som teda zatvoril druhýkrát a  následne sa im to tak asi poslalo. Našťastie ma už nikdy nekontaktovali. Latka je dosť nízko, ale dnes by som to už určite zvládol lepšie.

 

Ďalší pohovor bola séria celkom ťažkých online úloh v Pythone, no mne sa podarilo nešťastne prekliknúť a nenávratne preskočiť prvé dve. Tiež som suverénne nabehol na interview v iný deň, ako sme sa dohodli. Programovanie je našťastie na takéto trapasy benevolentnejšie, keďže ponúk je stále celkom dosť, ale ak chceš byť trochu pripravenejší, pripravili sme niekoľko základných rád, ktoré by ťa mohli zaujímať.
 

Praktická skúška: domáce úlohy vs. live coding

Pokojne sa ti môže stať, že absolvuješ pohovor, na ktorom sa iba porozprávate a do pár dní dostaneš ponuku bez toho, že by si v priebehu interview napísal čiarku kódu. Znie to ako výhra, ale firma a aj ty riskujete, že sa nestretnú tvoje vedomosti s očakávaniami v novej práci. A ako junior je toho ešte veľa, čo nebudeš vedieť.

Jedna z najnepríjemnejších častí pohovoru je praktická skúška. Najčastejšie sa stretneš s dvomi typmi - úlohou na doma alebo live codingom online či priamo vo firme.

Otvorená pracovná pozícia pre backend developera
Hľadáš miesto, kde by si posunul svoju kariéru vpred? Máme otvorenú pozície!

Domáce úlohy - výhody, nevýhody a praktická ukážka
 

Úlohy na doma sú super, máš dostatok času na vyriešenie, menej stresu, môžeš googliť koľko chceš a nikto to nevidí (aj tak s tým všetci rátajú a je to úplne ok). Nevýhodou je časová náročnosť - riešenie, s ktorým budeš spokojný, ti môže zabrať napríklad 5 hodín. A teraz si predstav, že máš za dva týždne takýchto pohovorov päť. Pôvodný odhad si vynásob ešte dvoma, ak by si narazil na komplikovajší problém, ktorý si doteraz neriešil. 

 

Pre predstavu, ako môže vyzerať jednoduché zadanie pre backend junior pozíciu:
 

  1. Rozbehaj Express server
  2. Pripoj sa na externé api s cenami Bitcoinu 
  3. Vytvor endpoint, ktorý bude z frontend aplikácie volať Express server a vráti ceny Bitcoinu v požadovanom formáte
  4. Zapracuj filter, ktorý vráti ceny pre konkrétny dátum
  5. Vyrátaj priemernú cenu Bitcoinu, minimá, maximá za posledný mesiac
  6. Bonusová otázka: Nastav prístup len pre prihlásených užívateľov
     

💡️ Tip: Bonusové otázky za extra body môžeš rovno považovať za povinné - je veľká šanca, že niekto z tvojich konkurentov ich urobí. 
 

Zadania sú aspoň zo začiatku dobré na precvičenie a niektoré firmy ti dajú na záver aj feedback, čo by si mal zlepšiť.

Čo robiť a čo nie počas Live coding pohovoru

Domáce úlohy sú pre firmy rýchle sito a zatiaľ sa s nimi budeš stretávať častejšie, no populárne sú čoraz viac aj live coding testy a úplne sa im nevyhneš. Pri prvej pozvánke asi strnieš, skúška nemá až tak ďaleko od ústnej maturity.

 

Pripojíš sa do online miestnosti, kde ti tvoji (možno) budúci kolegovia dajú zadanie s úlohou, vysvetlia, čo máš spraviť a koľko na to máš času. Pocit, že ťa niekto celý čas sleduje ako píšeš do editora písmenko po písmenku nie je príjemný, ale mal by si si zvykať na to, že v bežnom pracovnom ruchu nie je až také výnimočné písať kód aj pred kolegami.

 

Znie to hrozivo, ale po desiatkach vypracovaných zdĺhavých zadaní na doma nájdeš trochu lásky aj pre rýchly livecoding. Celé to netrvá zväčša viac ako hodinu a z toho možno štvrtinu času iba rozprávaš.
 

💡 Tip: Komunikácia je porovnateľne dôležitá ako kód, určite by si nemal iba v tichosti vyriešiť problém a skončiť. Skúšajúci chcú vidieť aj ako rozmýšľaš nad problémom a ako sa rozhoduješ.

 

Na začiatku si dobre prečítaj zadanie a ak niečomu čo len trochu nerozumieš, neboj sa požiadať o upresnenie. V praxi sa budeš často stretávať so zadaniami, ktoré nie sú jednoznačné a ak sa netrafíš, riešenie môžeš robiť odznova.

 

Na začiatku si ujasni, aké pomôcky máš k dispozícii, či už oficiálnu dokumentáciu alebo StackOverflow fórum. Možno ti len nejaká drobnosť vypadne alebo je to pre teba úplne nový problém, ale v každom prípade ukáž, že si s nim vieš poradiť. Ak si nemôžeš ničím pomôcť alebo sa hneď zasekneš, skús sa zamyslieť nad iným riešením, určite ich existuje x. To isté platí, aj keď ti ako prvé napadne brute force riešenie - možno sa ti podarí ho trochu vylepšiť.

 

Pokiaľ ťa časový limit stresuje, úplne ho ignoruj, aj tak ti zo začiatku nijako nepomôže. Každá firma má rôzne akceptačné kritériá na dostatočne dobrý výsledok aj v závislosti od náročnosti úlohy, ale junior by mal ukázať hlavne, aký má potenciál, ako rozmýšľa a v akých mantineloch sa pohybuje. Počas môjho prvého live codingu som vyriešil 0 z 3 úloh a aj tak ma zobrali (nie nebol to GoodRequest😅 ) .

Ako dlho sa musím pripravovať na pracovný pohovor?

V skratke, celý život. Na juniorskej pozícii od teba asi nikto nebude chcieť, aby si vedel z hlavy napísať optimálny algoritmus na zoraďovanie, ale je fajn, ak aspoň vieš, o čo ide a ako ho použiť.

 

Vypracuj si minimálne jednoduchšie úlohy so stránok ako HackerRank alebo LeetCode, nemal by si mať problém so základnými operáciami ako filtrovanie, sortovanie, úpravy objektov, práca so základnými dátovými štruktúrami, použitie klasických a rekurzívnych funkcií. Časom sa môžeš k už vyriešeným problémom vrátiť a skúsiť ich spraviť ešte lepšie. Nedá sa veľmi povedať, koľko úloh musíš vypracovať, ale sám uvidíš, ako sa zlepšuješ.

 

Ako backend developer by si sa mal vedieť, čo je REST api (prípadne alternatívy ako soap, sockety). Skús si pripraviť jednoduchý webový server (napr. NodeJS), ktorý bude komunikovať s frontendom a databázou.

 

Aby toho nebolo málo, určite sa ti budú hodiť aspoň základy SQL na operácie nad databázou.

 

Hodí sa mať aj IT stáž, ale nedostatok skúseností môžeš čiastočne nahradiť aj vlastným projektom. Nájdi si niečo, čo ti bude dávať zmysel a bude ťa to baviť dlhšie ako jeden víkend, aby si sa dostal aj ku komplexnejším problémom. Dôležitý je feedback a ak nemáš v okolí nikoho skúsenejšieho, skús si ho vypýtať aspoň na internetových fórach. Zistiť, čo robíš zle, ale naučíš sa aj prijímať kritiku.
 

Čo sa ťa budú zamestnávatelia pýtať?

Okrem klasických otázok, aké projekty si programoval, problémy s nimi a ako si ich riešil, sa priprav aj na preverenie tvojich sociálnych schopností. Personalistov môže zaujímať, v akých veľkých tímoch si pracoval, ako ste si delili prácu a ako ste si pomáhali.

 

Ak odpovieš, že radšej pracuješ sám ako v kolektíve, nemusí to hneď znamenať, že ťa nevezmú, no programovanie na väčších projektov je tímová práca. Nielen, že kód, ktorý napíšeš by mal vedieť rozlúštiť aj tvoj kolega, ale bežne budeš komunikovať s inými developermi, manažérmi, testermi, neskôr možno priamo aj s klientami. 

Projektový manažment

Pred pohovorom sa ti môže hodiť aspoň krátke štúdium k tímu pri vývoji softvéru. 

Ak si hľadáš svoju prvú prácu, mal by si vedieť zamestnávateľa presvedčiť, že zvládneš základné manažovanie úloh a deadliny.

 

Kľúčové slová, s ktorými sa najčastejšie stretneš, budú určite agilný vývoj, scrum, šprinty, standupy a bude len tvoje plus, ak budeš vedieť o čo ide. Agilný vývoj je v skratke flexibilnejší, dokončujú sa vždy menšie časti odovzdateľného kódu v kratších úsekoch (napr v dvojtýždňových šprintoch). Tím často komunikuje so zákazníkom a prispôsobuje sa jeho priebežným požiadavkám.

 

Niekde sa ešte môžeš stretnúť s waterfall štýlom, ktorý je rigidnejší. Komunikácia je najdôležitejšia v prvej fáze zadania a pochopenia projektu, neskôr už zákazník do vývoja nevstupuje. 

 

Hororové situácie môžu nastať pri oboch, ale pri agilnom vývoji by sa ti nemalo aspoň stať, že sa s klientom na začiatku nepochopíte a zistíte to až po po drahom ročnom vývoji po odovzdaní projektu.
 

Neznáme technológie v inzerátoch

V inzerátoch uvidíš množstvo technológií, s ktorými si sa ešte nestretol. Nenechaj sa tým úplne odradiť, aj počas kariéry sa budeš musieť učiť za pochodu na živých projektoch. Je dobré vedieť filtrovať, ktoré sú pre danú pozíciu kľúčové a nestačí, že iba vieš, že existujú. Ak si nie si istý, môžete si to s personalistom ujasniť ešte v prvom kole pohovoru.
 

💡 Tip: Začínajúci backend developer by mal vo všeobecnosti ovládať aspoň základy práce s GITom, komunikáciu serverovej aplikácie s frontendom a s databázou.

 

Konkrétne príbuzné technológie už nehrajú až takú rolu a ak si zvládol pracovať s NodeJS frameworkom Expressom, nemalo by ti robiť problém sa zorientovať ani pri inzeráte na NestJS developera. Podobne aj pri relačných databázach je dobré vedieť základne SQL a už podľa potreby sa dovzdelať v rozdieloch medzi PostgreSQL a MySQL

 

Z "extra" technológií sa ti oplatí aspoň veľmi základne zoznámiť s Dockerom na kontajnerizovanie aplikácií.

 

Buď úprimný v životopise, aj na pohovore, určite neklam, že niečo ovládaš a v živote si s tým nerobil. Vždy si to môžeš doštudovať a klamstvo sa dá veľmi ľahko odhaliť.  
 

Pýtaj sa na pohovore aj ty

Prichystaj si ešte pred pohovorom zoznam otázok, ktoré ťa zaujímajú o firme alebo pozícii. 

Ak sa rozhodneš akceptovať ponuku, s ktorou nebudeš spokojný, máš síce možnosť odísť v skúšobnej dobe, ale vyhneš sa možno dalšiemu live codingu.
 

💡Tip: Zisti si čo najviac o tom, čo budeš robiť. Môžeš si pomôcť tým, že si nájdeš klienta alebo interný projekt firmy a opýtaš sa, aké konkrétne úlohy by ti dali vypracovať.

 

Veľa vecí dozvieš až po nástupe, ale o technickej kvalite ti niečo povie aj či štandardne robia code review, píšu testy, ako prebieha kontrola pred nasadením kódu.

 

Asi ťa bude zaujímať aj to, či sa ti niekto skúsenejší bude mať čas sa ti venovať.

 

Nasávaj celú atmosféru, programovanie je tímová práca a každému sa pracuje lepšie, ak si sadnete.

Pripravený na výzvu? Pridaj sa do nášho tímu💪

https://www.goodrequest.com/open-positions/web-developer-sk
Matej DugovičBackend Developer