Softwareudvikling kan være en utrolig givende karriere. Men uden den rette forberedelse kan det være svært at få det softwareingeniørjob, du har i tankerne. Det lærte jeg, da jeg tog kurser i datalogi på universitetet for at få en rolle som softwareingeniør (SWE).
Jeg har interviewet til et dusin softwareroller hos de fleste af de teknologivirksomheder, du kan nævne: Google, Apple, Microsoft og startups (på det tidspunkt) som Snapchat og Uber. Her opsummerer jeg min læring, fra mine erfaringer med jobforberedelse og samtaler, for at hjælpe dig med at forberede dig på din rejse i softwareingeniørens verden: fra brainstorming om, hvilke virksomheder du skal ansøge, sende en kold besked til en rekrutteringskonsulent på LinkedIn, perfektionere dit CV, hvordan samtalerne typisk ser ud, og hvilke datalogiske emner du skal studere.
Dette er den eneste guide, du har brug for for at lande et job som softwareingeniør på begynderniveau.
Søgning til virksomheder
Mange store virksomheder ansætter ingeniører på begynderniveau. Normalt er der tale om generiske roller for nyuddannede (du er ikke til samtale for specifikt at blive iOS-udvikler). Du må heller ikke se bort fra ikke-tekniske virksomheder. Alle brancher er på udkig efter tech-talenter, og tech ryster alle områder op på spændende måder.
Du kan finde disse stillinger enten på dit kollegiums karrieremesse ved at tale med en rekrutteringsmedarbejder eller ved at google disse nøgleord: virksomhedsnavn + universitetskarrierer.
Hvis du ikke er studerende, men er gået over til tech enten via en coding boot camp eller ved at lære dig selv at kode, er dette også et godt sted at starte. Der er ofte job på begynderniveau slået op ved siden af disse studiejobs. Men hvis du er midt i din karriere, skal du måske netværke lidt mere (gennem venner, arrangementer eller ved at sende kolde beskeder til rekrutteringsbureauer).
Her er nogle ideer til, hvor du kan begynde at lede:
- Big tech (Facebook, Apple, Amazon, Google, IBM, Cisco)
- Tech startups (Snowflake, DoorDash)
- Finans (Goldman Sachs, Visa, Robinhood)
- Underholdning (Disney, Viacom)
- Efterretail (Macy’s, Target, Walmart)
- Defense/Aerospace (Boeing, Northrop Grumman)
Den perfekte LinkedIn Cold Message
Der vil uundgåeligt være virksomheder, der ikke vender tilbage til dig, selv efter du har søgt direkte. For at forsøge at få bolden til at rulle, skal du forsøge at netværke dig til en samtale. Det kan enten ske i form af at henvende dig til dem i dit netværk (alumner eller venner) eller ved at henvende dig til rekrutteringsfolkene selv.
Dette er mine 5 regler for en LinkedIn-kold besked:
- Se, om en gensidig forbindelse kan præsentere dig – Folk er mindre tilbøjelige til at ignorere dem, som de allerede kender.
- Hold det kortfattet – Folk har travlt. Giv dem ikke en undskyldning for at læse din besked delvist, før de kasserer den.
- Find fælles fodslag – Hvis I begge har gået på den samme skole eller arbejdet i den samme virksomhed, så nævn det for at fremkalde kendskab.
- Være direkte – Lad være med at gå udenom ved at forsøge at smalltalke. Det er ikke stedet for det.
- Vis troværdighed – Hvis du har relevant erfaring, så sig det. Hvis du har en særlig indsigt, så giv dem en smagsprøve.
Her er en skabelon til en kold LinkedIn-besked, så du kan komme i gang:
Hej, meget interesseret i at blive medlem og se, om der er et gensidigt match! Jeg er en tidligere @ . . Ville elske at chatte.
Eksempel:
Hey, meget interesseret i at deltage i Roblox og se, om der er et gensidigt match! Jeg er en tidligere PM @ Rockstar Games. Jeg elsker konceptet med ustruktureret socialt spil. Ville elske at chatte.
Resume
At skrive et godt CV er en kunstart, som kommer ned til to ting: format og indhold.
Den største fejl, folk begår med formatet, er at tilføje for mange oplysninger, så CV’et ender med at være to eller endda tre sider. Det er unødvendigt. Hold det simpelt. Dit cv bør kun være på én side. Brug kursiv og fed formatering strategisk; de bør egentlig kun bruges til at hjælpe den rekrutterende eller ansættende chef med at forstå, hvem du er, og hvad du kan bidrage med (brug dem f.eks. kun til at fremhæve afsnit og firmanavne).
Når det kommer til indhold, skal du sørge for at sige mere ved at sige mindre. Skær ned på det overflødige og brug kvantitative tal i stedet. Tallene vil give et håndfast bevis for dine bidrag. Prøv at fokusere på dine hårde kompetencer. Der er ingen grund til unødigt at fortælle rekrutteringspersonalet, at du er en god holdspiller, en visionær eller en hård arbejdsmand. Det kan alle sige. Vis i stedet gennem handling, hvordan du har hjulpet dit team.
For yderligere oplysninger kan du tjekke denne tjekliste for at sikre, at dit CV som softwareingeniør er poleret og klar.
En typisk samtale
Fra mine erfaringer er processen for samtaler med softwareingeniører mere eller mindre den samme i alle virksomheder, uanset om det er Google eller en lille startup, der lige har rejst sin serie B. Dette er, hvad du med rimelighed kan forvente i interviewprocessen.
Behavioral
Den adfærdsmæssige runde foregår typisk over telefonen med en rekrutteringsansvarlig eller den ansættende chef for rollen. I denne samtale ønsker virksomheden at finde ud af, om du vil passe godt til rollen, både på baggrund af dine erfaringer og din evne til at kommunikere (og for at de kan vurdere, om du kan være en problematisk person at arbejde sammen med). Vær velbevandret i dit CV, da det er sandsynligt, at rekrutteringsmedarbejderen eller den ansættende leder vil spørge dig om de erfaringer, der er anført på dit CV, i denne samtale.
- Mere adfærdsmæssige spørgsmål: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions
Coding Challenge
Efter den adfærdsmæssige samtale får du måske en kodningsudfordring, som du skal gennemføre i din egen tid. Det kan betyde, at du får en liste over krav og et skelet af kode. Du vil så blive bedt om at færdiggøre koden og indsende den efter at have færdiggjort koden i dit eget miljø.
Mere almindeligt har virksomhederne brugt Hackerrank (eller lignende værktøjer). Dette er et online, browserbaseret kodningsmiljø. Jeg foreslår, at du opretter en konto og øver dig i at bruge det, mens du forbereder dig til samtaler, så du bliver fortrolig med miljøet.
I nogle tilfælde ønsker virksomhederne måske, at du skal gennemføre kodningsudfordringen først, før de overhovedet indkalder dig til adfærdsrunden. Det skyldes, at de måske har mange kandidater øverst i tragtkanten, og at de har en eller anden automatiseret måde at filtrere kandidater fra, hvis kode ikke består nok testcases.
- Prøv dette “difference of arrays”-problem: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays
Telefon-/Videointerview
Du kan støde på alt fra 1 til 3 telefoninterviews. Disse handler typisk om datastrukturer og/eller algoritmer.
Typisk vil du få et link til et delbart dokument (f.eks. Google doc eller CodePen). Med disse vil både du såvel som din interviewer kunne se, hvad du skriver i realtid. Du vil blive præsenteret for et kodningsproblem, og efterhånden som du skriver din kode, vil intervieweren kunne se dine fremskridt.
Være forberedt på at implementere almindelige datastrukturer og algoritmer. Undersøg nemme/mellemstore Leetcode-spørgsmål.
Du bør altid give den naive løsning først. Som softwareudviklere ønsker vi altid at skrive den mest optimale kode. Men i et interview er det muligt, at tiden løber ud, før du er færdig med din optimale løsning. Du vil i det mindste optjene nogle point i interviewet, hvis tiden løber ud, mens du skriver din optimale løsning, men du allerede har præsenteret den brute force/naive kode.
I nogle tilfælde vil du også blive stillet over for spørgsmål om systemdesign i disse telefoninterviews.
- Øv dig i at designe Reddits arkitektur: https://www.tryexponent.com/courses/software-engineering/design-reddit
On-Site
Spørgsmålene i dit on-site svarer til spørgsmålene i dit telefoninterview. Hvis du er kommet så langt, så giv dig selv et klap på skulderen. Du er der næsten! I denne sidste runde skal du sandsynligvis kode på et whiteboard – så øv dig i at gøre det, inden du møder op til samtalen (nogle få virksomheder som Snapchat lader dig måske medbringe/beder dig om at medbringe din egen bærbare computer til at kode på stedet).
Der er også typisk en frokostrunde, hvor du får mulighed for at spise frokost med teamet.
Hvad skal du studere
Være meget komfortabel med at kode både i et udviklingsmiljø og på et white board. Her vil jeg uddybe de kodningsemner, du bør studere.
Adfærdsmæssige
Disse spørgsmål vil komme op i din første telefonsamtale, men som du går gennem interviewprocessen, er det uundgåeligt, at disse spørgsmål vil komme op igen (f.eks. under frokost i din on-site). Prøv at være kortfattet, tal selvsikkert (afslut dine sætninger med en nedadgående bøjning i tonen) og fjern fyldord (øh, øh, som) fra dit ordforråd.
- Fortæl mig om dig selv.
- Hvorfor software engineering?
- Fortæl mig om en gang, hvor du har begået en fejl.
- Fortæl mig om dit projekt, x, og hvad du har bidraget med.
Programmeringssprog
Fra min erfaring giver virksomhederne dig mulighed for at kode i det sprog, du føler dig mest tryg ved. På mine universitetsuddannelser i datalogi (på UCLA) blev vi alle undervist i C++. Jeg gennemførte dog alle mine interviews i Java eller Python. Jeg fandt det meget nemt at lære andre sprog, når jeg først var blevet fortrolig med syntaksen.
Jeg vil foreslå at spørge rekrutteringsmedarbejderen eller den ansættende leder, om interviewene kræver et bestemt sprog. Ellers skal du gå med det sprog, som du er mindre tilbøjelig til at begå fejl med.
Datastrukturer
Vær fortrolig med kodningsspørgsmål omkring disse datastrukturer. Vær også bekendt med afvejninger samt tids- og rumkompleksitet for hver enkelt.
- Array
- Linked List
- Tree/Graph
- Hash Table
- Stack/Queueue
- Heap
Algoritmer
Være bekendt med kodningsspørgsmål omkring disse algoritmer. Vær også bekendt med afvejninger samt tids- og rumkompleksitet for hver af dem.
- Søgning (og grafsøgning)
- Sortering
- Dynamisk programmering
Afhængigt af rollen og virksomheden kan du også blive bedt om bitmanipulationsproblemer.
Ressourcer
Der findes heldigvis et væld af online ressourcer, der kan hjælpe dig på din rejse. Disse er dem, jeg anbefaler.
Leetcode
De fleste af dine kodningsspørgsmål kan du finde på Leetcode. Hvis du bliver rigtig god til disse whiteboard-spørgsmål, så burde du være klar. Vær forberedt på nemme/mellemstore spørgsmål, men prøv også de sværere spørgsmål – især når du kommer videre til runderne på stedet.
Exponent
Exponents kursus i Software Engineering Interview er det eneste kursus, du har brug for. Det har guidede artikler og videoer, der hjælper dig med at genopfriske din viden/gennemføre de datastrukturer og algoritmer, du har brug for til dit interview — alt sammen på ét sted. Desuden har Exponent tilføjet et omfattende systemdesigninterviewkursus til nogle af de vanskeligere systemdesignspørgsmål.
GeeksforGeeks
GeeksforGeeks har de bedste løsninger til kodningsspørgsmål. For de fleste af de interviewspørgsmål, du kan blive stillet over for, viser GeeksforGeeks dig ikke kun den naive implementering, men også en optimeret løsning samt tids- og rumkompleksitet.
r/CSCareerQuestions
Denne Reddit-side (subreddit), r/CSCareerQuestions, er et fællesskab af håbefulde og erfarne softwareingeniører. Du kan bruge den til at læse om andres erfaringer med at gå til samtale hos bestemte virksomheder eller til selv at stille spørgsmål. Et par advarsler: Medlemmerne af dette subreddit er meget besat af virksomheders prestige og kompensation. Det er godt at sigte efter de store FAANG-firmaer, men husk altid at være jordnær – der er en verden uden for tech!
Wrapping Up
Mange mennesker vælger software engineering som en karriere af en eller flere af mange grunde. Du ønsker måske at blive softwareingeniør, fordi du kan lide at bygge ting. Eller måske er du inspireret af, hvordan teknologien ændrer verden. Eller måske ønsker du bare en solid karrierevej med gode indtjeningsmuligheder (det er der ikke noget galt med!).
Hav en konsekvent studieplan (f.eks. lav 1 Leetcode-spørgsmål hver anden dag) og hold dig til den.
Som du arbejder på din interviewforberedelse, er Exponent altid her for at hjælpe dig efter behov. Hvis du har brug for en genopfriskning, er den ene ressource, jeg vil anbefale, Software Engineering Interview Course, som blev udarbejdet af softwareingeniører, der arbejdede i nogle af de bedste teknologivirksomheder i branchen.