Den ultimata guiden: Att få en roll som programvarutekniker på instegsnivå

Mjukvaruteknik kan vara en otroligt givande karriär. Men utan rätt förberedelser kan det vara svårt att få det programvaruteknikjobb du har i åtanke. Detta lärde jag mig när jag läste datavetenskapskurser i college för att få en roll som programvarutekniker (SWE).
Jag har intervjuat för ett dussin mjukvaruroller på de flesta teknikföretag du kan nämna: Google, Apple, Microsoft och nystartade företag (på den tiden) som Snapchat och Uber. Här sammanfattar jag mina lärdomar, från mina erfarenheter av jobbförberedelser och intervjuer, för att hjälpa dig att förbereda dig på din resa i mjukvaruteknikens värld: från att brainstorma vilka företag du ska ansöka till, skicka ett kallt meddelande till en rekryterare på LinkedIn, finslipa ditt CV, hur intervjuerna typiskt sett ser ut och vilka datavetenskapliga ämnen du ska studera.
Det här är den enda vägledning du behöver för att få ett jobb som nybörjaringenjör inom mjukvaruteknik.

Ansöka till företag

Många stora företag anställer ingenjörer på nybörjarnivå. Vanligtvis är detta generiska roller för nyutexaminerade (du intervjuar inte specifikt för att bli iOS-utvecklare). Tänk inte heller på företag som inte har med teknik att göra. Alla branscher letar efter tekniska talanger, och tekniken skakar om alla områden på spännande sätt.
Du kan hitta dessa roller antingen på din högskolas karriärmässa genom att prata med en rekryterare, eller genom att googla dessa sökord: företagsnamn + universitetskarriär.
Om du inte studerar, utan snarare har övergått till tekniken antingen via ett kodningsbootcamp eller genom att lära dig själv att koda, är det här också en bra plats att börja på. Det finns ofta jobb på nybörjarnivå utannonserade tillsammans med dessa studentjobb. Om du dock är i mitten av din karriär kan du behöva nätverka lite mer (genom vänner, evenemang eller genom att skicka kalla meddelanden till rekryterare).
Här är några idéer om var du kan börja leta:

  • Big tech (Facebook, Apple, Amazon, Google, IBM, Cisco)
  • Startup-företag inom teknik (Snowflake, DoorDash)
  • Finans (Goldman Sachs, Visa, Robinhood)
  • Underhållning (Disney, Viacom)
  • Detaljhandel (Macy’s, Target, Walmart)
  • Krigs- och rymdindustrin (Boeing, Northrop Grumman)

Det perfekta kallmeddelandet på LinkedIn

Oundvikligen kommer det att finnas företag som inte hör av sig till dig även efter att du har sökt direkt. För att försöka få bollen i rullning kan du försöka nätverka dig till en intervju. Detta kan ske antingen i form av att du tar kontakt med dem i ditt nätverk (alumner eller vänner) eller tar kontakt med rekryterarna själva.
Detta är mina fem regler för ett kallt LinkedIn-meddelande:

  1. Se om en ömsesidig koppling kan presentera dig – Det är mindre troligt att människor ignorerar dem som de redan känner.
  2. Håll det kortfattat – Människor är upptagna. Ge dem inte en ursäkt för att delvis läsa ditt meddelande innan du förkastar det.
  3. Hitta gemensamma nämnare – Om ni båda gick i samma skola eller arbetade på samma företag kan du ta upp det för att få dem att känna sig bekanta.
  4. Var direkt – Försök inte att prata om saker och ting genom att försöka småprata. Detta är inte rätt plats för det.
  5. Visa trovärdighet – Om du har relevant erfarenhet, säg det. Om du har särskilda insikter, ge dem ett smakprov.

Här är en mall för kallt meddelande på LinkedIn för att komma igång:
Hej, mycket intresserad av att gå med och se om det finns en ömsesidig passform! Jag är en före detta @ . . Skulle gärna vilja prata.
Exempel:
Hej, mycket intresserad av att gå med i Roblox och se om det finns en ömsesidig passform! Jag är en före detta PM @ Rockstar Games. Jag älskar konceptet med ostrukturerad social lek. Skulle gärna vilja chatta.

Resumé

Att skriva ett bra CV är en konstform som handlar om två saker: format och innehåll.
Det största misstaget som folk gör när det gäller formatet är att lägga till för mycket information, vilket gör att CV:t slutar med att bli två eller till och med tre sidor. Det är onödigt. Håll det enkelt. Ditt cv bör bara vara på en sida. Använd kursiv och fet stil strategiskt; de bör egentligen bara användas för att hjälpa rekryteraren eller den anställande chefen att förstå vem du är och vad du bidrar med (använd dem t.ex. bara för att fetstilta avsnitt och företagsnamn).
När det gäller innehållet ska du se till att du säger mer genom att säga mindre. Skippa flosklerna och använd kvantitativa siffror i stället. Siffror ger hårda bevis för dina bidrag. Försök att fokusera på dina hårda färdigheter. Det finns ingen anledning att i onödan berätta för rekryteraren att du är en bra lagspelare, en visionär eller en hårt arbetande person. Vem som helst kan säga detta. Visa istället genom handling hur du har hjälpt ditt team.
För mer information kan du kolla in den här checklistan för att se till att ditt programvaruteknik-cv är polerat och klart.

En typisk intervju

Utifrån mina erfarenheter är processen för programvaruteknikintervjuer mer eller mindre densamma på alla företag, oavsett om det är Google eller ett litet startupföretag som precis har tagit in sin series B. Detta är vad du rimligen kan förvänta dig i intervjuprocessen.

Behavioral

Den beteendemässiga rundan görs vanligtvis över telefon med en rekryterare eller den rekryterande chefen för rollen. I det här samtalet vill företaget ta reda på om du skulle passa bra för rollen, både utifrån dina erfarenheter och din förmåga att kommunicera (och för att de ska kunna bedöma om du kan vara en problematisk person att arbeta med). Var väl insatt i ditt CV, eftersom det är troligt att rekryteraren eller den anställande chefen kommer att fråga dig om de erfarenheter som anges i ditt CV under det här samtalet.

  • Mer beteendefrågor: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions

Kodningsutmaning

Efter beteendeintervjun kan du få en kodningsutmaning som du ska genomföra på din egen tid. Det kan innebära att du får en lista med krav och en skelettkod. Du skulle sedan bli ombedd att slutföra koden och skicka in den efter att ha slutfört koden i din egen miljö.
Mer vanligt är att företag använder Hackerrank (eller liknande verktyg). Detta är en online, webbläsarbaserad kodningsmiljö. Jag föreslår att du registrerar dig för ett konto och övar på att använda den när du förbereder dig för intervjuer, för att bekanta dig med miljön.
I vissa fall vill företagen att du ska slutföra kodningsutmaningen först innan de ens kallar dig till beteendeundersökningen. Detta beror på att de kan ha många kandidater högst upp i tratten och att de har något automatiserat sätt att filtrera bort kandidater vars kod inte klarar tillräckligt många testfall.

  • Prova det här ”difference of arrays”-problemet: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays

Telefon-/videointervju

Du kan råka ut för allt från 1 till 3 telefonintervjuer. Dessa handlar vanligtvis om datastrukturer och/eller algoritmer.
Typiskt sett får du en länk till ett delbart dokument (t.ex. Google doc eller CodePen). Med dessa skulle både du och din intervjuare kunna se vad du skriver i realtid. Du får ett kodningsproblem och medan du skriver din kod kan intervjuaren se dina framsteg.
Var beredd på att implementera vanliga datastrukturer och algoritmer. Studera enkla/medelsvåra Leetcodefrågor.
Du bör alltid ge den naiva lösningen först. Som programvaruutvecklare vill vi alltid skriva den mest optimala koden. Men i en intervju är det möjligt att tiden tar slut innan du är klar med din optimala lösning. Du får åtminstone några poäng i intervjun om tiden tar slut när du skriver din optimala lösning, men du redan har presenterat den brutala/naiva koden.
Ibland kommer du också att ställas inför frågor om systemdesign i dessa telefonintervjuer.

  • Öva dig på att designa Reddits arkitektur: https://www.tryexponent.com/courses/software-engineering/design-reddit

På plats

Frågorna på plats liknar frågorna i din telefonintervju. Om du har klarat dig så här långt kan du ge dig själv en klapp på axeln. Du är nästan framme! I den här sista rundan kommer du troligen att koda på en whiteboard – så öva på att göra det innan du kommer till intervjun (några företag som Snapchat kan låta dig/begära att du tar med dig din egen bärbara dator för att koda på plats).
Det finns också vanligtvis en lunchrunda där du får äta lunch med teamet.

Vad ska du studera

Var mycket bekväm med att koda både i en utvecklingsmiljö och på en whiteboard. Här kommer jag att redogöra för de kodningsämnen som du bör studera.

Behavioral

Dessa frågor kommer att dyka upp i ditt första telefonsamtal, men när du går igenom intervjuprocessen är det oundvikligt att dessa frågor kommer att dyka upp igen (t.ex. under lunchen på din plats). Försök att vara kortfattad, tala självsäkert (avsluta dina meningar med en nedåtgående böjning i tonen) och eliminera fyllnadsord (uh, um, like) från ditt ordförråd.

  • Berätta om dig själv.
  • Varför programvaruteknik?
  • Berätta om en gång då du gjorde ett misstag.
  • Berätta om ditt projekt, x, och vad du bidrog med.

Programmeringsspråk

Av min erfarenhet tillåter företagen att du kodar i det språk du känner dig mest bekväm med. I mina kurser i datavetenskap på college (vid UCLA) fick vi alla lära oss C++. Jag gjorde dock alla mina intervjuer i Java eller Python. Jag tyckte att det var mycket lätt att lära mig andra språk när jag väl blev bekant med syntaxen.
Jag skulle föreslå att du frågar rekryteraren eller den anställande chefen om intervjuerna kräver något specifikt språk. Annars bör du välja det språk som du är mindre benägen att göra fel med.

Datastrukturer

Var bekant med kodningsfrågor kring dessa datastrukturer. Var också bekant med kompromisser samt tids- och utrymmeskomplexitet för var och en.

  • Array
  • Linked List
  • Tree/Graph
  • Hash Table
  • Stack/Queueue
  • Heap

Algorithms

Var bekant med kodningsfrågor kring dessa algoritmer. Var också bekant med kompromisser samt tids- och utrymmeskomplexitet för varje algoritm.

  • Sökning (och grafisk sökning)
  • Sortering
  • Dynamisk programmering

Avhängigt av roll och företag kan du också bli ombedd att lösa problem med lite manipulation.

Resurser

Troligtvis finns det en uppsjö av resurser på nätet som kan hjälpa dig på din resa. Dessa är de jag rekommenderar.

Leetcode

De flesta av dina kodningsfrågor kan du hitta på Leetcode. Om du blir väldigt bra på dessa whiteboardfrågor bör du vara redo. Var beredd på enkla/medelsvåra frågor, men prova även de svårare frågorna – särskilt när du går vidare till rundor på plats.

Exponent

Exponents kurs i intervjuer inom programvaruteknik är den enda kurs du behöver. Den innehåller guidade artiklar och videor som hjälper dig att uppdatera dina kunskaper/lär dig de datastrukturer och algoritmer som du behöver för din intervju — allt på ett och samma ställe. Dessutom har Exponent lagt till en omfattande intervjukurs om systemdesign för några av de svårare frågorna om systemdesign.

GeeksforGeeks

GeeksforGeeks har de bästa lösningarna på kodningsfrågor. För de flesta intervjufrågor som du kan ställas inför visar GeeksforGeeks inte bara den naiva implementeringen utan även en optimerad lösning samt tids- och rumskomplexitet.

r/CSCareerQuestions

Denna Reddit-sida (subreddit), r/CSCareerQuestions, är en gemenskap för blivande och erfarna mjukvaruingenjörer. Du kan använda den här för att läsa om andras erfarenheter av att intervjua på specifika företag eller för att själv ställa frågor. Ett varningens ord: medlemmarna i denna subreddit är mycket besatta av företagets prestige och ersättning. Det är bra att sikta in sig på de stora FAANG-bolagen, men kom alltid ihåg att vara jordnära – det finns en värld utanför tekniken!

Avsluta

Många människor väljer programvaruteknik som karriär av en eller flera av många anledningar. Du kanske vill bli programvaruingenjör för att du gillar att bygga saker. Eller så kanske du inspireras av hur tekniken förändrar världen. Eller kanske vill du bara ha en solid karriärväg med goda förtjänstmöjligheter (inget fel med det!).
Har du ett konsekvent studieschema (t.ex. gör en Leetcode-fråga varannan dag) och håller dig till det.
När du förbereder dig för intervjuer finns Exponent alltid här för att hjälpa dig vid behov. Om du behöver en uppfräschning kan jag rekommendera Software Engineering Interview Course, som sammanställdes av mjukvaruingenjörer som arbetade på några av de främsta teknikföretagen i branschen.

Lämna en kommentar