Hvorfor jeg studerede på fuld tid i 8 måneder til et Google-interview

Det er sandt. Jeg har brugt tusinder af timer på at læse bøger, skrive kode og se computervidenskabelige foredrag, alt sammen for at forberede mig på Googles softwareingeniørinterview.

Hvis du gerne vil forberede dig til et Google-interview, her er min studieplan:

jwasham / google-interview-universitet

google-interview-universitet - En komplet daglig plan for at studere til at blive Google-softwareingeniør. github.com

Hvordan jeg kom her

Jeg begyndte at programmere i mellemskolen, men da det var tid til college, fulgte jeg en grad i økonomi. Min begrundelse var, at der ville være for mange programmører, der søgte job, da jeg blev uddannet. Dreng, jeg tog fejl.

Senere sluttede jeg mig til hæren for at blive programmør, men rekruttereren talte mig til en militær efterretningsposition, og jeg tilbragte de næste to år på at studere det koreanske sprog. Jeg tjente i Sydkorea i 2 år bagefter.

Før jeg forlod hæren, forsøgte jeg at komme tilbage til programmering og blev overrasket over vanskeligheden. Jeg havde lært BASIC i mellemskolen og fortsatte med at programmere det gennem gymnasiet. Men jeg genstartede mine programmeringsstudier med C ++, og springet var for stort. Jeg kunne bare ikke forstå det.

Jeg nød dog at lave websteder, men jeg brugte software med en Word-lignende grænseflade, som jeg brugte til at udgive mine hjemmesider. Jeg vidste ikke, hvordan man opretter websteder fra bunden.

Efter hæren besluttede jeg at blive i Korea i et år og undervise i engelsk. Jeg brugte mine nætter og weekender til at studere webprogrammering ved hjælp af Perl, HTML, CSS (som på det tidspunkt var nyt), JavaScript og SQL.

Efter et års intensiv undersøgelse landede jeg et job i Seattle-området, og jeg har været her lige siden.

Jeg har været webudvikler nu i 15 år. Jeg har startet 3 virksomheder, hvoraf to stadig kører og genererer indtægter. Jeg har arbejdet i store og små virksomheder, hjulpet startups med at starte og vokse og rekrutteret og administreret teams. Jeg har været produktchef, administrerende direktør, designer og marketingmedarbejder.

Jeg har haft en succesrig karriere og lært meget undervejs. Men jeg er ikke færdig endnu.

Søger en karriereændring

Husker du den del, hvor jeg ikke fik en datalogisk grad? Det har gjort en forskel.

For et par år siden troede jeg, at jeg kunne blive ansat hvor som helst. Jeg troede, jeg var varme ting: den undvigende full-stack webudvikler. Men under min jobsøgning i 2013 indså jeg, at mine færdigheder manglede. Jeg havde brugt så meget tid på at jagte dollars ved at køre startups i min fritid, at jeg havde ladet mine færdigheder atrofiere. Jeg havde ikke holdt trit med teknologien.

I årevis havde jeg lært lige nok til at klare mig. Jeg havde et bredt færdighedssæt, men var ikke ekspert i noget.

Misforstå mig ikke, jeg kunne stadig blive ansat, men ikke inden for de teknologier eller områder, jeg ville arbejde i. Jeg kunne blive ansat til områder, hvor tech stack var noget forældet, som jeg. Der er store penge derinde, men jeg så ikke spændende udsigter.

Realiseringen nåede sit højdepunkt sidste år på en karriereudstilling. Jeg var interesseret i måske at arbejde for et af de lokale virksomheder, der var opstartslaboratorier drevet af venturekapitalfirmaer. Det faktum, at jeg manglede en computervidenskabelig grad og de færdigheder og viden, der ledsager en sådan grad, betød imidlertid, at jeg ikke havde en chance.

Jeg arbejdede på fuld tid med mine virksomheder på det tidspunkt og er stadig i dag.

I begyndelsen af ​​2016 besluttede jeg, at det var tid til at foretage en karriereændring fra webudvikler til softwareingeniør. Jeg bliver nødt til at studere hårdt og øve for at komprimere en datalogisk grad til et par måneder, men når jeg gjorde det, kunne jeg starte en ny karriere.

Du kan muligvis ikke se webudvikling og softwareteknik som forskellige positioner. Begge involverer programmering og håndværk, men softwareteknik tilføjer det viden om datastrukturer og algoritmer, kompilerede sprog, hukommelsesovervejelser og forståelse af indvirkningen af ​​kodning og arkitekturbeslutninger på maskinerne, hvor de bor.

Store virksomheder, der ansætter stillinger til softwareteknik, forventer, at kandidater har denne viden.

Jeg nåede ud til en bekendt, der arbejder hos Google og stillede ham spørgsmål om hans oplevelse i virksomheden. Jeg havde læst hvordan Google fungerer og var allerede ret fortrolig med Google.

Via en anden kontakt modtog jeg en kopi af Googles coachingnoter, der gives til interviewkandidater. Dette blev grundlaget for min studieplan.

Google er et ret fantastisk sted at arbejde, men før jeg engang vidste det, var Google mit mål.

Hvorfor Google?

Google sætter en meget høj barriere for ansættelse. De vil kun ansætte de bedste. Så hvis jeg sætter mine seværdigheder højt (bliver ansat hos Google), vil jeg stadig være ganske ansættelig andre steder, selvom jeg ikke er valgt.

Jo mere jeg lærer om Google, jo mere vil jeg arbejde der.

Kort sagt er Google et firma, der ansætter smarte, kreative mennesker og behandler dem godt. Google belønner fortjeneste, opmuntrer store ideer og giver medarbejderne friheden til at træffe gode beslutninger for brugeren.

Ansættelsesprocessen er kalibreret for at bringe smarte, lidenskabelige mennesker ind. Google har finpudset rekrutterings- og interviewprocessen gennem årene. Hjernespørgsmålene er for længst væk. I dag vælges kandidater baseret på kodningsevne, teknisk viden og Googleyness. Der sker meget i det ene ord.

Ledelsen er anderledes. Ledere mikrostyrer ikke. De stoler på ingeniører til at træffe de rigtige beslutninger. Tillid til medarbejdere ændrer rollen som ledere hos Google fra det, de fleste forestiller sig, når de tænker på ledelse. Derudover kan ledere ikke ensidigt, ansætte, fyre eller promovere. Mange af de vigtige ledelsesbeslutninger, der kunne opfattes som kontorpolitik, håndteres af et udvalg for at fjerne denne fare.

Googles medarbejder (HR) har lært, hvad der fungerer over tid, og de bruger data og medarbejderfeedback til at forbedre evalueringssystemer, ansættelsesprocessen, forfremmelser, kompensation, fordele og mere. Læs arbejdsregler! af Laszlo Bock (SVP, People Operations) for mere.

Ja, fordelene er fantastiske. Jeg gik på en rundtur på Google-kontoret i Kirkland, WA, og det overgik mine forventninger. Og mine forventninger var allerede høje.

Google Interview University

Husk de coachingnotater, jeg fik, der fortalte mig, hvad jeg skulle studere? Listen over emner syntes håndterbar, selvom jeg ikke vidste noget på listen.

Jeg forvandlede emnerne på noterne til en oversigt og begyndte at udfylde emnerne med YouTube-videoer af foredrag fra MIT og UC Berkeley. En video på sammenkædede lister ét sted, en video om køer i et andet. Listen begyndte at vokse.

Jeg offentliggjorde listen på Github, fordi min Github-konto var temmelig tom. Da al den kode, jeg skrev til mine virksomheder og arbejde, var privat, fik min Github-konto det til at ligne, at jeg slet ikke kodede. Jeg havde brug for at opbygge en portefølje. Jeg kaldte oprindeligt projektet "Project 9894". Google blev lanceret den 4. september 1998. Deraf navnet. Jeg omdøbte det senere til "Google Interview University".

Over tid tilføjede jeg nogle valgfrie emner, som jeg opdagede undervejs.

Jeg var ret forbløffet over, at jeg var kommet så langt i min karriere uden engang at vide, hvordan en CPU behandlede et program, hvordan hukommelse fungerede eller noget af det. Jeg havde kendt ”lige nok” til at blive en succes.

Mit lille Github-projekt begyndte at få et par stjerner, og jeg offentliggjorde et blogindlæg, der fejrede 20 stjerner.

En morgen vågnede jeg og fandt ud af, at den var vokset til 120 stjerner. En berømt person havde tweetet om det i løbet af natten, og det førte til, at det endte på Githubs daglige trendrapport. Jeg var nr. 1 i trend med Github i et par dage.

Mange venlige mennesker rakte ud for at takke og opmuntre mig. Det viser sig, at der er tusindvis af mennesker, der ikke kun vil arbejde hos Google, men som ønsker at arbejde som softwareingeniør, og denne liste var bare den opgaveliste, de havde brug for.

Det er nu på over 21.000 stjerner.

Jeg kan stadig ikke tro det.

Hvad hvis jeg ikke får jobbet?

Det vil ikke være verdens ende.

Jeg har lagt tid og dedikation i mine studier med det mål at blive ansat som Google-softwareingeniør, men selvom jeg fejler, vil jeg stadig være bevæbnet med de nødvendige færdigheder og viden til at arbejde som softwareingeniør hos ethvert firma .

Uanset hvor jeg ender, går jeg ind som en softwareingeniør på niveau. Jeg går ikke ind med 15 års erfaring med software engineering, fordi jeg simpelthen ikke har det. Når det kommer til disse ting, svarer jeg til en frisk CS-grad.

Men jeg har også begejstringen for en ny grad. Dette er en ny verden for mig. Jeg er lige begyndt. Jeg er ikke bange for at lave fejl. Jeg ved, at jeg vil. Jeg vil også lære alt, hvad jeg kan, og være en fremragende tilføjelse til ethvert hold.

Studer ikke så meget som jeg gjorde

Ja, jeg tog 8 måneder. Men jeg kunne have forkortet processen. Som enhver opstart med et stort mål laver du fejl og gør ting, der spilder tid. Der er mange ting, jeg ønsker, at jeg går tilbage og gør anderledes.

Jeg studerede emner, som jeg ikke havde brug for, nogle fordi jeg troede, jeg ville have brug for dem til interviewet, og andre fordi jeg ønskede at have den viden til rådighed, da jeg begyndte at arbejde. Jeg ville ikke være en byrde for det hold, jeg er tildelt. Det viser sig, at jeg simpelthen overforberedte mig.

Jeg brugte 3 uger på at læse en bog på 1.000 sider på C ++. Jeg kan ikke huske 1.000 sider værd, men jeg ved en god smule om C ++ nu. Som det viser sig, bruger jeg Python til interviewet, ikke C ++. Jeg havde antaget, at jeg havde brug for C ++, C eller Java, men jeg tog fejl. Det er godt at spørge, ikke antage.

Jeg læste langt flere bøger, end jeg havde brug for. Der er kun 3 eller 4 bøger, jeg skulle have læst.

Jeg har et kodekatalog med snesevis af algoritmer, som jeg gennemgår, hvoraf de fleste ikke ville forvente i et interview. Du behøver ikke gøre det.

Jeg så mange timers YouTube-videoer, men kunne have set langt mindre og spredt emner over tid.

Jeg burde have stoppet med at læse bøger og se videoer tidligere og startet med kodningsproblemer hurtigere. Jeg ville have været i stand til at bruge mere tid på at anvende de emner, jeg lærte.

Med mellemrum gentagelse er nøglen til huskningen. Når du har lært noget, skal du gennemgå det igen senere og igen endnu senere. Ved hver gentagelse styrker du din læring. At bruge timer og timer ad gangen på prioriterede køer gør dig ikke til en ekspert. Du bliver ekspert ved at revidere og gennemgå over tid. Hvis du gør det, kommer du til det punkt, hvor du ikke kan glemme detaljer.

For at hjælpe med at gennemgå lavede jeg 1.792 flashcards (digitale flashcards). Dette er alt for mange. Jeg gennemgår dem på min telefon eller tablet, når jeg får et ekstra øjeblik (f.eks. Ved julehandel). Flash-kort og gentagne mellemrum går hånd i hånd. Når jeg først får svar på et flashkort til højre, markerer jeg det ikke som kendt. Jeg holder det i dækket, og når jeg først har set det og besvaret det rigtigt mange gange, så markerer jeg det som kendt.

Min følelse af frygt ("Hvad hvis de stiller mig et spørgsmål om rød-sorte træer?") Fik mig til at studere langt flere emner, end jeg havde brug for.

Men jeg ville ikke bare forberede mig til interviewet, jeg ville forberede mig på en karriere hos Google og løse store problemer. Det betyder at kende algoritmer, der sparer computerressourcer for tid, plads og I / O.

Jeg behøver muligvis aldrig at kende en maksimal flowalgoritme (Ford-Fulkerson), men det er rart at vide, at jeg har det værktøj til rådighed, hvis situationen opstår (uden at huske implementeringen) og kan genkende dens anvendelse på et problemrum.

Konklusion

Tidligt ønskede jeg, at jeg kunne springe over al denne læring og bare skynde mig og blive ansat, så jeg i stedet kunne bruge min tid på at lære sprogene og værktøjerne til det team, jeg tilmelder mig. Men undervejs indså jeg, hvor vigtig denne viden er, og selvom det meste muligvis ikke kan anvendes på daglig basis, er jeg glad for, at jeg gør en indsats. Jeg har en ny forståelse af computingens historie, de største i marken, datastrukturer og algoritmer (og hvordan de supplerer hinanden), og hvordan computersystemer fungerer på lavt niveau.

Jeg sender snart min ansøgning. Det har været en lang rejse at komme til dette punkt - næsten et helt år. Det begyndte tilbage i januar, men jeg kunne ikke forpligte mig til fuldtidsstudier indtil april.

Jeg er så forberedt som jeg kan være. Jeg kan ikke fortsætte med at studere og udsætte ansøgningen for evigt. På et tidspunkt er jeg nødt til at tage springet.

Jeg ser en lys fremtid forude.

Tak fordi du tog dig tid til at læse min historie.

Artiklen findes også på arabisk, vietnamesisk og koreansk.

Opdatering: 10. januar 2017

Jeg blev ikke ansat. Læs videre . Tak til alle for din fantastiske, overvældende support.

Opdatering: 6. marts 2017

Historien har en lykkelig afslutning! Jeg er ansat af Amazon til at arbejde som softwareudviklingsingeniør på Amazon Web Services!

Hvor finder jeg mig

Jeg blogger over ved Startup Next Door.

Google Interview University på Github:

jwasham / google-interview-universitet

google-interview-universitet - En komplet daglig plan for at studere til at blive Google-softwareingeniør. github.com