Denník N

Ako vyzerá pohovor do Microsoftu, Amazonu či Googlu?

Čo rozhoduje pri ceste do najlepších softvérových spoločností na svete? Jednoznačne vedomosti, nie titul.

minulom článku som písal o štúdiu na Matfyze, tentokrát sa budem venovať pohovorom v „Big Tech“ firmách. Osobne som ich zažil zatiaľ štyri v troch spoločnostiach z nadpisu, úspešný som bol trikrát. Všetko v tomto článku sa týka pozície „Software Engineer“. Moje skúsenosti sú, samozrejme, veľmi subjektívne a nedajú sa zovšeobecniť, napriek tomu sa chcem podeliť o niekoľko postrehov, ktoré som odpozoroval. Tento blog neobsahuje konkrétne otázky, keďže je bežnou praxou podpisovať takzvané NDA (Non Disclosure Agreement), ktoré zakazuje ich zdieľanie.

Ako sa dostať na pohovor a čo s tým má LinkedIn?

Predtým, ako sa dá uspieť na pohovore, je nutné sa ho zúčastniť, pričom dostať pozvánku vôbec nie je samozrejmosť. Najjednoduchšie je navštíviť stránku spoločnosti, nájsť vhodnú otvorenú pozíciu a poslať žiadosť. Osobne som sa však týmto spôsobom dostal len na jeden pohovor, aj to bol interný presun v rámci Microsoftu. Všetky ostatné iniciovali recruiteri na sociálnej sieti LinkedIn. LinkedIn je niečo ako Facebook pre pracovné príležitosti. Táto sociálna sieť je masívne využívaná IT profesionálmi a recruitermi. Kľúčové je vybudovať si sieť aspoň zopár desiatok connections (niečo ako priateľstvá na Facebooku) a potom sa už recruiteri začnú ozývať pravidelne sami. LinkedIn umožňuje nastaviť si, či ste otvorený pre nové pozície a v akých lokalitách, čo je skvelé, ak chcete zmeniť nielen prácu, ale aj krajinu.

Ako sa pripraviť a čo s tým má GitHub?

Cesta k pracovnej ponuke od veľkej softvérovej spoločnosti začína už dávno pred samotným pohovorom. Ak by som mal vyzdvihnúť dve najpodstatnejšie schopnosti, ktoré sú nevyhnutné k úspechu, povedal by som, že sú to schopnosť navrhovať efektívne algoritmy a programovanie. Existuje viacero ciest k nadobudnutiu týchto zručností. Pre mňa bola hlavným zdrojom vedomostí škola, ale určite to nie je jediný možný spôsob. Čo sa týka algoritmov, existuje veľa literatúry, ktorá sa im venuje. Dokonca existujú knihy, ktoré sú priamo venované programátorským pohovorom vo veľkých spoločnostiach (skúste vyhľadať „Cracking the Coding Interview“). Okrem toho existuje kopec videí a portálov s modelovými otázkami, ktoré si určite treba skúsiť.

Čo sa týka programovania, z pozorovania mi vychádza, že úplne najdôležitejšie je predať skúsenosti. Ak ste už niekde pracovali ako programátor, je to veľká výhoda, ale čo ak žiadate o prvú prácu a nemáte žiadnu prax v komercii? V prípade, že máte nejaké školské či osobné projekty, hoďte ich na GitHub! IT komunita miluje Open Source a GitHub je miesto, kde milióny programátorov verejne zdieľajú svoje kódy. Samozrejme, existujú aj alternatívy ako GitLab či Bitbucket, ale GitHub je najpoužívanejší. Dokonca aj keď už mám nejaké pracovné skúsenosti, v životopise nechávam moje osobné projektíky, pretože nikdy neuškodí poukázať na to, že moje skúsenosti nepochádzajú len priamo z práce.

Ale čo ak nemáte žiadne projekty a s programovaním len začínate alebo dokonca len chcete začať? Programujte! Existuje kopec videí, kurzov a návodov ako programovať a určite ich treba využiť. Zároveň je ale veľmi dôležité nezostať len pri teórii a skúsiť si to. Síce to bude zo začiatku ťažké, kódy budú otrasné, ale tréning robí majstra. Kdesi som čítal, že každý, kto začína maľovať, by si mal odkladať všetky svoje kresby od tej úplne prvej, aby videl, ako sa zlepšuje. S programovaním je to podobné. Osobne programujem asi 7 rokov (vrátane školy) a skoro vždy platí, že keď sa pozriem na kódy staršie ako rok, nepáčia sa mi a už by som ich napísal úplne inak, lepšie, efektívnejšie. To je ale zároveň dôkaz toho, že sa posúvam a zlepšujem.

Ako prebieha samotný pohovor?

Keď už zaujmete nejakého recruitera, na rade je samotný pohovor. Lepšie povedané, séria pohovorov. Každá firma to má inak, ale zväčša po prvom orientačnom pohovore nasleduje jeden telefonický pohovor a v prípade úspechu postup do posledného kola. Telefonický pohovor býva najjednoduchší. Zvyčajne pozostáva z jednoduchej algoritmickej alebo programovacej úlohy, ktorú je nutné vyriešiť v pomerne krátkom časovom limite.

Po tomto „hrubom site“ nasleduje buď koniec, alebo pozvánka na zvyšné pohovory. Pred pandémiou bolo zvykom posledné kolo volať „on-site interview“, keďže sa konalo priamo vo firme. Spoločnosť vždy ponúkla niekoľko dátumov a zaplatila letenky, hotel a obed. Samotný deň pohovoru pozostával z troch až piatich pohovorov, každý zhruba na hodinu, spravidla hneď po sebe. Celkovo je to väčšinou veľmi vyčerpávajúca záležitosť, ale často je to aj príležitosť spoznať nové mesto. Avšak v dobe pandémie sa pravdepodobne takmer všetky pohovory dejú online.
Na samotných pohovoroch sa otázky dajú zhrnúť do štyroch kategórií:

  1. Algoritmická úloha.
    Vyriešenie algoritmickej úlohy je základom (takmer) každého pohovoru do top softvérových spoločností. Dostanete úlohu a musíte ju vyriešiť čo najefektívnejšie a na tabuľu napísať kus kódu s riešením. Dôraz sa väčšinou nekladie na bezchybný kód, ale na optimálny návrh algoritmu. Je v pohode byť chvíľu ticho, zamyslieť sa, ale časový rámec je neúprosný, a preto je lepšie prísť s aspoň nejakým riešením ako so žiadnym. Relatívne často je zadanie nejednoznačné, takže je veľmi dôležité si overiť, aká je vlastne otázka, aké sú podmienky či možné vstupy. Rozmýšľanie nahlas môže byť nepohodlné, ale dáva predstavu, akým spôsobom sa snažíte dospieť k riešeniu.
  2. Skúsenosti.
    Pokec o skúsenostiach je zvyčajne jedna z príjemnejších častí pohovoru. Interviewer je zvyčajne tiež nadšený do programovania, čiže ho veľmi zaujíma, na akých projektoch ste robili, čo konkrétne ste robili vy, aké technológie ste používali, ako ste riešili problémy, ktoré nastali a podobne. Určite sa netreba báť prejaviť entuziazmus pri popisovaní svojich diel.
  3. Architektúra a návrh softvéru.
    Táto časť sa nevyskytuje na pohovoroch čerstvých absolventov, iba na vyššie pozície. Jedná sa o teoretický návrh komplexnejšieho systému. Rozoberajú sa jednotlivé komponenty nutné na fungovanie systému, ich úlohy, komunikačné protokoly medzi nimi, či spôsob ukladania dát. Väčšinou sa tiež kreslí na tabuľu, ale v tomto prípade už často úloha nemá jednoznačné riešenie, a preto je veľmi dôležité diskutovať o rôznych možnostiach návrhu, porovnávať ich medzi sebou, zdôvodniť pre a proti odlišných prístupov. Táto časť často odhalí technológie, ktoré poznáte, a ako s nimi viete pracovať.
  4. Soft skills.
    Každá spoločnosť to má trochu inak, ale väčšinou sa budú zaujímať o to, akým spôsobom sa staviate k netechnickým problémom. Veľmi časté sú otázky ohľadom riešenia konkrétnych problémov na predchádzajúcom pracovisku. Táto časť pohovoru je niekedy skrytá medzi riadkami, ale napríklad v Amazone otvorene zisťujú vašu kompatibilitu s ich „Leadership Principles“.

Existuje recept na úspech?

Nemyslím si, že sa dá naučiť tieto pohovory zvládať so stopercentnou úspešnosťou. Existujú ale spôsoby, ako zvýšiť svoje šance. Určite sa oplatí veľa programovať, precvičovať si algoritmické úlohy a hlavne chodiť na pohovory. Radšej ísť na desať pohovorov a uspieť raz, ako sa mesiace pripravovať doma na jediný a neuspieť. Neúspech automaticky neznamená, že na to nemáte, uchádzačov je veľa, úlohy nie vždy sadnú a nie vždy máme svoj deň. Práve preto sa netreba báť skúšať opakovane. Pohovory samotné sú skvelé na precvičenie si znalostí naostro a ktovie, možno dostanete nejakú skvelú ponuku.

Teraz najčítanejšie

Lubomir Ohman

Pochádzam z dedinky Geča neďaleko Košíc. Vyštudoval som informatiku na Matematicko-fyzikálnej fakulte Univerzity Karlovej v Prahe. Momentálne žijem v Bellevue, WA v USA a pracujem v Microsofte ako Software Engineer.