Kako priti na prakso v Google

Pred enim tednom smo govorili o naših izobraževalnih programih , kjer so nam v komentarjih opozorili na pomen pripravništva in praktičnih izkušenj. S tem se ne moremo ne strinjati, saj je potrebno teoretično znanje potrditi s prakso. S tem zapisom odpiramo serijo člankov o poletnih pripravništvih študentov: kako se nanje prijavljajo, kaj izvajajo tam in zakaj je to dobro.

V prvem članku bom govoril o tem, kako uspešno prestati vse stadije razgovorov in priti na pripravništvo v Googlu.

Kako priti na prakso v Google

Dobrodošli na kratko o sebi

Sem 1. letnik magistrskega programa na Peterburškem kampusu Višje šole, končal sem dodiplomski študij na Akademskem univerzitetu na področju strojnega učenja. Med dodiplomskim študijem sem se aktivno ukvarjal s športnim programiranjem in sodeloval na različni hackathonih. O teh zadnjih lahko preberete tukaj, tukaj in tukaj.

O pripravništvu

Za začetek želim malo govoriti o tem, kako izgleda pripravništvo v Googlu od znotraj.

Vsakega pripravnika, ki pride v Google, pripnejo k neki ekipi. To je lahko ekipa, ki dela na razvoju notranje infrastrukture, o kateri oseba zunaj podjetja ne ve nič, ali pa na produktu, ki ga uporabljajo milijoni ljudi po celem svetu. Takšni proizvodi so lahko znani YouTube, Google Docs in drugi. Ker na razvoju teh projektov delajo desetine, celo stotine razvijalcev, boste del ekipe, ki se specializira na nekem ožjem delu. Na primer, poleti 2018 sem delal na Google Docs, dodajal nove funkcionalnosti za delo s tabelami.

Ker ste v podjetju pripravnik, imate tudi managerja, ki mu pravijo host. To je običajen zaposleni s polnim delovnim časom, ki se sam ukvarja z razvojem proizvodov. Če česa ne veste, ne morete rešiti ali se srečate s težavami, se morate obrniti nanj. Običajno se določijo tedenske eno-na-eno srečanja, kjer lahko razpravljate o trenutni situaciji pri delu na projektu ali se pogovarjate o čem povsem nepovezanem. Poleg vsega je host eden tistih ljudi, ki bodo ocenjevali vašo opravljeno delo med pripravništvom. Še en dodatni recenzent bo tudi ocenjeval vašo delo. Seveda pa sta zainteresirana, da vam vse uspe.

V Googlu vas bodo cepili, vendar to ni zagotovo; dobra praksa je pisati dizdok (design document) pred tem, preden se lotite česarkoli. Za tiste, ki ne vedo, dizdok je dokument, ki opisuje bistvo obstoječe težave ter podrobno tehnično rešitev le-te. Dizdok lahko napišete tako za celoten izdelek kot tudi za določeno novo funkcionalnost. S tem, ko preberete to dokumentacijo, lahko razumete, s kakšnim namenom je bil izdelek zamišljen in kako je bil realiziran. Prav tako pogosto v komentarjih lahko vidite dialoge med inženirji, ki razpravljajo o različnih načinih realizacije določenega dela projekta. To daje dobro razumevanje, s kakšnim namenom je bila sprejeta vsaka odločitev.

Posebnost prakse je v tem, da boste uporabljali neverjetna notranja orodja za razvoj, katerih ima Google ogromno. Potem ko sem delal z njimi in se pogovarjal z mnogimi ljudmi, ki so delali pri Amazonu, Nvidii in drugih znanih tehnoloških podjetjih, lahko sklenem, da imajo ta orodja velike možnosti, da so med najboljšimi, kar ste jih kdajkoli srečali v svojem življenju. Na primer, orodje z imenom Google Code Search ne samo da omogoča ogled celotne kode, zgodovine sprememb vsake vrstice kode, temveč tudi omogoča navigacijo po kodi, na katero smo navajeni v sodobnih razvojnih okoljih, kot je Intellij Idea. In za to potrebujete le brskalnik! Povezani s to lastnostjo je slabost to, da vam teh orodij izven Googla ne bo dovolj.

Kar se tiče dodatkov, pa ima podjetje super pisarne, dobro prehrano, omogoča telovadnico, odlično zavarovanje in druge ugodnosti. Preprosto bom pustil tukaj nekaj slik iz novyorkskega urada:

Kako priti na prakso v Google
Kako priti na prakso v Google
Kako priti na prakso v Google

Kako dobiti ponudbo?

Pregled

Zdaj je čas, da spregovorimo o nečem resnejšem: kako priti na prakso?

Tukaj ne govorimo o Googlu, ampak o tem, kako to poteka na splošno. O posebnostih postopka izbire praktikanov v Googlu bom napisal spodaj.

Postopek razgovora v podjetju bo verjetno izgledal nekako takole:

  1. Prijava na prakso
  2. Tekmovanje na Hackerrank/TripleByte Quiz
  3. Skrining intervju
  4. Prvi tehnični intervju
  5. Drugi tehnični intervju
  6. Onsite intervju

Prijava na prakso

Očitno je, da vse začne z vašo željo po praksi. Da to uresničite, morate izpolniti prijavnico na spletni strani podjetja. Če imate (ali vaši prijatelji) poznanstva, ki tam delajo, poskusite priti skozi njih. Ta možnost je prednostna, ker vam pomaga izstopati iz množice drugih študentov. Če take možnosti ni, se prijavite sami.

Potrudite se, da se preveč ne razburjate, ko boste na svoj e-poštni naslov prejemali sporočila z vsebino, kot je „ste tako super, a smo izbrali druge kandidate“. In tu imam za vas nasvet:

Kako priti na prakso v Google

Tekmovanje na Hackerrank/TripleByte Quiz

Če je vaše življenjepis všeč kadroviku, boste v naslednjih 1-2 tednih prejeli sporočilo z novim nalogo. Verjetno vas bodo povabili, da se udeležite tekmovanja na Hackerranku, kjer boste morali v določenem času rešiti algoritmične naloge, ali quiz na TripleByte, kjer boste odgovarjali na različna vprašanja, povezana z algoritmi, razvojem programske opreme in delovanjem nizkonivojskih sistemov. Ta faza služi kot začetni filter v postopku izbire kandidatov.

Skrining intervju

Če boste uspešno prestali to preizkušnjo, vas čaka skrinigstveno intervju, na katerem se boste pogovarjali s kadrovikom o svojih interesih in projektih, ki jih podjetje ponuja praktikantom. Če boste pokazali zanimanje, in če bo vaše prejšnje izkušnje ustrezalo pričakovanjem podjetja, boste dobili zeleno luč. Po mojem mnenju je to najbolj nepredvidljiv korak v celotnem postopku, ki je močno odvisen od kadrovika.

Če ste uspešno opravili ta tri preizkušnje, je večinski del naključja že za vami. Preostala so tehnična intervjuja, ki so bolj odvisna od vas, kar pomeni, da lahko bolj vplivate na njihov izid. In to je dobro!

Tehnični intervjuji

Nato sledijo tehnični intervjuji, ki se običajno izvajajo preko Skypa ali Hangouts. Včasih pa se pojavijo bolj eksotične storitve, ki zahtevajo namestitev dodatne programske opreme. Zato se vnaprej prepričajte, da na vašem računalniku vse deluje.

Format tehničnih intervjujev se močno razlikuje glede na pozicijo, za katero se prijavljate. Če gre za pozicijo Software Engineering Intern, boste verjetno dobili nekaj algoritmičnih nalog, katerih reševanje bo potrebno podati v kakšnem spletnem urejevalniku kode, na primer, coderpad.io. Lahko pa vas tudi vprašajo o objektno usmerjenem oblikovanju, da vidijo, kako dobro obvladate načrtovanje programske opreme. Na primer, lahko vas prosijo, da oblikujete preprost spletni trgovini. Vendar pa se mi do sedaj še ni zgodilo, da bi naletel na takšno nalogo, s katero bi se resnično dalo presoditi o tej veščini. Na koncu intervjuja vam bodo zagotovo omogočili, da postavite vprašanja. Priporočam, da to resno jemljete, saj lahko s pravimi vprašanji pokažete svoje zanimanje za projekt in pokažete svojo usposobljenost na tem področju. Običajno vnaprej pripravim seznam potencialnih vprašanj:

  • Kako je organizirano delo na projektu?
  • Katero zahtevno nalogo ste se nedavno poskušali rešiti?
  • Kakšen je prispevek razvijalca k končnemu produktu?
  • Zakaj ste se odločili, da boste delali v tej družbi?

Ne vedno vas intervjuja oseba, s katero boste kasneje delali. Zato vam lahko zadnja vprašanja dajo vpogled v to, kar se v podjetju na splošno dogaja. Zame je na primer pomembno, da imam vpliv na končni izdelek.

Če uspešno opravite prvi intervju, vam bodo ponudili drugega. Ta se bo razlikoval po intervjuvajocem in, seveda, nalogah. Format bo verjetno ostal enak. Po opravljenem drugem intervjuju vas lahko povabijo tudi na tretjega.

Onsite intervju

Če do tega trenutka niste bili zavrnjeni, vas čaka on-site intervju, ko kandidata povabijo na razgovor v pisarno podjetja. Običajno se ta sestavlja iz več tehničnih intervjujev in enega vedenjskega. Med vedenjskim intervjujem se pogovarjate z managerjem o vaših projektih, o tem, kakšne odločitve ste sprejemali v različnih situacijah, in podobno. Intervjuvalec torej poskuša bolje razumeti vašo osebnost in podrobneje raziskati vaše izkušnje. Nekatera podjetja, ki izvedejo 3-4 tehnične razgovore, namesto on-site intervjuja ponujajo možnost, da se le en vedenjski intervju izvede na daljavo.

Sedaj ostane le še čakati na odgovor rekruterja. Če je vse potekalo gladko, boste prejeli dolgo pričakovano ponudbo. Če ponudbe ne bo — ne obupajte. Podjetja redno zavračajo dobre kandidate. Poskusite se ponovno prijaviti na prakso naslednje leto.

Koding intervju

Počakajte… Še nismo opravili nobenih intervjujev. Šele spoznali smo, kako izgleda celoten postopek, in zdaj se moramo dobro pripraviti na razgovore, da ne zamudimo priložnosti, da poleti preživimo prijetno in koristno.

Obstajajo viri, kot so Codeforces, Topcoder in Hackerrank, ki ga že omenjam. Na teh platformah lahko najdete veliko število algoritmičnih nalog, pa tudi pošljete rešitve na avtomatsko preverjanje. Vse to je super, vendar mi bolj spominja na streljanje z mitraljezom na vrabce. Mnoge naloge na teh virih so zasnovane za dolgo obdobje reševanja, zahtevajo znanje naprednih algoritmov in struktur podatkov, medtem ko naloge na intervjujih običajno niso tako zahtevne in so zasnovane za 5-20 minut. Zato nam v našem primeru bolj ustreza vir, kot je LeetCode, ki je bil ustvarjen kot orodje za pripravo na tehnične razgovore. Če rešite 100-200 nalog različnih težavnosti, boste z veliko verjetnostjo med intervjujem imeli malo težav. Med dostojnimi je še Facebook Code Lab, kjer si lahko izberete dolžino seje, na primer 60 minut, in sistem vam priskrbi niz nalog, katerih reševanje traja povprečno največ ene ure.

Še veliko ljudi svetuje, da preberete knjigo „Cracking the Coding Interview». Jaz sem le izbirčno prebral nekatere njene dele. Vendar pa je treba omeniti, da sem v svojih šolskih letih reševal veliko algoritmičnih nalog. Tisti, ki nimajo take izkušnje, bi morali to knjigo vsaj prelistati.

Prav tako, če ste imeli v življenju malo tehničnih razgovorov v tujih podjetjih, je priporočljivo opraviti nekaj poskusnih. Ampak več kot jih boste imeli, tem bolje. To vam bo pomagalo, da se bolj samozavestno počutite med intervjujem in manj nervozno. Poskusne razgovore lahko organizirate na Pramp.

Obnašanja med razgovori

Kot sem že omenil, med razgovorom za obnašanje intervjuvalec poskuša bolj podrobno spoznati vaše izkušnje in razumeti vašo osebnost. Kaj pa, če ste odlični razvijalec, a niste sposobni delati v skupini? Bojim se, da mnogi tega ne bodo sprejeli. Na primer, lahko vam zastavijo vprašanje: „Kje so vaše šibke točke?“ Poleg takšnih vprašanj boste prosili, da opisujete projekte, v katerih ste imeli ključno vlogo, težave, s katerimi ste se srečali, in njihova rešitev. Omeniti je treba, da vas na začetku tehničnih razgovorov lahko o tem tudi vprašajo. O tem, kako se pripraviti na take razgovore, je dobro napisano v enem od poglavij v „Cracking the Coding Interview“.

Google

Zdaj, ko je jasno, kako poteka proces izbire pripravnikov na splošno in kako se pripraviti na razgovore, je čas, da se pogovorimo o tem, kako to deluje v primeru Googla.

Seznam razpoložljivih pripravništev lahko najdete tukaj. Če načrtujete poletno pripravništvo, se je priporočljivo začeti prijavljati že septembra.

Razgovori

Tukaj postopek izgleda nekoliko nenavadno. Imeli boste screening intervju in dva tehnička. Če se na njih dobro pokažete, boste prešli v fazo iskanja projekta. Izpolniti boste morali precej dolg obrazec, v katerem boste navedli vse svoje trenutne veščine ter izrazili preference glede tematike projekta in lokacije, kjer želite opravljati pripravništvo.

Zelo je pomembno, da to anketo izpolnite dobro in s trudom! Potencialni gostitelji, ki iščejo ljudi za svoje projekte, pregledujejo razpoložljive pripravnike in organizirajo pogovore s tistimi kandidati, ki so jim najbolj zanimivi. Lahko filtrirajo študente glede na lokacijo, ključne besede, izpolnjene kriterije in jih razvrščajo po točkah iz razgovorov.

Med pogovorom intervjuvalec predstavi projekt, na katerem boste delali, hkrati pa izve o izkušnjah kandidata. To je odlična priložnost, da izveste, kako bo v resnici potekal proces dela, saj se pogovarjate z osebo, ki bo vaš gostitelj. Po razgovoru napišete e-pošto rekruterju z vašimi vtisi o projektu. Če vam je bil projekt všeč, vi pa tudi intervjuvalcu, vas čaka ponudba. V nasprotnem primeru boste čakali na nadaljnje klice, katerih je lahko 2-3-4 in morda še več, ali pa morda ne bo nobenega. Ugodno je vedeti, da čeprav ste dobro opravili razgovore, a vas v fazi iskanja projekta ni izbrala nobena ekipa (morda z vami sploh niso govorili), boste žal ostali brez ponudbe.

Amerika ali Evropa?

Poleg tega se boste morali odločiti, kje bo vaša praksa. Jaz sem imel izbiro med ZDA in EMEA. In tukaj je pomembno vedeti nekaj posebnosti. Na primer, zdi se, da je težje priti v ZDA. Prvič, morali boste opraviti dodatni test, ki traja 90 minut, kjer boste reševali algoritmične naloge, in še en 15-minutni vprašalnik, ki poskuša odkriti vašo osebnost. Drugič, iz mojih in izkušenj prijateljev je na stopnji iskanja ekipe vaše zanimanje manjše. Na primer, leta 2017 sem imel le en pogovor, po katerem je ekipa izbrala drugega kandidata in nisem prejel ponudbe. Medtem ko so imeli fantje, ki so se prijavili v Evropo, po 4-5 projektov. Leta 2018 so mi našli ekipo januarja, kar je dokaj pozno. Fanti so delali v New Yorku, njihov projekt mi je bil všeč in sem se strinjal.

Kot vidite, je z ZDA vse malo bolj zapleteno. Ampak želel sem priti tja bolj kot v Evropo. Poleg tega v ZDA tudi bolje plačajo.

Kako priti na prakso v Google

Kaj storiti potem?

Na koncu prakse imate dve možnosti:

  • Prejeti prakso za naslednje leto.
  • Opravljati dva tehnična razgovora, da pridobiš polno delovno mesto.

Ti dve možnosti sta na voljo, če si uspešno zaključil trenutni projekt. Če pa to ni tvoja prva praksa, ti lahko celo ponudijo polno delovno mesto brez razgovorov.

Zato se pojavi naslednja situacija, ki jo lahko opišemo z eno sliko:

Kako priti na prakso v Google

Ker je bila to moja prva praksa, sem se odločil opraviti dva tehnička razgovora, da pridobim polno delovno mesto. Na podlagi rezultatov mi je bila ponujena zaposlitvena ponudba in začeli so iskati ekipo, vendar sem se odločil, da to možnost zavrnem, saj sem se odločil dokončati magisterij. Google verjetno ne bo nikamor šel v 2-3 letih.

Zaključek

Prijatelji, upam, da sem jasno in razumljivo opisal pot od študenta do praktikanta, (in potem nazaj…), in da bo ta material našel svojega bralca, kateremu bo v pomoč. Kot vidite, to ni tako težko, kot se morda zdi, potrebno je le premagati svojo lenobo, strahove in začeti poskušati!

P.S. Tukaj imam kanal na Telegramu, kjer lahko pokukate.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster