Die Softwaretechnik kann eine unglaublich lohnende Karriere sein. Aber ohne die richtige Vorbereitung kann es schwierig sein, den angestrebten Job in der Softwaretechnik zu bekommen. Das habe ich gelernt, als ich an der Hochschule Informatikkurse belegte, um eine Stelle als Softwaretechniker zu bekommen.
Ich habe mich für ein Dutzend Software-Positionen bei den meisten Tech-Unternehmen beworben, die Sie kennen: Google, Apple, Microsoft und (damals) Start-ups wie Snapchat und Uber. Hier fasse ich meine Erfahrungen bei der Vorbereitung auf einen Job und bei Vorstellungsgesprächen zusammen, um dich auf deine Reise in die Welt des Software-Engineerings vorzubereiten: vom Brainstorming, bei welchen Unternehmen du dich bewerben solltest, über das Versenden einer Kaltnachricht an einen Recruiter auf LinkedIn, bis hin zur Perfektionierung deines Lebenslaufs, wie die Vorstellungsgespräche typischerweise aussehen und welche Informatik-Themen du studieren solltest.
Dies ist der einzige Leitfaden, den du brauchst, um einen Einstiegsjob im Bereich Software-Engineering zu ergattern.
Bewerbung bei Unternehmen
Viele große Unternehmen stellen Ingenieure auf Einstiegsebene ein. In der Regel handelt es sich dabei um allgemeine Stellen für Berufseinsteiger (Sie bewerben sich nicht speziell für eine Stelle als iOS-Entwickler). Auch Nicht-Tech-Unternehmen sollten Sie nicht außer Acht lassen. Jede Branche ist auf der Suche nach technischen Talenten, und die Technik verändert jeden Bereich auf aufregende Weise.
Sie können diese Stellen entweder auf der Karrieremesse Ihrer Hochschule finden, indem Sie mit einem Personalverantwortlichen sprechen, oder indem Sie die folgenden Suchbegriffe googeln: Firmenname + Hochschulkarrieren.
Wenn Sie kein Student sind, sondern den Einstieg in die Technik entweder über ein Coding Boot Camp oder indem Sie sich selbst das Programmieren beibringen, ist dies ebenfalls ein guter Ausgangspunkt. Neben diesen Studentenjobs werden oft auch Einstiegsjobs angeboten. Wenn Sie jedoch mitten im Berufsleben stehen, müssen Sie vielleicht etwas mehr Networking betreiben (über Freunde, Veranstaltungen oder durch Kaltakquise bei Personalvermittlern).
Hier sind einige Ideen, wo Sie mit der Suche beginnen können:
- Big Tech (Facebook, Apple, Amazon, Google, IBM, Cisco)
- Tech-Startups (Snowflake, DoorDash)
- Finanzen (Goldman Sachs, Visa, Robinhood)
- Unterhaltungsbranche (Disney, Viacom)
- Einzelhandel (Macy’s, Target, Walmart)
- Verteidigung/Luft- und Raumfahrt (Boeing, Northrop Grumman)
Die perfekte LinkedIn-Kaltnachricht
Es wird unvermeidlich Unternehmen geben, die sich nicht bei Ihnen melden, selbst wenn Sie sich direkt beworben haben. Um den Ball ins Rollen zu bringen, sollten Sie versuchen, über Ihr Netzwerk zu einem Vorstellungsgespräch zu kommen. Dies kann entweder in Form einer Kontaktaufnahme mit den Mitgliedern Ihres Netzwerks (Ehemalige oder Freunde) oder mit den Personalverantwortlichen selbst geschehen.
Das sind meine 5 Regeln für eine LinkedIn-Kaltnachricht:
- Schauen Sie, ob eine gemeinsame Verbindung Sie vorstellen kann – Menschen ignorieren weniger wahrscheinlich diejenigen, die sie bereits kennen.
- Fassen Sie sich kurz – Menschen sind beschäftigt. Geben Sie ihnen keine Ausrede, um Ihre Nachricht nur teilweise zu lesen und dann zu verwerfen.
- Gemeinsamkeiten finden – Wenn Sie beide auf dieselbe Schule gegangen sind oder im selben Unternehmen gearbeitet haben, erwähnen Sie diese Tatsache, um Vertrautheit zu erzeugen.
- Sein Sie direkt – Reden Sie nicht um den heißen Brei herum, indem Sie versuchen, Small Talk zu machen. Dies ist nicht der richtige Ort dafür.
- Zeigen Sie Glaubwürdigkeit – Wenn Sie über einschlägige Erfahrungen verfügen, sagen Sie es. Wenn Sie besondere Einblicke haben, geben Sie ihnen einen Vorgeschmack.
Hier ist eine Vorlage für eine LinkedIn-Kaltnachricht, damit Sie loslegen können:
Hey, ich bin sehr daran interessiert, Mitglied zu werden und zu sehen, ob wir zusammenpassen! Ich bin ein ehemaliger @ . Ich würde mich gerne unterhalten.
Beispiel:
Hallo, ich bin sehr daran interessiert, Roblox beizutreten und zu sehen, ob wir zusammenpassen! Ich bin ein ehemaliger PM bei Rockstar Games. Ich liebe das Konzept des unstrukturierten sozialen Spiels. Ich würde mich gerne mit dir unterhalten.
Lebenslauf
Einen guten Lebenslauf zu schreiben ist eine Kunstform, bei der es auf zwei Dinge ankommt: Format und Inhalt.
Der größte Fehler, den die Leute beim Format machen, ist, zu viele Informationen hinzuzufügen, so dass der Lebenslauf am Ende zwei oder sogar drei Seiten lang ist. Das ist unnötig. Halten Sie es einfach. Ihr Lebenslauf sollte nur eine Seite lang sein. Setzen Sie Kursiv- und Fettdruck strategisch ein; sie sollten wirklich nur verwendet werden, um dem Personalverantwortlichen zu helfen, zu verstehen, wer Sie sind und was Sie mitbringen (z. B. nur fettgedruckte Abschnitte und Firmennamen).
Wenn es um den Inhalt geht, achten Sie darauf, dass Sie mehr sagen, indem Sie weniger sagen. Sparen Sie sich die Floskeln und verwenden Sie stattdessen quantitative Zahlen. Zahlen sind ein harter Beweis für Ihren Beitrag. Versuchen Sie, sich auf Ihre Fähigkeiten zu konzentrieren. Sie müssen dem Personalverantwortlichen nicht unnötig erzählen, dass Sie ein großartiger Teamplayer, ein Visionär oder ein harter Arbeiter sind. Das kann jeder sagen. Zeigen Sie stattdessen durch Taten, wie Sie Ihrem Team geholfen haben.
Weitere Informationen finden Sie in dieser Checkliste, mit der Sie sicherstellen können, dass Ihr Lebenslauf als Softwareentwickler ausgefeilt und fertig ist.
Ein typisches Vorstellungsgespräch
Nach meinen Erfahrungen ist der Ablauf von Vorstellungsgesprächen für Softwareentwickler bei jedem Unternehmen mehr oder weniger gleich, egal ob es sich um Google oder ein kleines Startup-Unternehmen handelt, das gerade seine Serie B aufgenommen hat. Dies ist das, was Sie bei einem Vorstellungsgespräch erwarten können.
Verhaltensgespräch
Das verhaltensorientierte Gespräch wird in der Regel telefonisch mit einem Personalverantwortlichen oder dem einstellenden Manager für die jeweilige Stelle geführt. In diesem Gespräch möchte das Unternehmen herausfinden, ob Sie für die Stelle geeignet sind, und zwar sowohl aufgrund Ihrer Erfahrungen als auch aufgrund Ihrer Kommunikationsfähigkeit (und damit sie einschätzen können, ob die Zusammenarbeit mit Ihnen problematisch sein könnte). Seien Sie in Ihrem Lebenslauf gut bewandert, denn es ist wahrscheinlich, dass der Personalverantwortliche Sie in diesem Gespräch nach den in Ihrem Lebenslauf aufgeführten Erfahrungen fragen wird.
- Weitere Fragen zum Verhalten: https://www.tryexponent.com/courses/software-engineering/common-behavioral-questions
Coding Challenge
Nach dem Verhaltensinterview erhalten Sie möglicherweise eine Coding Challenge, die Sie in Ihrer eigenen Zeit erledigen müssen. Dies könnte bedeuten, dass Sie eine Liste von Anforderungen und einen Rahmencode erhalten. Sie werden dann gebeten, den Code zu vervollständigen und ihn einzureichen, nachdem Sie den Code in Ihrer eigenen Umgebung fertiggestellt haben.
Häufiger verwenden Unternehmen Hackerrank (oder ähnliche Tools). Dabei handelt es sich um eine browserbasierte Online-Codierumgebung. Ich schlage vor, dass Sie sich für ein Konto anmelden und während Ihrer Vorbereitung auf die Vorstellungsgespräche damit üben, um sich mit der Umgebung vertraut zu machen.
In manchen Fällen möchten die Unternehmen, dass Sie zuerst die Coding Challenge abschließen, bevor sie Sie für die Verhaltensrunde anrufen. Der Grund dafür ist, dass sie möglicherweise viele Bewerber am Anfang des Trichters haben und eine automatische Methode, um Bewerber herauszufiltern, deren Code nicht genügend Testfälle besteht.
- Versuchen Sie dieses „Array-Differenz“-Problem: https://www.tryexponent.com/courses/software-engineering/difference-of-arrays
Telefon-/Videointerview
Es kann sein, dass Sie auf 1 bis 3 Telefoninterviews treffen. Dabei geht es in der Regel um Datenstrukturen und/oder Algorithmen.
In der Regel erhalten Sie einen Link zu einem gemeinsam nutzbaren Dokument (z. B. Google doc oder CodePen). Damit können sowohl Sie als auch Ihr Gesprächspartner in Echtzeit sehen, was Sie tippen. Ihnen wird ein Programmierproblem vorgelegt, und während Sie Ihren Code schreiben, kann der Interviewer Ihre Fortschritte sehen.
Seien Sie darauf vorbereitet, gängige Datenstrukturen und Algorithmen zu implementieren. Studieren Sie einfache/mittlere Leetcode-Fragen.
Sie sollten immer zuerst die naive Lösung angeben. Als Softwareentwickler wollen wir immer den optimalsten Code schreiben. Aber in einem Vorstellungsgespräch kann es sein, dass die Zeit abläuft, bevor Sie Ihre optimale Lösung fertig haben. Wenn Ihnen die Zeit davonläuft, während Sie Ihre optimale Lösung schreiben, Sie aber bereits den Brute-Force- bzw. naiven Code präsentiert haben, können Sie im Vorstellungsgespräch zumindest einige Punkte sammeln.
Gelegentlich werden Sie in diesen Telefoninterviews auch mit Fragen zum Systemdesign konfrontiert.
- Üben Sie das Design der Architektur von Reddit: https://www.tryexponent.com/courses/software-engineering/design-reddit
Vor Ort
Die Fragen in deinem Vor-Ort-Interview sind ähnlich wie die Fragen in deinem Telefoninterview. Wenn Sie es bis hierher geschafft haben, können Sie sich selbst auf die Schulter klopfen. Sie sind fast am Ziel! In dieser letzten Runde werden Sie wahrscheinlich an einem Whiteboard programmieren – üben Sie das also, bevor Sie zum Vorstellungsgespräch kommen (bei einigen Unternehmen wie Snapchat können Sie Ihren eigenen Laptop mitbringen, um vor Ort zu programmieren).
Außerdem gibt es in der Regel eine Mittagsrunde, bei der Sie mit dem Team zu Mittag essen.
Was Sie lernen sollten
Sie sollten sich beim Programmieren sowohl in einer Entwicklungsumgebung als auch an einem Whiteboard sehr wohl fühlen.
Verhaltensweisen
Diese Fragen werden in Ihrem ersten Telefongespräch auftauchen, aber im Laufe des Vorstellungsgesprächs ist es unvermeidlich, dass diese Fragen wieder auftauchen (z. B. während des Mittagessens vor Ort). Versuchen Sie, sich kurz zu fassen, selbstbewusst zu sprechen (beenden Sie Ihre Sätze mit einem abwärts gerichteten Tonfall) und vermeiden Sie Füllwörter (äh, ähm, wie) aus Ihrem Wortschatz.
- Beschreiben Sie sich selbst.
- Warum Softwaretechnik?
- Erzählen Sie mir, wann Sie einen Fehler gemacht haben.
- Erzählen Sie mir von Ihrem Projekt, x, und was Sie dazu beigetragen haben.
Programmiersprachen
Meiner Erfahrung nach erlauben Unternehmen Ihnen, in der Sprache zu programmieren, in der Sie sich am wohlsten fühlen. In meinen Informatikkursen am College (an der UCLA) wurde uns allen C++ beigebracht. Meine Vorstellungsgespräche habe ich jedoch alle in Java oder Python geführt. Ich fand es sehr einfach, andere Sprachen zu lernen, sobald ich mich mit ihrer Syntax vertraut gemacht hatte.
Ich würde vorschlagen, den Personalverantwortlichen zu fragen, ob für die Vorstellungsgespräche eine bestimmte Sprache erforderlich ist. Andernfalls sollten Sie sich für die Sprache entscheiden, in der Sie am wenigsten Fehler machen.
Datenstrukturen
Sie sollten mit den Fragen zur Programmierung dieser Datenstrukturen vertraut sein.
- Array
- Linked List
- Tree/Graph
- Hash Table
- Stack/Queue
- Heap
Algorithmen
Machen Sie sich mit Fragen der Programmierung dieser Algorithmen vertraut. Seien Sie auch mit den Kompromissen sowie der Zeit- und Raumkomplexität für jeden dieser Algorithmen vertraut.
- Suche (und Graphensuche)
- Sortieren
- Dynamische Programmierung
Abhängig von der Rolle und dem Unternehmen können Sie auch mit Bitmanipulationsproblemen konfrontiert werden.
Ressourcen
Glücklicherweise gibt es eine Fülle von Online-Ressourcen, die Ihnen auf Ihrem Weg helfen. Diese empfehle ich Ihnen.
Leetcode
Die meisten Ihrer Fragen zur Programmierung können Sie bei Leetcode finden. Wenn Sie diese Whiteboard-Fragen sehr gut beherrschen, sollten Sie bereit sein. Bereiten Sie sich auf leichte/mittlere Fragen vor, aber versuchen Sie auch die schwierigeren Fragen – vor allem, wenn Sie in die Vor-Ort-Runden kommen.
Exponent
Exponent’s Software Engineering Interview course is the only course you need. Er enthält geführte Artikel und Videos, die Ihnen helfen, Ihr Wissen aufzufrischen bzw. die Datenstrukturen und Algorithmen neu zu lernen, die Sie für Ihr Vorstellungsgespräch benötigen – alles an einem Ort. Außerdem hat Exponent einen umfassenden Systemdesign-Interview-Kurs für einige der schwierigeren Systemdesign-Fragen hinzugefügt.
GeeksforGeeks
GeeksforGeeks hat die besten Lösungen für Coding-Fragen. Für die meisten Interviewfragen, mit denen Sie konfrontiert werden könnten, zeigt Ihnen GeeksforGeeks nicht nur die naive Implementierung, sondern auch eine optimierte Lösung sowie die Zeit- und Raumkomplexität.
r/CSCareerQuestions
Diese Reddit-Seite (Subreddit), r/CSCareerQuestions, ist eine Gemeinschaft von angehenden und erfahrenen Softwareingenieuren. Hier können Sie sich über die Erfahrungen anderer mit Vorstellungsgesprächen bei bestimmten Unternehmen informieren oder selbst Fragen stellen. Ein Wort der Vorsicht: Die Mitglieder dieses Subreddits sind sehr besessen vom Prestige und der Vergütung eines Unternehmens. Es ist gut, die großen Tech-FAANG-Unternehmen anzustreben, aber denke immer daran, auf dem Boden der Tatsachen zu bleiben – es gibt eine Welt außerhalb der Tech-Branche!
Wrapping Up
Viele Menschen entscheiden sich aus einem oder mehreren Gründen für eine Karriere als Software-Ingenieur. Vielleicht wollen Sie Software-Ingenieur werden, weil Sie gerne Dinge bauen. Oder vielleicht sind Sie davon begeistert, wie die Technologie die Welt verändert. Oder vielleicht wollen Sie einfach nur eine solide Karriere mit guten Verdienstmöglichkeiten (daran ist nichts auszusetzen!).
Legen Sie sich einen konsequenten Lernplan zurecht (z. B. jeden zweiten Tag eine Leetcode-Frage) und halten Sie sich daran.
Während Sie sich auf Ihr Vorstellungsgespräch vorbereiten, steht Ihnen Exponent jederzeit zur Seite. Wenn Sie eine Auffrischung benötigen, empfehle ich Ihnen den Software Engineering Interview Course, der von Software-Ingenieuren zusammengestellt wurde, die in einigen der führenden Technologieunternehmen der Branche gearbeitet haben.