Software-engineering kan een ongelooflijk lonende carrière zijn. Maar zonder de juiste voorbereiding kan het moeilijk zijn om de baan als software-engineer te krijgen die je in gedachten hebt. Ik heb dit geleerd toen ik op de universiteit cursussen informatica volgde om een baan als software-engineer (SWE) te krijgen.
Ik heb voor een dozijn softwarefuncties gesolliciteerd bij de meeste techbedrijven die je kunt noemen: Google, Apple, Microsoft, en startups (in die tijd) zoals Snapchat en Uber. Hier vat ik mijn learnings samen, van mijn baanvoorbereiding en interviewervaringen, om je te helpen voorbereiden op je reis in de wereld van software engineering: van brainstormen op welke bedrijven je moet solliciteren, het sturen van een koud bericht naar een recruiter op LinkedIn, het perfectioneren van je cv, hoe de interviews er typisch uitzien, en welke computerwetenschappelijke onderwerpen je moet bestuderen.
Dit is de enige gids die je nodig hebt om een entry-level software engineering-baan te landen.
Toepassing op bedrijven
Veel grote bedrijven huren entry-level engineers in. Meestal zijn dit generieke nieuwe grad rollen (je bent niet interviewen om specifiek een iOS-ontwikkelaar). Niet korting niet-tech bedrijven ook niet. Elke industrie is op zoek naar tech talent, en tech is shaking up elk gebied in opwindende manieren.
U kunt deze rollen vinden, hetzij op uw college’s carrière beurs door te spreken met een recruiter, of door Google-ing deze zoekwoorden: bedrijfsnaam + universiteit careers.
Als je niet een student, maar eerder overgegaan in tech ofwel via een codering boot camp of door het aanleren van jezelf om te coderen, dit is ook een goede plek om te beginnen. Er zijn vaak banen op instapniveau geplaatst naast deze studentenbanen. Echter, als je een mid-career overgang maakt, moet je misschien een beetje meer netwerken (via vrienden, evenementen, of koude messaging recruiters).
Hier zijn wat ideeën voor waar je kunt beginnen met zoeken:
- Big tech (Facebook, Apple, Amazon, Google, IBM, Cisco)
- Tech startups (Snowflake, DoorDash)
- Finance (Goldman Sachs, Visa, Robinhood)
- Entertainment (Disney, Viacom)
- Retail (Macy’s, Target, Walmart)
- Defense/Aerospace (Boeing, Northrop Grumman)
The Perfect LinkedIn Cold Message
Onvermijdelijk zullen er bedrijven zijn die niet bij je terugkomen, zelfs nadat je direct hebt gesolliciteerd. Om te proberen de bal aan het rollen te krijgen, probeer je een weg naar een interview te netwerken. Dit kan ofwel in de vorm van het bereiken van degenen in uw netwerk (alumni of vrienden) of het bereiken van de recruiters zelf.
Dit zijn mijn 5 regels voor een LinkedIn cold message:
- Zoek of een wederzijdse verbinding u kan introduceren – Mensen zijn minder geneigd om degenen die ze al kennen te negeren.
- Houd het beknopt – Mensen zijn druk. Geef ze geen excuus om uw bericht gedeeltelijk te lezen voordat ze het weggooien.
- Vind raakvlakken – Als u beiden naar dezelfde school bent gegaan of bij hetzelfde bedrijf hebt gewerkt, breng dat feit ter sprake om vertrouwdheid te ontlokken.
- Wees direct – Draai er niet omheen door te proberen een praatje te maken. Dit is niet de plaats voor dat.
- Toon geloofwaardigheid – Als je relevante ervaring hebt, zeg dat dan. Als je bepaalde inzichten hebt, geef ze dan een voorproefje.
Hier is een LinkedIn cold message template om je op weg te helpen:
Hey, zeer geïnteresseerd om mee te doen en te zien of er een wederzijdse fit is! Ik ben een voormalig @ . Zou graag willen chatten.
Voorbeeld:
Hey, zeer geinteresseerd om lid te worden van Roblox en te zien of er een wederzijdse fit is! Ik ben een voormalige PM @ Rockstar Games. Hou van het concept van ongestructureerd sociaal spel. Zou graag chatten.
Cv
Het schrijven van een goed cv is een kunstvorm, die neerkomt op twee dingen: formaat en inhoud.
De grootste fout die mensen maken met het formaat is het toevoegen van te veel informatie, waardoor het cv uitmondt in twee of zelfs drie pagina’s. Dat is onnodig. Houd het simpel. Uw cv zou slechts één pagina moeten beslaan. Gebruik cursieve en vetgedrukte opmaak strategisch; ze moeten echt alleen worden gebruikt om de recruiter of aanwervende manager te helpen begrijpen wie je bent en wat je in huis hebt (gebruik ze bijvoorbeeld alleen om secties en bedrijfsnamen vet te maken).
Wat de inhoud betreft, zorg ervoor dat je meer zegt door minder te zeggen. Stop met de onzin en gebruik in plaats daarvan kwantitatieve cijfers. Cijfers leveren het harde bewijs van uw bijdragen. Probeer u te concentreren op uw harde vaardigheden. Het is niet nodig om de recruiter onnodig te vertellen dat je een geweldige teamspeler, een visionair of een harde werker bent. Iedereen kan dit zeggen. Laat in plaats daarvan door middel van daden zien hoe je je team hebt geholpen.
Voor meer informatie kun je deze checklist raadplegen om ervoor te zorgen dat je cv voor software-engineering helemaal in orde is.
Een typisch sollicitatiegesprek
Uit mijn ervaring blijkt dat het proces voor sollicitatiegesprekken voor software-engineering bij elk bedrijf min of meer hetzelfde is, of het nu gaat om Google of een kleine startup die net zijn serie B heeft binnengehaald. Dit is wat je redelijkerwijs kunt verwachten in het interviewproces.
Behavioral
De gedragsronde wordt meestal gedaan via de telefoon met een recruiter of de hiring manager voor de rol. In dit gesprek wil het bedrijf erachter komen of u geschikt bent voor de functie, zowel op basis van uw ervaringen als uw vermogen om te communiceren (en voor hen om te peilen of u misschien een problematisch persoon bent om mee samen te werken). Zorg dat je je cv goed kent, want waarschijnlijk zal de recruiter of aanwervende manager je in dit gesprek vragen stellen over de ervaringen die op je cv staan.
- Meer gedragsgerichte vragen: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions
Coding Challenge
Na het gedragsinterview krijgt u mogelijk een coding challenge die u in uw eigen tijd moet voltooien. Dit kan betekenen dat u een lijst van eisen en een skeleton code krijgt. U zou dan worden gevraagd om de code te voltooien en in te dienen nadat u de code in uw eigen omgeving hebt voltooid.
Meer gebruikelijk, hebben bedrijven Hackerrank (of tools zoals dat) gebruikt. Dit is een online, browser-gebaseerde codeeromgeving. Ik stel voor dat u zich aanmeldt voor een account en oefent met het gebruik ervan terwijl u zich voorbereidt op interviews, om vertrouwd te raken met de omgeving.
In sommige gevallen willen bedrijven dat u eerst de coderingsuitdaging voltooit voordat ze u zelfs bellen voor de gedragsronde. Dit is omdat ze veel kandidaten bovenaan de lijst hebben staan en ze een geautomatiseerde manier hebben om kandidaten te filteren van wie de code niet door genoeg testcases komt.
- Probeer dit “difference of arrays”-probleem eens: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays
Phone/Video Interview
Je kunt te maken krijgen met 1 tot 3 telefonische interviews. Deze gaan meestal over gegevensstructuren en/of algoritmen.
Typisch krijgt u een link naar een deelbaar document (zoals Google doc of CodePen). Hiermee kunnen zowel jij als je gesprekspartner in real-time zien wat je typt. Je krijgt een codeerprobleem voorgeschoteld en terwijl je code schrijft, kan de interviewer je voortgang zien.
Ben voorbereid op het implementeren van veelgebruikte datastructuren en algoritmen. Bestudeer gemakkelijke/middelmatige Leetcode-vragen.
Je moet altijd eerst de naïeve oplossing geven. Als softwareontwikkelaars willen we altijd de meest optimale code schrijven. Maar in een interview is het mogelijk dat de tijd opraakt voordat je je optimale oplossing af hebt. Je verdient in ieder geval wat punten in het interview als de tijd opraakt terwijl je je optimale oplossing aan het schrijven bent, maar je de brute kracht/naïeve code al hebt gepresenteerd.
Soms krijg je in deze telefonische interviews ook te maken met vragen over systeemontwerp.
- Oefen het ontwerpen van de architectuur van Reddit: https://www.tryexponent.com/courses/software-engineering/design-reddit
On-Site
De vragen in je on-site zijn vergelijkbaar met de vragen in je telefonische interview. Als je zover bent gekomen, geef jezelf dan een schouderklopje. Je bent er bijna! In deze laatste ronde zul je waarschijnlijk coderen op een whiteboard – dus oefen dat voordat je naar het interview komt (een paar bedrijven zoals Snapchat kunnen je vragen om je eigen laptop mee te nemen om ter plaatse te coderen).
Er is ook meestal een lunchronde waar je kunt lunchen met het team.
Wat te studeren
Wees zeer comfortabel met coderen, zowel in een ontwikkelomgeving als op een whiteboard. Hier zal ik in detail de codering onderwerpen die je moet bestuderen.
Gedrag
Deze vragen zullen komen in uw eerste telefoongesprek, maar als je gaat door het interview proces, is het onvermijdelijk deze vragen zullen opnieuw komen (bijvoorbeeld tijdens de lunch in uw on-site). Probeer beknopt te zijn, spreek vol zelfvertrouwen (eindig je zinnen met een neerwaartse buiging in je toon) en elimineer vulwoorden (uh, um, like) uit je vocabulaire.
- Vertel eens iets over jezelf.
- Waarom software engineering?
- Vertel me over een keer dat je een fout hebt gemaakt.
- Vertel me over je project, x, en wat je hebt bijgedragen.
Programmeertalen
Mijn ervaring is dat bedrijven je toestaan om te coderen in de taal waar jij je het prettigst bij voelt. In mijn computercursussen aan de universiteit (UCLA) leerden we allemaal C++. Ik heb echter al mijn interviews in Java of Python gedaan. Ik vond het heel gemakkelijk om andere talen op te pikken als ik eenmaal vertrouwd was met de syntaxis.
Ik stel voor dat je de recruiter of hiring manager vraagt of de sollicitatiegesprekken een specifieke taal vereisen.
Data Structures
Ben bekend met coderingsvragen rond deze datastructuren. Wees ook bekend met tradeoffs, evenals tijd en ruimte complexiteit voor elk.
- Array
- Linked List
- Tree/Graph
- Hash Table
- Stack/Queue
- Heap
Algorithms
Ben bekend met coderingsvragen rond deze algorithms. Wees ook bekend met tradeoffs, evenals tijd en ruimte complexiteit voor elk.
- Zoeken (en Graph search)
- Sorteren
- Dynamisch Programmeren
Afhankelijk van de rol en het bedrijf, kan je ook gevraagd worden bit manipulatie problemen.
Bronnen
Gelukkig bestaat er een overvloed aan online bronnen om je op weg te helpen. Dit zijn degenen die ik aanbeveel.
Leetcode
Het merendeel van uw codeervragen kan worden gevonden op Leetcode. Als je erg goed wordt in deze whiteboardvragen, zou je klaar moeten zijn. Wees voorbereid op makkelijke/middelmatige vragen, maar probeer ook de moeilijkere vragen — vooral als je doorgaat naar on-site rondes.
Exponent
Exponent’s Software Engineering Interview cursus is de enige cursus die je nodig hebt. Het heeft begeleide artikelen en video’s om u te helpen uw kennis op te frissen / opnieuw leren van de data structuren en algoritmen die je nodig hebt voor je interview – alles op een plaats. Bovendien heeft Exponent een uitgebreide cursus systeemontwerp toegevoegd voor een aantal van de moeilijkere vragen over systeemontwerp.
GeeksforGeeks
GeeksforGeeks heeft de beste oplossingen voor coderingsvragen. Voor de meeste interviewvragen die u kunt krijgen, toont GeeksforGeeks u niet alleen de naïeve implementatie, maar ook een geoptimaliseerde oplossing en tijd- en ruimtecomplexiteit.
r/CSCareerQuestions
Deze Reddit-pagina (subreddit), r/CSCareerQuestions, is een community van ambitieuze en ervaren software-ingenieurs. Je kunt dit gebruiken om te lezen over de ervaringen van anderen met sollicitatiegesprekken bij specifieke bedrijven of om zelf vragen te stellen. Een waarschuwing: leden van deze subreddit zijn erg geobsedeerd door prestige en compensatie van bedrijven. Het is goed om te streven naar de top grote tech FAANG bedrijven, maar altijd onthouden om geaard te zijn – er is een wereld buiten tech!
Wrapping Up
Veel mensen kiezen software engineering als een carrière om een of meer van de vele redenen. Misschien wil je software-ingenieur worden omdat je graag dingen bouwt. Of misschien ben je geïnspireerd door hoe technologie de wereld verandert. Of misschien wil je gewoon een solide carrièrepad met goede verdienmogelijkheden (niets mis mee!).
Houd een consequent studieschema (bv. doe 1 Leetcode vraag om de andere dag) en hou je daaraan.
Terwijl je werkt aan je interview prep, is Exponent er altijd om te helpen als dat nodig is. Als je een opfrisser nodig hebt, de enige bron die ik zou aanraden is de Software Engineering Interview Course, die werd samengesteld door software engineers die werkten bij enkele van de top tech bedrijven in de industrie.