Zašto sam 8 mjeseci redovito studirao za Googleov intervju

To je istina. Proveo sam tisuće sati čitajući knjige, pišući kod i gledajući predavanja iz informatike, sve kako bih se pripremio za razgovor s Googleovim softverskim inženjerom.

Ako se želite pripremiti za Googleov intervju, evo mog plana učenja:

jwasham / google-interview-university

google-interview-university - cjelovit dnevni plan za studij za Googleovog softverskog inženjera. github.com

Kako sam dospio ovdje

Programirati sam počeo u srednjoj školi, ali kad je došlo vrijeme za fakultet, diplomirao sam ekonomiju. Moje je obrazloženje bilo da će biti previše programera koji će tražiti posao dok ne diplomiram. Čovječe, pogriješio sam.

Kasnije sam se pridružio vojsci da bih postao programer, no regrut me nagovorio na vojno obavještajno mjesto i proveo sam sljedeće dvije godine proučavajući korejski jezik. Nakon toga dvije godine služio sam u Južnoj Koreji.

Prije nego što sam napustio vojsku, pokušao sam se vratiti u programiranje i iznenadio sam se poteškoćama. BASIC sam naučio u srednjoj školi i nastavio sam ga programirati kroz srednju školu. No, ponovno sam započeo studije programiranja sa C ++, a skok je bio prevelik. Jednostavno nisam mogao shvatiti.

Ipak sam uživao izrađivati ​​web stranice, ali koristio sam softver s Wordovim sučeljem kojim sam objavljivao svoje web stranice. Nisam znao izrađivati ​​web stranice od nule.

Nakon vojske odlučio sam ostati u Koreji godinu dana i predavati engleski. Noći i vikende koristio sam za učenje web programiranja, koristeći Perl, HTML, CSS (koji je u to vrijeme bio nov), JavaScript i SQL.

Nakon godinu dana intenzivnog studija, zaposlio sam se u području Seattla i od tada sam ovdje.

Sad sam web programer već 15 godina. Osnovao sam 3 tvrtke, od kojih dvije još uvijek posluju i donose prihod. Radio sam u velikim i malim tvrtkama, pomagao pokretanje i rast startupa te regrutirao i vodio timove. Bio sam menadžer proizvoda, izvršni direktor, dizajner i prodavač.

Imao sam uspješnu karijeru i usput puno naučio. Ali još nisam gotov.

Traženje promjene u karijeri

Sjećate se dijela u kojem nisam stekao zvanje informatike? To je učinilo razliku.

Prije nekoliko godina mislio sam da se mogu zaposliti bilo gdje. Mislio sam da sam vruća stvar: neuhvatljivi web programer s punim slogovima. No tijekom traženja posla 2013. shvatio sam da nedostaju moje vještine. Toliko sam vremena proveo u jurnjavi za dolarima pokrećući startupove u slobodno vrijeme, da sam pustio da moje vještine atrofiraju. Nisam išao u korak s tehnologijom.

Godinama sam naučio tek toliko da se snađem. Imao sam širok spektar vještina, ali ni u čemu nisam bio stručnjak.

Nemojte me pogrešno shvatiti, još uvijek bih se mogao zaposliti, ali ne u tehnologijama ili područjima u kojima sam želio raditi. Mogao bih se zaposliti u područjima u kojima je tehnološki sklad bio pomalo zastario, poput mene. Unutra je velik novac, ali nisam vidio uzbudljive izglede.

Realizacija je svoj vrhunac dosegla prošle godine na sajmu karijere. Zanimalo me možda da radim za jednu od lokalnih tvrtki koje su bile startup laboratoriji koje vode tvrtke s rizičnim kapitalom. Međutim, činjenica da mi je nedostajala diploma iz informatike te vještine i znanja koja prate takvu diplomu, značila je da nisam imao šanse.

U to sam vrijeme radio i stalno radim na svojim poslovima.

Početkom 2016. godine zaključio sam da je vrijeme da promijenim karijeru od web programera do softverskog inženjera. Morao bih marljivo učiti i vježbati kako bih komprimirao stupanj informatike u nekoliko mjeseci, ali kad bih to učinio, mogao bih započeti novu karijeru.

Web razvoj i softverski inženjering možda nećete smatrati različitim položajima. Obje uključuju programiranje i izradu, ali softverski inženjering dodaje im znanje o strukturi podataka i algoritmima, kompiliranim jezicima, razmatranjima memorije i razumijevanju utjecaja odluka o kodiranju i arhitekturi na strojeve u kojima se nalaze.

Velike tvrtke koje zapošljavaju na radnim mjestima softverskog inženjerstva očekuju da kandidati imaju to znanje.

Obratio sam se poznaniku koji radi u Googleu i postavio mu pitanja o svom iskustvu u tvrtki. Čitao sam kako Google funkcionira i već sam bio prilično upoznat s Googleom.

Putem drugog kontakta dobio sam kopiju Googleovih napomena o podučavanju koje se daju za intervju s kandidatima. To je postalo osnova mog studijskog plana.

Google je prilično strašno mjesto za rad, ali prije nego što sam to i znao, Google mi je bio cilj.

Zašto Google?

Google postavlja vrlo visoku traku za zapošljavanje. Žele zaposliti samo najbolje. Dakle, ako postavim svoje ciljeve visoko (zapošljavanje u Googleu), i dalje ću biti prilično zaposlen drugdje, čak i ako ne budem odabran.

Što više učim o Googleu, to više želim raditi tamo.

Ukratko, Google je tvrtka koja zapošljava pametne, kreativne ljude i dobro se ophodi prema njima. Google nagrađuje zasluge, potiče velike ideje i daje zaposlenicima slobodu donošenja dobrih odluka za korisnika.

Proces zapošljavanja kalibriran je tako da dovodi pametne, strastvene ljude. Google je tijekom godina usavršavao postupak zapošljavanja i razgovora. Pitanja o mozgalicama odavno su prošla. Danas se kandidati biraju na temelju sposobnosti kodiranja, tehničkog znanja i Googleynessa. U toj se jednoj riječi puno događa.

Upravljanje je različito. Menadžeri ne upravljaju mikro. Oni vjeruju inženjerima da će donijeti ispravne odluke. Vjerovanje zaposlenicima mijenja ulogu menadžera u Googleu od onoga što većina ljudi zamišlja kad razmišlja o upravljanju. Uz to, menadžeri ne mogu jednostrano, unajmiti, otpustiti ili promovirati. Odbor za uklanjanje te opasnosti rješava mnoge važne odluke uprave koje bi se mogle shvatiti kao uredska politika.

Googleova operacija s ljudima (HR) s vremenom je naučila što funkcionira i koriste podatke i povratne informacije zaposlenika za poboljšanje sustava ocjenjivanja, procesa zapošljavanja, napredovanja, naknada, pogodnosti i još mnogo toga. Pročitajte Pravila rada! Laszlo Bock (SVP, People Operations) za više.

Da, blagodati su nevjerojatne. Obišao sam Googleov ured u Kirklandu, WA, i nadmašio je moja očekivanja. A moja su očekivanja već bila velika.

Sveučilište Google Interview

Sjećate se trenerskih napomena koje sam dobio govoreći mi što da studiram? Popis tema djelovao je upravljivo, iako nisam znao ništa na popisu.

Teme u bilješkama pretvorio sam u konture i počeo ih popunjavati YouTube video zapisima predavanja s MIT-a i UC Berkeley. Video na povezanim popisima na jednom mjestu, video o redovima na drugom. Popis je počeo rasti.

Popis sam objavio na Githubu jer je moj Github račun bio prilično prazan. Budući da je sav kod koji sam napisao za svoju tvrtku i posao bio privatni, moj Github račun izgledao je kao da uopće nisam kodirao. Trebao sam izgraditi portfelj. Izvorno sam projekt nazvao "Projekt 9894". Google je pokrenut 4. rujna 1998. Otuda i naziv. Kasnije sam ga preimenovao u "Google Interview University".

S vremenom sam dodao neke neobavezne teme koje sam usput otkrio.

Bio sam poprilično zaprepašten što sam dosad stigao u svojoj karijeri, a da uopće nisam znao kako CPU obrađuje program, kako memorija radi ili bilo što drugo. Znao sam "taman toliko" da postignem uspjeh.

Moj mali Github projekt počeo je dobivati ​​nekoliko zvjezdica, a objavio sam post na blogu koji slavi 20 zvijezda.

Jednog sam se jutra probudio i ustanovio da je narastao na 120 zvijezda. Netko poznati o tome je tijekom noći objavio tweet, što je dovelo do toga da je završio u dnevnom izvještaju Github. Nekoliko dana bio sam u trendu 1 na Githubu.

Mnogi ljubazni ljudi posegnuli su za mnom da me zahvale i ohrabre. Ispostavilo se da postoje tisuće ljudi koji žele ne samo raditi u Googleu, već žele raditi kao softverski inženjer, a ovaj je popis bio samo popis obveza koji su im trebali.

Sada broji preko 21 000 zvijezda.

Još uvijek ne mogu vjerovati.

Što ako ne dobijem posao?

To neće biti kraj svijeta.

Uložio sam vrijeme i predanost u svoje studije kako bih se zaposlio kao Googleov softverski inženjer, ali čak i ako ne uspijem, i dalje ću biti naoružan vještinama i znanjem potrebnim za rad softverskog inženjera u bilo kojoj tvrtki .

Gdje god završim, idem kao početni softverski inženjer. Ne ulazim s 15 godina iskustva u softverskom inženjerstvu, jer ga jednostavno nemam. Što se tiče ovih stvari, ja sam ekvivalent svježem CS-u.

Ali i ja imam entuzijazam novog grada. Ovo je novi svijet za mene. Tek počinjem. Ne bojim se pogriješiti. Znam da hoću. Također želim naučiti sve što mogu i biti izvrstan dodatak bilo kojem timu.

Ne proučavajte koliko sam i ja

Da, trebalo mi je 8 mjeseci. Ali mogao sam skratiti postupak. Kao i svaki startup s velikim ciljem, i vi griješite i radite stvari koje troše vrijeme. Mnogo je stvari koje bih volio da se vratim i učinim drugačije.

Proučavao sam teme koje nisam trebao, neke zato što sam mislio da će mi trebati za intervju, a neke zato što sam želio imati znanje pri ruci kad sam počeo raditi. Nisam želio biti teret momčadi u koju sam raspoređen. Ispada da sam se jednostavno previše pripremio.

Proveo sam 3 tjedna čitajući knjigu od 1000 stranica na C ++. Ne sjećam se vrijednih 1.000 stranica, ali sada dobro znam o C ++-u. Ispostavilo se da za razgovor koristim Python, a ne C ++. Pretpostavio sam da mi treba C ++, C ili Java, ali nisam bio u pravu. Dobro je pitati, a ne pretpostavljati.

Pročitao sam puno više knjiga nego što sam trebao. Postoje samo 3 ili 4 knjige koje sam trebao pročitati.

Imam katalog kodova s ​​desecima algoritama koje pregledam, od kojih većinu ne bih očekivao u intervjuu. To ne trebate učiniti.

Gledao sam mnogo sati YouTube videa, ali mogao sam gledati i puno manje i širiti teme s vremenom.

Trebao sam ranije prestati čitati knjige i gledati videozapise i prije početi s problemima kodiranja. Mogao bih potrošiti više vremena primjenjujući teme koje sam naučio.

Razmaknuto ponavljanje ključ je pamćenja. Jednom kad nešto naučite, ponovno pregledajte kasnije, pa opet i kasnije. Pri svakom ponavljanju pojačavate svoje učenje. Trošenje sati i sati odjednom na prioritetnim redovima neće vas učiniti stručnjakom. Stručnjak postajete ponovnim posjetom i pregledom s vremenom. Ako to učinite, doći ćete do točke kada ne možete zaboraviti detalje.

Da bih pomogao u pregledu, izradio sam 1.792 kartice (digitalne kartice). Ovo je previše. Pregledavam ih na telefonu ili tabletu kad god imam slobodan trenutak (na primjer tijekom božićne kupovine). Flash kartice i razmaknuto ponavljanje idu ruku pod ruku. Kad jednom dobijem odgovor na flash kartici, ne označavam ga kao poznat. Držim ga u palubi i jednom kad sam ga vidio i pravilno odgovorio puno puta, tada ga označavam kao poznatog.

Moj osjećaj straha („Što ako me pitaju o crveno-crnim stablima?“) Naveo me je da proučim mnogo više tema nego što sam trebao.

Ali nisam se želio samo pripremiti za intervju, već sam se želio pripremiti za karijeru u Googleu, rješavajući velike probleme. To znači poznavanje algoritama koji će uštedjeti računalne resurse vremena, prostora i I / O-a.

Možda nikad neću trebati znati algoritam maksimalnog protoka (Ford-Fulkerson), ali lijepo je znati da imam taj alat na raspolaganju ako se pojavi situacija (bez pamćenja provedbe) i mogu prepoznati njegovu primjenu na problematični prostor.

Zaključak

Rano sam poželio da mogu preskočiti sve ovo učenje i samo požuriti i primiti se kako bih umjesto toga mogao provesti vrijeme učeći jezike i alate za tim kojem se pridružim. Ali usput sam shvatio koliko je to znanje važno, i premda većina toga možda nije svakodnevno primjenjivo, drago mi je što sam se potrudio. Novo razumijem povijest računalstva, velikane na terenu, strukture podataka i algoritme (i to kako se međusobno nadopunjuju) i kako računalni sustavi rade na niskoj razini.

Uskoro ću predati svoju prijavu. Dug je put bio do ove točke - gotovo cijela godina. Počelo je još u siječnju, ali nisam se mogao obvezati na redoviti studij sve do travnja.

Otprilike sam pripremljen koliko mogu biti. Ne mogu zauvijek nastaviti proučavati i odgađati prijavu. U nekom trenutku moram napraviti iskorak.

Pred sobom vidim svijetlu budućnost.

Hvala što ste odvojili vrijeme za čitanje moje priče.

Članak je dostupan i na arapskom, vijetnamskom i korejskom jeziku.

Ažuriranje: 10. siječnja 2017

Nisam se zaposlio. Čitajte dalje . Hvala svima na nevjerojatnoj, neodoljivoj podršci.

Ažuriranje: 6. ožujka 2017

Priča ima sretan kraj! Amazon me angažirao da radim kao inženjer za razvoj softvera na Amazon Web Services!

Gdje me naći

Blogujem na Startup Next Door.

Sveučilište Google Intervju na Githubu:

jwasham / google-interview-university

google-interview-university - cjelovit dnevni plan za studij za Googleovog softverskog inženjera. github.com