Proč jsem se 8 měsíců učil na plný úvazek kvůli pohovoru do Googlu

od Googley as Heck

Moje opotřebovaná tabule ozdobená Dijkstrovým algoritmem nejkratších cest s jedním zdrojem

Je to tak. Strávil jsem tisíce hodin čtením knih, psaním kódu a sledováním přednášek z informatiky, to vše kvůli přípravě na pohovor na pozici softwarového inženýra ve společnosti Google.

Pokud se chcete připravit na pohovor u Googlu, tady je můj studijní plán:

jwasham/google-interview-university
google-interview-university – Kompletní denní studijní plán, jak se stát softwarovým inženýrem Googlu.github.com

Jak jsem se sem dostal

S programováním jsem začal už na střední škole, ale když přišel čas na vysokou, pokračoval jsem v studiu ekonomie. Odůvodňoval jsem to tím, že až dostuduji, bude už příliš mnoho programátorů, kteří budou hledat práci. Páni, mýlil jsem se.

Později jsem vstoupil do armády, abych se stal programátorem, ale náborář mě přemluvil na pozici vojenského zpravodajce a já jsem následující dva roky strávil studiem korejštiny. Poté jsem dva roky sloužil v Jižní Koreji.

Před odchodem z armády jsem se pokusil vrátit k programování a byl jsem překvapen, jak je to obtížné. Na střední škole jsem se naučil BASIC a programoval jsem v něm i na střední škole. Znovu jsem však začal studovat programování v C++ a ten skok byl příliš velký. Prostě jsem to nedokázal pochopit.

Bavilo mě však vytvářet webové stránky, ale používal jsem software s rozhraním podobným Wordu, který jsem používal k publikování svých webových stránek. Neuměl jsem dělat webové stránky od nuly.

Po skončení armády jsem se rozhodl zůstat rok v Koreji a učit angličtinu. Noci a víkendy jsem využíval ke studiu programování webových stránek pomocí Perlu, HTML, CSS (což byla v té době novinka), JavaScriptu a SQL.

Po roce intenzivního studia jsem získal práci v oblasti Seattlu a od té doby jsem zde.

Práce z balkonu v krásném Bellevue, WA.

Jsem webovým vývojářem již 15 let. Založil jsem 3 společnosti, z nichž 2 stále fungují a generují příjmy. Pracoval jsem ve velkých i malých společnostech, pomáhal jsem startupům se startem a růstem a nabíral a řídil jsem týmy. Byl jsem produktovým manažerem, generálním ředitelem, designérem a marketérem.

Mám za sebou úspěšnou kariéru a během ní jsem se toho hodně naučil. Ale ještě jsem neskončil.

Hledám kariérní změnu

Pamatujete si tu část, kdy jsem nedostal diplom z informatiky? Změnilo se to.

Před několika lety jsem si myslel, že mě zaměstnají kdekoli. Myslel jsem si, že jsem sexy zboží: nepolapitelný full-stack webový vývojář. Ale během hledání práce v roce 2013 jsem si uvědomil, že mé dovednosti jsou nedostatečné. Tolik času jsem strávil honbou za dolary tím, že jsem ve volném čase provozoval startupy, že jsem nechal své dovednosti atrofovat. Nedržel jsem krok s technologiemi.

Po léta jsem se učil jen tolik, abych to zvládl. Měl jsem široký soubor dovedností, ale nebyl jsem odborník na nic.

Nechápejte mě špatně, stále jsem se mohl nechat zaměstnat, ale ne v technologiích nebo oblastech, ve kterých jsem chtěl pracovat. Mohl jsem se nechat zaměstnat v oblastech, kde byl technologický stack poněkud zastaralý, stejně jako já. Jsou tam velké peníze, ale neviděl jsem vzrušující perspektivy.

Toto uvědomění dosáhlo svého vrcholu loni na veletrhu kariéry. Zajímal jsem se o možnost pracovat pro jednu z místních firem, které byly startupovými laboratořemi provozovanými firmami rizikového kapitálu. Avšak skutečnost, že mi chyběl titul z informatiky a dovednosti a znalosti, které takový titul provázejí, znamenala, že jsem neměl šanci.

V té době jsem pracoval na plný úvazek na svých firmách a pracuji na nich dodnes.

Na začátku roku 2016 jsem se rozhodl, že je čas změnit kariéru z webového vývojáře na softwarového inženýra. Musel bych tvrdě studovat a trénovat, abych stlačil titul z informatiky do několika měsíců, ale jakmile bych to dokázal, mohl bych začít novou kariéru.

Vývoj webu a softwarové inženýrství možná nevnímáte jako rozdílné pozice. Obě zahrnují programování a řemeslnou zručnost, ale softwarové inženýrství k tomu přidává znalosti datových struktur a algoritmů, kompilovaných jazyků, úvah o paměti a pochopení dopadu rozhodnutí o kódování a architektuře na stroje, na kterých se nacházejí.

Velké společnosti, které přijímají zaměstnance na pozice softwarového inženýra, očekávají, že uchazeči budou mít tyto znalosti.

Oslovil jsem známého, který pracuje ve společnosti Google, a zeptal se ho na jeho zkušenosti v této společnosti. Četl jsem knihu Jak funguje Google a byl jsem s ní již docela dobře obeznámen.

Prostřednictvím dalšího kontaktu jsem získal kopii tréninkových poznámek společnosti Google, které jsou poskytovány kandidátům na pohovor. Ty se staly základem mého studijního plánu.

Google je docela úžasné místo pro práci, ale ještě předtím, než jsem to věděl, byl Google mým cílem.

Proč Google?

Google nastavuje velmi vysokou laťku pro přijímání zaměstnanců. Chce zaměstnávat jen ty nejlepší. Takže když si nastavím vysoké cíle (nechat se zaměstnat u Googlu), budu i v případě, že nebudu vybrán, docela dobře zaměstnatelný jinde.

Čím více se o Googlu dozvídám, tím více tam chci pracovat.

Krátce řečeno, Google je společnost, která zaměstnává chytré a kreativní lidi a dobře s nimi zachází. Google odměňuje zásluhy, podporuje velké nápady a dává zaměstnancům svobodu dělat dobrá rozhodnutí pro uživatele.

Přijímací proces je vyladěn tak, aby přivedl chytré a nadšené lidi. Společnost Google v průběhu let zdokonalila proces náboru a pohovorů. Otázky na potrápení mozku jsou už dávno pryč. Dnes jsou kandidáti vybíráni na základě schopností kódování, technických znalostí a googlovství. V tomto jediném slově se toho skrývá hodně.

Na výletě v roce 2015 jsem navštívil ústředí v Mountain View. To zaselo semínko.

Management je jiný. Manažeři neprovádějí mikromanagement. Důvěřují inženýrům, že dělají správná rozhodnutí. Důvěra v zaměstnance mění roli manažerů ve společnosti Google oproti tomu, co si většina lidí představí, když si představí management. Kromě toho manažeři nemohou jednostranně přijímat, propouštět ani povyšovat. Mnoho důležitých manažerských rozhodnutí, která by mohla být vnímána jako politikaření v kanceláři, řeší výbor, aby se toto nebezpečí odstranilo.

Personální oddělení (HR) společnosti Google se postupem času naučilo, co funguje, a využívá data a zpětnou vazbu od zaměstnanců ke zlepšení systémů hodnocení, procesu přijímání zaměstnanců, povyšování, odměňování, benefitů a dalších věcí. Více informací najdete v knize Work Rules! od Laszla Bocka (SVP, People Operations).

Ano, výhody jsou úžasné. Byl jsem na prohlídce kanceláře společnosti Google v Kirklandu ve státě Washington a předčila moje očekávání. A má očekávání byla už tak vysoká.

Google Interview University

Pamatujete si na koučovací poznámky, které jsem dostal a které mi říkaly, co si mám nastudovat? Seznam témat se mi zdál zvládnutelný, i když jsem nic ze seznamu neznal.

Témata z poznámek jsem si proměnil v osnovu a začal je doplňovat videi z přednášek z MIT a UC Berkeley na YouTube. Na jednom místě video o propojených seznamech, na jiném video o frontách. Seznam se začal rozrůstat.

Zveřejnil jsem seznam na Githubu, protože můj účet na Githubu byl dost prázdný. Protože veškerý kód, který jsem psal pro své podniky a práci, byl soukromý, můj účet na Githubu vypadal, jako bych vůbec nekódoval. Potřeboval jsem si vytvořit portfolio. Původně jsem projekt nazval „Projekt 9894“. Google byl spuštěn 4. září 1998. Proto ten název. Později jsem ho přejmenoval na „Univerzitu rozhovorů Google“.

Časem jsem přidal některá volitelná témata, která jsem objevil cestou.

Můj seznam letní četby. Trochu nad rámec.

Dost mě udivilo, že jsem se ve své kariéře dostal tak daleko, aniž bych věděl, jak procesor zpracovává program, jak funguje paměť nebo cokoli z toho. Věděl jsem „tak akorát“, abych byl úspěšný.

Můj malý projekt na Githubu začal získávat několik hvězdiček a já publikoval blogový příspěvek oslavující 20 hvězdiček.

Jednoho rána jsem se probudil a zjistil, že se rozrostl na 120 hvězdiček. Někdo slavný o něm v noci tweetoval, což vedlo k tomu, že se ocitl v denním přehledu trendů na Githubu. Několik dní jsem byl na Githubu na prvním místě v trendech.

Ozvalo se mi mnoho laskavých lidí, aby mi poděkovali a povzbudili mě. Ukázalo se, že existují tisíce lidí, kteří chtějí nejen pracovat v Googlu, ale chtějí pracovat jako softwaroví inženýři, a tento seznam byl právě tím seznamem úkolů, který potřebovali.

Teď je na více než 21 000 hvězdičkách.

Stále tomu nemohu uvěřit.

Co když tu práci nedostanu?

Nebude to konec světa.

Vložil jsem do studia čas a odhodlání s cílem nechat se zaměstnat jako softwarový inženýr ve společnosti Google, ale i kdybych neuspěl, budu stále vyzbrojen dovednostmi a znalostmi potřebnými pro práci softwarového inženýra v jakékoli společnosti.

Ať už skončím kdekoli, nastoupím jako základní softwarový inženýr. Nepůjdu tam s 15 lety zkušeností softwarového inženýra, protože je prostě nemám. Pokud jde o tyto věci, jsem ekvivalentem čerstvého absolventa CS.

Ale mám také nadšení čerstvého absolventa. Je to pro mě nový svět. Právě začínám. Nebojím se dělat chyby. Vím, že je udělám. Také se chci naučit všechno, co umím, a být výborným doplňkem každého týmu.“

Nestuduj tolik jako já

Ano, trvalo mi to 8 měsíců. Ale mohl jsem to zkrátit. Jako každý začínající podnik s velkým cílem děláte chyby a věci, kterými ztrácíte čas. Je mnoho věcí, které bych si přál vrátit a udělat jinak.

Nastudoval jsem témata, která jsem nepotřeboval, některá proto, že jsem si myslel, že je budu potřebovat na pohovoru, a některá proto, že jsem chtěl mít znalosti po ruce, až začnu pracovat. Nechtěl jsem být přítěží pro tým, ke kterému jsem přidělen. Ukázalo se, že jsem se prostě připravil příliš.

Strávil jsem tři týdny čtením tisícistránkové knihy o C++. Nepamatuji si, že by to stálo 1 000 stran, ale o C++ toho teď vím docela dost. Jak se ukázalo, na pohovoru používám Python, ne C++. Předpokládal jsem, že potřebuji C++, C nebo Javu, ale mýlil jsem se. Je dobré se ptát, ne předpokládat.

Přečetl jsem mnohem víc knih, než jsem potřeboval. Jsou jen 3 nebo 4 knihy, které jsem si měl přečíst.

Mám katalog kódu s desítkami algoritmů, které si prohlížím, a většinu z nich bych na pohovoru nečekal. To nemusíte dělat.

Stoka algoritmů, vytištěných k prohlížení.

Sledoval jsem mnoho hodin videí na YouTube, ale mohl jsem jich sledovat mnohem méně a rozložit si témata v čase.

Měl jsem přestat číst knihy a sledovat videa dříve a začít s kódováním problémů dříve. Mohl jsem věnovat více času aplikaci naučených témat.

Klíčem k zapamatování je rozvržené opakování. Jakmile se něco naučíte, zopakujte si to později a ještě později. Při každém opakování si učení upevníte. Trávení hodin a hodin najednou nad prioritními frontami z vás odborníka neudělá. Odborníkem se stanete tím, že se k němu budete v průběhu času vracet a opakovat. Pokud tak budete činit, dostanete se do bodu, kdy nebudete moci zapomenout detaily.

Pro usnadnění opakování jsem vytvořil 1792 flashcards (digitálních kartiček). To je příliš mnoho. Prohlížím si je na telefonu nebo tabletu, kdykoli mám volnou chvilku (například během vánočních nákupů). Flash karty a rozložené opakování jdou ruku v ruce. Jakmile mám odpověď na flashkartě správně, neoznačuji ji jako známou. Nechávám si ji v balíčku, a jakmile ji vidím a mnohokrát na ni správně odpovím, pak ji označím jako známou.

Můj pocit strachu („Co když se mě zeptají na otázku o červeno-černých stromech?“) mě vedl k tomu, že jsem se učil mnohem více témat, než jsem potřeboval.

Ale nechtěl jsem se jen připravit na pohovor, chtěl jsem se připravit na kariéru ve společnosti Google a řešit rozsáhlé problémy. To znamená znát algoritmy, které ušetří výpočetní zdroje času, prostoru a vstupně-výstupních operací.

Možná nikdy nebudu potřebovat znát algoritmus maximálního toku (Ford-Fulkerson), ale je příjemné vědět, že mám tento nástroj k dispozici, pokud taková situace nastane (aniž bych se musel učit implementaci nazpaměť), a dokážu rozpoznat jeho použití v daném problémovém prostoru.

Závěr

Začátkem jsem si přál, abych mohl všechno to učení přeskočit a prostě si pospíšit a nechat se najmout, abych mohl místo toho trávit čas učením se jazyků a nástrojů pro tým, do kterého nastoupím. Ale cestou jsem si uvědomil, jak jsou tyto znalosti důležité, a i když většina z nich nemusí být použitelná na denní bázi, jsem rád, že jsem vynaložil úsilí. Nově si vážím historie výpočetní techniky, velikánů v oboru, datových struktur a algoritmů (a toho, jak se vzájemně doplňují) a toho, jak počítačové systémy fungují na nízké úrovni.

Brzy podám přihlášku. Cesta k tomuto bodu byla dlouhá – skoro celý rok. Začala už v lednu, ale k dennímu studiu jsem se mohl odhodlat až v dubnu.

Jsem připraven asi tak, jak jen mohu být. Nemůžu studovat a odkládat podání přihlášky donekonečna. V určitém okamžiku musím udělat ten krok.

Vidím před sebou zářnou budoucnost.

Děkuji, že jste si udělali čas a přečetli si můj příběh.

Článek je k dispozici také v arabštině, vietnamštině a korejštině.

Aktualizace: 10. ledna 2017

Nevzali mě. Čtěte dál. Děkuji všem za úžasnou, ohromující podporu.

Aktualizace: 6. března 2017

Příběh má šťastný konec! Byl jsem najat společností Amazon, abych pracoval jako inženýr pro vývoj softwaru v Amazon Web Services!

Kde mě najdete

Bloguji na Startup Next Door.

Google Interview University na Githubu:

jwasham/google-interview-university
google-interview-university – Kompletní denní plán pro studium, jak se stát softwarovým inženýrem Google.github.com

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.