Ohjelmistosuunnittelijan tarjoama laskeutuminen 43 päivässä kokopäiväisessä työssä

faktat

Noin vuosi sitten sain tarjouksia ohjelmistosuunnittelijana Googlelta, LinkedIniltä, ​​Amazonilta, Uberilta ... Suurin osa tarjouksista tuli ylennyksellä, ja peruspalkankorotus oli peräti 40%. Päädyin valitsemaan Uber kaikista niistä yrityksistä (ei se, joka maksaa korkeinta palkkaa, mutta olin syvästi linjassa tämän yrityksen mahdollisuuksien kanssa haha). Koska tänään vietetään ensimmäistä työpäivää Uberin kanssa ja koska ympärilläni olevat ystävät pyytävät jatkuvasti neuvoja haastatteluilla, päätin miettiä haastatteluprosessia vuosi sitten ja yrittää sisällyttää sen olennaisuuden, jonka piti hyödyllisenä valmistelun aikana.

Miksi aloittaa?

Arvostan korkeasti sekä uraani että asuttamiani kaupunkeja. Työskentelin Microsoft Office -tiimissä ja asuin Bellevuessa siihen mennessä, kun aloitin työnhaun, ja molemmat tekijät vaikuttivat yhtä paljon työhönni tekemiseen liittyvään päätökseen. Haluaisin työskennellä verkkoon liittyvien ohjelmistojen suunnittelussa ja elää vilkkaassa kaupungissa, joka on täynnä nuoria työammattilaisia, jotka voivat työskennellä kovasti ja juhlia. Koska aikaisempi työpaikkani ja kaupunki ei täyttänyt mitään mieltymyksiä, päätin siirtyä eteenpäin.

Suunnitelman yleiskatsaus

IMO, Piilaakson tyylihaastattelu ohjelmistosuunnittelijoille on erillinen arviointijärjestelmä, joka on paljon erilainen kuin työsuorituksen arviointi. Vaikka monet yritykset yrittävät muokata haastatteluprosessia siten, että haastatteluista tuleva signaali kuvastaa ehdokkaiden kykyä tehdä todellista työtä niin paljon kuin mahdollista, se ei ole vielä kaukana täydellisyydestä. Tämän valmisteluprosessin aivan alussa tavoitteeni on kristallinkirkas: tarkastella haastatteluprosessia standardoiduna testinä ja naulata se.

Kiinan koulutusjärjestelmän pitkäaikaisesta altistumisesta hyötyi / selvisi, standardisoidun testin valmistelu on minulle aina ollut spektrin helpommalla puolella: Tarvitsen korkea-intensiteetin aikajanaa, ja vietän aikaa vain asioihin, jotka ovat menossa olla vaikuttava haastatteluun. Verkossa on lukemattomia viestejä, joissa ihmisille kerrotaan lukevan oppikirjoja uudestaan, ja minulle se on ylenmääräinen asia. Sinun ei tarvitse yksinkertaisesti tietää Knapsackin historiaa haastatellaksesi haastattelua, sinun tarvitsee vain tuntea kuinka käyttää dynaamista ohjelmointia ongelmien ratkaisemiseksi. En sano, että haastattelujen valmisteluun on välttämättä olemassa "oikotie", mutta siellä pitäisi olla ainakin tämä "selkeä polku", josta kohtuullisten ehdokkaiden tulisi sopia keskenään.

Viimeistelty aikajana: 1 päivä ansioluettelosi päivittämiseen, 2 päivää lähettämiseen / viittaamiseen / verkottumiseen / (kaikki haastattelun saamiseen liittyvät prosessit) ja 20 päivää valmistautumiseen ennen ensimmäistä haastattelua, ja lopuksi vielä 20 päivää haastatteluun / valmistelun jatkamiseen.

Hanki haastattelut

Yritysluettelo haastattelun saamiseksi

Yllä on yritysluettelo, jonka olen koonnut Evernotessa. Koska arvostan sitä kaupunkia, jossa asun niin paljon, luokittelin yritykset kolmeen klusteriin: NYC, LA ja SF Bay Area (en arvosta muuta lahden aluetta niin paljon, että niistä yrityksistä tuli minulle toissijainen.) vihaan pitkää työmatkaa.).

Kukin yllä luetelluista yrityksistä varmistin tavoittavan näitä yrityksiä kolmesta eri näkökulmasta: verkkoportaali, ystävien lähettäjät ja rekrytoijat, joihin LinkedInistä pääsee. Yksi pieni vinkki on, että yrität priorisoida ystävien viittauksia verkkoportaaliin nähden, koska joissakin yrityksissä suositukset eivät ole käytettävissä, kun olet jättänyt online-hakemuksen.

Suoritin kaikki edellä mainitut prosessit kaikille edellä mainituille yrityksille viikonloppuna, ja EOD: lle ensi maanantaina minulla oli suunniteltu yli 10 haastattelua.

Algoritmi ja tietorakenne

Ehdokkaat yleensä pelkäävät algoritmi- ja tietorakennehaastattelua, mutta henkilökohtaisesti mielestäni se on todella yksi helpoimmista aiheista, kun sinulla on systemaattinen lähestymistapa. Keskityin valmistelun aikana kahteen näkökulmaan: ongelmanratkaisu ja ongelman ratkaisun selittäminen.

Käytin ongelmanratkaisun valmistelussa online-koodausalustaa, nimeltään Leetcode.com, ja olen tyytyväinen tulokseen. Ohjelmistosuunnittelijoiden haastattelujen valmistelu harjoittamalla Leetcode.com-sivustossa ei ole mitään uutta, mutta uskon, että olen eriytynyt lähestymistapaan ”vähemmän on enemmän”: keskityin vain ensimmäisiin 150 ongelmaan, lajittelematta. Verkossa on melko paljon ihmisiä, jotka sanovat, että sinun pitäisi laittaa vaikeuksien mukaan ja aloittaa helpommista, ja minusta se on hölynpölyä: et valmistaudu viihdyttämään itseäsi tai lisäämään itseluottamusta ja sinun tulisi yrittää pohtia todellista haastattelua kuten objektiivisesti kuin mahdollista.

Ensimmäiset 150 ongelmaa ovat mahtavia. Ne kattavat melkein kaikki vaaditut aiheet ohjelmistosuunnittelijan haastattelussa: yleisistä aiheista, kuten merkkijono, ryhmä, binaaripuu, dynaaminen ohjelmointi, bittimanipulaatio, niin yleisiin aiheisiin, kuten segmenttipuu, trie, topologinen lajittelu.

Leetcode.com-sivustossa käsiteltävät aiheet

Aika jokainen ohjelmointiyritys. Tiukka ajoitus on kriittisen tärkeä haastattelurytmiin pääsemiseksi. Annoin 30 minuuttia jokaiselle ongelmalle ensimmäistä toistoani kohden 150. Ensimmäisen ongelman iterauksen aikana yritin todella ratkaista jokainen niistä. Jos en ratkaissut yhtä ongelmaa 30 minuutissa, en soita kovalle pysähdykselle ennen kuin en pystynyt selvittämään sitä vielä 30 minuutin kuluttua. Toisena iteraationa asetin kuitenkin aikarajoituksen olevan 15 minuuttia jokaisesta ongelmasta, olettaen, että minulla on jo lähestymistavat muistiini.

Ongelmanratkaisun selittäminen on toinen iso osa. Ajattelin, että siitä tulee luonnollisesti puutteeni, koska englanti ei ole minun ensimmäinen kieli. Englannin sujuvuus ei kuitenkaan ole ratkaiseva tekijä teknisessä haastattelussa. On totta, että kyse on "puhuta oikeaa kieltä", mutta "oikea kieli" on oikeastaan ​​oikeiden terminologioiden yhdistelmä, joka sattuu kietoutumaan englannin kielen kontekstiin. Joten oikeiden terminologioiden ja oikean prosessin välittäminen ideasta on tärkeimmät tavoitteet, joihin pyrimme.

Geeksforgeeks.com on ylivoimaisesti verkkosivusto, josta olen hyötynyt eniten valmistautuessani selittämään ajatusprosessiani. Se on tech-blogin tiedotus jokaisesta luokan algoritmista ja klassisista esimerkki-ongelmista. Tech-blogi sopii haastattelun tempoon täydellisesti: molemmat yrittävät välittää kristallinkirkkaan idean aikatehokkaasti ja tiiviisti. Jokaisessa 150 ohjelmointiongelmassa mietin, mikä algoritmi on ongelman takana. Sitten luen perusteellisesti Geeksforgeeks.com-artikkelin algoritmista sekä esimerkki-ongelmista ja niiden ratkaisuista.

Lukeessani Geeksforgeeksia tajusin, että kuinka paljon minulta puuttuu tech-haastatteluprosessissa uutena luokana. Nopeiden ratkaisujen hankkiminen jokaiselle ongelmalle tekee hakijasta älykkään, mutta ”puhua kieltä” / selittämään ongelmanratkaisu oikealla tavalla saa haastattelijat haluamaan työskennellä ehdokkaan kanssa. Yleensä jälkimmäisellä on vielä tärkeämpi rooli, ja niin tapahtui minulle yhdellä Google-haastattelukierroksella, johon en saanut oikeaa vastausta kokonaan, mutta viestintäni voitti positiivisen palautteen.

Järjestelmäsuunnittelu

Järjestelmäsuunnittelu punnitsee paljon enemmän teollisuuden palkkaamiseen kuin NCG. Ilman kokemusta web-järjestelmän suunnittelusta laajassa mittakaavassa edellisen työni aikana tunsin olevani turha.

Onneksi hiredintech.com-sivuston järjestelmäsuunnittelukurssit auttoivat minua parhaalla tavalla. Se kattoi peruskonseptit, tarkennetut verkkojärjestelmän keskeisistä pullonkauloista, ja mikä tärkeintä: kuinka määritellä suunnittelusi paljon osia niin, että näyttää siltä, ​​että puhut vuosien kokemuksesta.

Järjestelmäsuunnittelun harjoittelu voi olla vaikeaa, koska se on luonteeltaan avoin kysymys ja vaikea löytää universaalia / standardisoitua prosessia ongelmanratkaisuun. Joten mitä meidän pitäisi tehdä, kun yhtä yleistä lähestymistapaa ei löydy? Luokittelemme järjestelmän suunnitteluongelmat ja sitten jaamme ja valloitamme.

Luokittelu on melko suoraviivaista. Ryhmittelin pullonkaulaan, johon jotkut suositut tuotteet ovat joutuneet, ja tiivistan esimerkkejä siitä, kuinka nämä tuotteet ylittävät nämä pullonkaulat. Alla on osa verkkosovellusluetteloa, johon olen syventynyt.

Justin Tv

Myyntivoima

Instagram

Flickr

Kuten huomaat, suuri osa yllä olevista artikkeleista on peräisin sivustolta highscalability.com. Kaivo syvälle kyseiselle verkkosivustolle.

pääte

Kun katsot taaksepäin, niitä oli 43 päivää. Valmistauduin noin viideksi tunniksi arkipäivänä ja noin 15 tunniksi viikonloppupäivänä. Jaoin kaikki yritykset kahteen erään: ensimmäinen erä oli Google, Amazon, LinkedIn, Uber jne. Ja toinen erä oli Facebook, Bloomberg, Airbnb, Spotify jne. Päätin jatkaa vain ensimmäisen erän ajoittamista alkamaan. kanssa. Ajatuksena on, että jos valmisteluni täysin ei onnistunut, minulla on silti aikaa mukauttaa strategiaani ja ampua toiselle erälle, joka on yhtä hyvä joukko yrityksiä IMO.

Onneksi kaikki strategiat ja vaivat kannattivat. 30 päivää valmisteltaessa tunsin jo saavani Piilaakson tyylihaastattelun ytimen. Mikä tärkeintä, tunsin, että minulla on jo riittävän syvä käsitys haastattelujärjestelmästä arvioidakseni objektiivisesti haastatteluni. Haastattelun jälkeen asetettu odotus on aina ollut johdonmukainen lopputuloksen kanssa, mikä oli todella hyvä tunne.

Loppujen lopuksi hyvä haastattelija ei takaa huippuluokan suorituskykyä reaalimaailman projekteissa. On onneksi, että meillä on järjestelmällinen tapa pelata tätä kehittyvää haastattelujärjestelmää, mutta jokaiselle ehdokkaalle on myös tehtävä selväksi, että pitkän aikavälin tiedon kerääminen ja intohimo koko toimialaan menisivät pitkälle. Olen edelleen matkalla tullaksesi hyväksi ohjelmistosuunnittelijaksi, ja tämä osa vie todella paljon vaivaa.

Toivon, että tämä artikkeli auttaa. Keskustele, kritiikki ja jaa rohkeasti.

Oma LinkedIn. Facebook. Yhdistetään.

-Siyi