Ohjelmistotekniikka voi olla uskomattoman palkitseva ura. Mutta ilman oikeanlaista valmistautumista voi olla vaikeaa saada haluamaasi ohjelmistosuunnittelijan työtä. Opin tämän, kun kävin yliopistossa tietotekniikan kursseja saadakseni ohjelmistotekniikan (SWE) tehtävän.
Olen haastatellut tusinan verran ohjelmistoalan tehtäviin useimmissa mainitsemissasi teknologiayrityksissä: Googlessa, Applessa, Microsoftissa ja (silloisissa) startup-yrityksissä, kuten Snapchatissa ja Uberissa. Tässä kokoan yhteen oppimani asiat, jotka olen oppinut työhön valmistautumisesta ja haastattelukokemuksistani, auttaakseni sinua valmistautumaan matkallesi ohjelmistosuunnittelun maailmaan: siitä, mihin yrityksiin kannattaa hakea, kylmän viestin lähettämisestä rekrytoijalle LinkedInissä, ansioluettelon hiomisesta, siitä, miltä haastattelut tyypillisesti näyttävät, ja siitä, mitä tietotekniikan oppiaineita kannattaa opiskella.
Tämä on ainoa opas, jonka tarvitset, kun haluat aloittelevan ohjelmistosuunnittelijan paikan.
Hakeutumalla yrityksiin
Monet suuryritykset palkkaavat aloittelevia ohjelmistosuunnittelun osaajia. Yleensä nämä ovat yleisiä vastavalmistuneen rooleja (et hae nimenomaan iOS-kehittäjäksi). Älä myöskään vähättele muita kuin teknologiayrityksiä. Jokainen ala etsii teknologiaosaajia, ja teknologia ravistelee jokaista alaa jännittävillä tavoilla.
Voit löytää näitä tehtäviä joko korkeakoulusi uramessuilta puhumalla rekrytoijan kanssa tai googlaamalla näitä hakusanoja: yrityksen nimi + korkeakoulun urat.
Jos et ole opiskelija, vaan olet siirtynyt teknologiaan joko koodausleirin kautta tai opettamalla itse koodaamaan, tämä on myös hyvä paikka aloittaa. Näiden opiskelijatyöpaikkojen rinnalla julkaistaan usein myös aloittelevan tason työpaikkoja. Jos olet kuitenkin siirtymässä urasi puoliväliin, sinun on ehkä tehtävä hieman enemmän verkostoitumista (ystävien, tapahtumien tai rekrytoijien kautta).
Tässä on muutamia ideoita siitä, mistä aloittaa etsiminen:
- Suuri teknologia (Facebook, Apple, Amazon, Google, IBM, Cisco)
- Tekniset startup-yritykset (Snowflake, DoorDash)
- rahoitus (Goldman Sachs, Visa, Robinhood)
- viihde (Disney, Viacom)
- vähittäiskauppa (Macy’s, Target, Walmart)
- Puolustus/Aerospace (Boeing, Northrop Grumman)
Täydellinen LinkedIn-kylmäviesti
Väistämättä tulee yrityksiä, jotka eivät ota sinuun yhteyttä edes sen jälkeen, kun olet hakenut suoraan. Jos haluat yrittää saada pallon liikkeelle, yritä verkostoitua ja päästä haastatteluun. Tämä voi tapahtua joko ottamalla yhteyttä verkostossasi oleviin henkilöihin (alumnit tai ystävät) tai ottamalla yhteyttä rekrytoijiin itse.
Nämä ovat viisi sääntöäni LinkedInin kylmäviestiin:
- Katso, voisiko yhteinen yhteyshenkilö esitellä sinut – Ihmiset jättävät harvemmin huomioimatta henkilöitä, jotka he jo tuntevat.
- Pitäydy ytimekkäästi – Ihmiset ovat kiireisiä. Älä anna heille tekosyytä lukea viestisi osittain, ennen kuin he hylkäävät sen.
- Löydä yhteiset lähtökohdat – Jos olette käyneet samaa koulua tai työskennelleet samassa yrityksessä, mainitse tämä tosiseikka herättääksesi tuttuuden.
- Ole suora – Älä kiertele yrittämällä small talkia. Tämä ei ole oikea paikka sille.
- Esitä uskottavuutta – Jos sinulla on asiaankuuluvaa kokemusta, kerro siitä. Jos sinulla on erityisiä näkemyksiä, anna niistä esimakua.
Tässä on LinkedInin kylmän viestin malli, josta pääset alkuun:
Hei, erittäin kiinnostunut liittymään ja katsomaan, onko molemminpuolista sopivuutta! Olen entinen @ . . . Haluaisin mielelläni keskustella.
Esimerkki:
Hei, erittäin kiinnostunut liittymään Robloxiin ja katsomaan, onko molemminpuolista sopivuutta! Olen entinen PM @ Rockstar Games. Rakastan strukturoimattoman sosiaalisen pelaamisen konseptia. Would love to chat.
Hyvä ansioluettelo
Hyvän ansioluettelon kirjoittaminen on taiteenlaji, joka perustuu kahteen asiaan: muotoon ja sisältöön.
Suurimmat virheet, joita ihmiset tekevät muodon kanssa, ovat liiallisen informaation lisääminen, jolloin ansioluettelosta tulee lopulta kaksi tai jopa kolme sivua. Se on tarpeetonta. Pidä se yksinkertaisena. Ansioluettelosi tulisi olla vain yksi sivu. Käytä kursiivia ja lihavointia strategisesti; niitä pitäisi oikeastaan käyttää vain auttamaan rekrytoijia tai rekrytoivaa esimiestä ymmärtämään, kuka olet ja mitä tuotat pöytään (esim. käytä niitä vain lihavoidaksesi osioita ja yrityksen nimiä).
Sisällön osalta varmista, että sanot enemmän sanomalla vähemmän. Leikkaa löpinät pois ja käytä sen sijaan määrällisiä lukuja. Numerot tarjoavat kovan todisteen panoksestasi. Yritä keskittyä koviin taitoihisi. Rekrytoijalle ei tarvitse tarpeettomasti kertoa, että olet loistava tiimipelaaja, visionääri tai ahkera työntekijä. Kuka tahansa voi sanoa näin. Osoita sen sijaan tekojen kautta, miten olet auttanut tiimiäsi.
Lisätietoa saat tästä tarkistuslistasta, jolla varmistat, että ohjelmistotekniikan ansioluettelosi on hiottu ja valmis.
Tyypillinen haastattelu
Kokemukseni mukaan ohjelmistotekniikan haastatteluprosessi on jokseenkin sama jokaisessa yhtiössä, olipa kyse sitten Googlesta tai pienestä startup-yrityksestä, joka on juuri kerännyt B-erän. Tätä voit kohtuudella odottaa haastatteluprosessissa.
Käyttäytymiskierros
Käyttäytymiskierros tehdään tyypillisesti puhelimitse rekrytoijan tai roolin palkkaavan johtajan kanssa. Tässä keskustelussa yritys haluaa selvittää, sopisitko tehtävään hyvin sekä kokemuksesi että viestintäkykysi perusteella (ja jotta he voivat arvioida, olisitko mahdollisesti ongelmallinen henkilö työskennellä kanssasi). Ole hyvin perehtynyt ansioluetteloosi, sillä on todennäköistä, että rekrytoija tai henkilöstöpäällikkö kysyy sinulta tässä keskustelussa ansioluettelossasi luetelluista kokemuksista.
- Myös käyttäytymiseen liittyviä kysymyksiä: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions
Koodaushaaste
Käyttäytymishaastattelun jälkeen saatat saada koodaushaasteen, jonka voit suorittaa omalla ajallasi. Tämä voi tarkoittaa sitä, että saat vaatimusluettelon ja luurankokoodin. Sinua pyydettäisiin sitten täydentämään koodi ja lähettämään se sen jälkeen, kun olet saanut koodin valmiiksi omassa ympäristössäsi.
Yleisemmin yritykset ovat käyttäneet Hackerrankia (tai sen kaltaisia työkaluja). Tämä on verkossa toimiva, selainpohjainen koodausympäristö. Suosittelen rekisteröitymään tilille ja harjoittelemaan sen käyttöä haastatteluihin valmistautuessasi, jotta tutustut ympäristöön.
Jossain tapauksissa yritykset saattavat haluta, että suoritat koodaushaasteen ensin, ennen kuin he edes kutsuvat sinut käyttäytymiskierrokselle. Tämä johtuu siitä, että heillä saattaa olla paljon ehdokkaita suppilon yläpäässä, ja heillä on jokin automatisoitu tapa suodattaa pois ne ehdokkaat, joiden koodi ei läpäise tarpeeksi testitapauksia.
- Kokeile tätä ”matriisien erotus”-ongelmaa: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays
Puhelin-/videohaastattelu
Voi olla, että joudut kohtaamaan 1-3 puhelinhaastattelua. Nämä koskevat tyypillisesti tietorakenteita ja/tai algoritmeja.
Tyypillisesti saat jaettavan dokumenttilinkin (kuten Google doc tai CodePen). Näiden avulla sekä sinä että haastattelija näkisivät reaaliajassa, mitä kirjoitat. Sinulle esitettäisiin koodausongelma, ja kun kirjoitat koodia, haastattelija voi nähdä edistymisesi.
Valmistaudu toteuttamaan yleisiä tietorakenteita ja algoritmeja. Opiskele helppoja/keskinkertaisia Leetcode-kysymyksiä.
Sinun tulisi aina antaa naiivi ratkaisu ensin. Ohjelmistokehittäjinä haluamme aina kirjoittaa mahdollisimman optimaalisen koodin. Mutta haastattelussa on mahdollista, että aika loppuu kesken ennen kuin saat optimaalisen ratkaisun valmiiksi. Saat ainakin joitakin pisteitä haastattelussa, jos aika loppuu kesken optimaalisen ratkaisun kirjoittamisen, mutta olet jo esittänyt raa’an/naivon koodin.
Joskus näissä puhelinhaastatteluissa tulee vastaan myös järjestelmäsuunnittelukysymyksiä.
- Harjoittele Redditin arkkitehtuurin suunnittelua: https://www.tryexponent.com/courses/software-engineering/design-reddit
Paikan päällä
Kysymykset paikan päällä ovat samanlaisia kuin puhelinhaastattelukysymykset. Jos olet päässyt näin pitkälle, taputa itseäsi selkään. Olet melkein perillä! Tällä viimeisellä kierroksella koodaat todennäköisesti valkotaululla — joten harjoittele sitä ennen haastatteluun tuloa (muutamat yritykset, kuten Snapchat, saattavat sallia/pyytää sinua tuomaan oman kannettavan tietokoneen koodausta varten paikan päällä).
Tyypillisesti on myös lounaskierros, jossa pääset syömään lounasta tiimin kanssa.
Mitä opiskella
Osaa hyvin koodata sekä kehitysympäristössä että valkotaululla. Tässä kerron tarkemmin, mitä koodausaiheita sinun tulisi opiskella.
Käyttäytymistieteellinen
Nämä kysymykset tulevat esille ensimmäisessä puhelinkeskustelussa, mutta haastatteluprosessin edetessä on väistämätöntä, että nämä kysymykset tulevat uudelleen esille (esim. lounaalla paikan päällä). Yritä olla ytimekäs, puhu itsevarmasti (lopeta lauseet äänensävyssäsi alaspäin) ja poista sanavarastostasi täytesanat (uh, um, like).
- Kerro itsestäsi.
- Miksi ohjelmistotekniikka?
- Kerro, milloin olet tehnyt virheen.
- Kerro projektistasi, x, ja mitä olet antanut siihen.
Ohjelmointikielet
Kokemukseni mukaan yritykset antavat sinun koodata sillä kielellä, joka tuntuu sinulle mukavimmalta. Yliopistoni tietotekniikan kursseilla (UCLA:ssa) meille kaikille opetettiin C++:aa. Tein kuitenkin kaikki haastatteluni Javalla tai Pythonilla. Minusta oli erittäin helppoa omaksua muita kieliä, kun olin tutustunut niiden syntaksiin.
Kannattaisin kysyä rekrytoijalta tai palkkaavalta johtajalta, vaaditaanko haastatteluissa jotain tiettyä kieltä. Muussa tapauksessa valitse kieli, jolla teet harvemmin virheitä.
Tietorakenteet
Ole perehtynyt koodauskysymyksiin näiden tietorakenteiden ympärillä. Tutustu myös kompromisseihin sekä kunkin rakenteen aika- ja tilakompleksisuuteen.
- Array
- Linked List
- Tree/Graph
- Hash Table
- Stack/Queue
- Heap
Algorithms
Tutustu näihin algoritmeihin liittyviin koodauskysymyksiin. Tunne myös kompromissit sekä aika- ja tilakompleksisuus kunkin osalta.
- Haku (ja graafihaku)
- Lajittelu
- Dynaaminen ohjelmointi
Roolista ja yrityksestä riippuen sinulta saatetaan kysyä myös bittimanipulaatio-ongelmia.
Resurssit
Onneksi on olemassa lukuisia verkkoresursseja, jotka auttavat sinua matkallasi. Näitä suosittelen.
Leetcode
Leetcode-sivustolta löytyy suurin osa koodauskysymyksistäsi. Jos tulet erittäin hyväksi näissä valkotaulukysymyksissä, sinun pitäisi olla valmis. Varaudu helppoihin/keskivaikeisiin kysymyksiin, mutta kokeile myös vaikeampia kysymyksiä — varsinkin kun etenet paikan päällä järjestettäville kierroksille.
Exponent
Exponent’s Software Engineering Interview course is the only course you need. Se sisältää ohjattuja artikkeleita ja videoita, joiden avulla voit virkistää tietojasi/oppia uudelleen haastattelussa tarvitsemasi tietorakenteet ja algoritmit — kaikki yhdessä paikassa. Lisäksi Exponent on lisännyt kattavan järjestelmäsuunnittelun haastattelukurssin joihinkin vaikeampiin järjestelmäsuunnittelukysymyksiin.
GeeksforGeeks
GeeksforGeeksillä on parhaat ratkaisut koodauskysymyksiin. Useimpiin haastattelukysymyksiin, joita saatat kohdata, GeeksforGeeks näyttää naiivin toteutuksen lisäksi myös optimoidun ratkaisun sekä aika- ja tilakompleksisuuden.
r/CSCareerQuestions
Tämä Redditin sivu (subreddit), r/CSCareerQuestions, on aloittelevien ja kokeneiden ohjelmistosuunnittelijoiden yhteisö. Voit käyttää tätä lukeaksesi muiden kokemuksia haastatteluista tietyissä yrityksissä tai esittääksesi itse kysymyksiä. Varoituksen sana: tämän subredditin jäsenet ovat hyvin pakkomielteisiä yritysten arvostuksen ja korvausten suhteen. On hyvä tähdätä suuriin huipputeknologian FAANG-yrityksiin, mutta muista aina olla maanläheinen – maailma on olemassa myös teknologian ulkopuolella!
Päättely
Monet ihmiset valitsevat ohjelmistotekniikan uran yhdestä tai useammasta monesta syystä. Saatat haluta ohjelmistoinsinööriksi, koska pidät asioiden rakentamisesta. Tai ehkä sinua innostaa se, miten teknologia muuttaa maailmaa. Tai ehkä haluat vain vakaan urapolun, jolla on hyvät ansaintamahdollisuudet (siinä ei ole mitään väärää!).
Harrasta johdonmukainen opiskeluaikataulu (esim. tee 1 Leetcode-kysymys joka toinen päivä) ja pidä siitä kiinni.
Kun työskentelet haastatteluvalmistelujesi parissa, Exponent on aina valmis auttamaan sinua tarvittaessa. Jos tarvitset kertausta, yksi resurssi, jota suosittelen, on Software Engineering Interview Course, jonka ovat koonneet ohjelmistoinsinöörit, jotka ovat työskennelleet alan huipputekniikkayrityksissä.
Kiitos.