- Compiler-Ingenieure entwerfen nicht direkt Programmiersprachen, sondern arbeiten in einem Bereich des Software-Engineerings, der bestehende Sprachen schneller und effizienter ausführt
- Für diese Rolle gibt es nur einen winzigen Teil aller Software-Engineering-Jobs; die Einstiegshürde ist hoch und die Nachfrage begrenzt
- Einstellende Unternehmen reichen von Startups, großen Tech-Konzernen, der Wissenschaft, dem Finanzsektor bis zu Open-Source-Projekten, doch die meisten Stellen sind auf Berufserfahrene ausgerichtet
- In Interviews werden vor allem algorithmische Implementierung auf Basis von C++, Sprachdesign, Compiler-Optimierung und Low-Level-Systemwissen bewertet
- Die Vorbereitung mit MIT-Vorlesungen und Open-Source-Lernmaterialien sowie konsequentes Networking und Referrals sind der Schlüssel zum Berufseinstieg
Was ist ein Compiler-Ingenieur?
- Ein Compiler ist ein Software-Werkzeug, das in einer Programmiersprache geschriebenen Code in eine andere Sprache übersetzt
- Compiler-Ingenieure sind für die Implementierung und Optimierung solcher Sprachen zuständig
- Statt neue Sprachen zu entwerfen, verbessern sie vor allem die Ausführungseffizienz bestehender Sprachen
- Die Autorin arbeitet in einem großen Tech-Unternehmen in der San-Francisco-Bay-Area an der Leistungssteigerung von Programmiersprachen
Warum dieser Artikel entstanden ist
- Da es online fast keine Informationen zum Berufseinstieg im Compiler-Bereich gibt, wurde dieser Text geschrieben, um einen praktischen Leitfaden für Einsteiger und Absolventen bereitzustellen
- Zu Machine Learning oder Full-Stack gibt es viel Material, aber zu Compilern gibt es nur wenig Content
- Die Autorin teilt ihre Erfahrung, nach etwa einem Jahr voller Versuch und Irrtum erfolgreich einen Job gefunden zu haben
Kurzer Überblick über den persönlichen Werdegang
- 2023 Abschluss am MIT mit einem Doppelstudium in Mathematik und Informatik
- Nach dem Abbruch eines forschungsorientierten Masterstudiums arbeitete sie 2024 in einem Startup in New York an einer Open-Source-Spracherweiterung
- Danach wechselte sie zu einem börsennotierten Tech-Unternehmen in San Francisco
Wo Compiler-Ingenieure eingestellt werden
- Laut Indeed gibt es etwa 116.000 Stellen für „software engineer“, aber nur rund 400 für „compiler engineer“
- Startups: höhere Chance auf Einstellungen von Berufseinsteigern; auch die Autorin begann ihre erste Stelle in einem Startup
- Große Tech-Unternehmen: vor allem Hardware- und Automobilunternehmen wie Tesla, Waymo und Nvidia
- Bei FAANG-Unternehmen gibt es Fälle, in denen der Einstieg über die Übernahme nach einem Praktikum erfolgte
- Wissenschaft: begrenzte Chancen durch rückläufige Forschungsfinanzierung
- Quant-Finanzfirmen: Unternehmen wie Jane Street und Five Rings verlangen Fähigkeiten im High-Performance-Computing
- Open-Source-Projekte: Einige Startups stellen auch in diesem Bereich ein
Strategie für Lebenslauf und Networking
- Referrals sind der effektivste Weg
- Über Bekannte oder Bekannte von Bekannten um Empfehlungen bitten
- Im SNS-Profil wurde das Interesse mit „Rona likes compilers“ sichtbar gemacht, um Networking-Chancen zu schaffen; tatsächlich führte das bis zu Interviews
- Der persönliche Hintergrund (US-Staatsbürgerschaft, MIT-Abschluss usw.) wirkte sich vorteilhaft aus
Arten von Interviews
- LeetCode-ähnliche Algorithmen: Whiteboarding zu Datenstrukturen wie BFS oder Priority Queue, meist in C++
- Sprachdesign: Schreiben einer Grammatik für eine einfache Sprache unter bestimmten Randbedingungen
- Fragen zu Programmiersprachen: Lieblingssprache und die Gründe dafür
- Intermediate Representation (IR): Interpretation und Transformation von x86-Assembly, einschließlich MLIR-basierter Aufgaben
- Optimierungspässe: In MLIR-Aufgaben wurde ein Optimierungspass zur algebraischen Vereinfachung geschrieben, außerdem Pässe für Constant Propagation und Dead Code Elimination
- Compiler-Grundlagen: Komponenten eines Compilers, Optimierungstechniken, Erklärung statischer vs. dynamischer Compiler
- Graphentheorie: Fragen zu graphbasierten Darstellungen in Compilern wie Control-Flow-Graphen und Registerallokation (beeinflusst durch das Thema der Bachelorarbeit der Autorin)
- Low-Level-Systemthemen: Deadlocks, Race Conditions, Spezialregister, Instruction Pipelines, Speicherallokation, binäre Darstellung und Operationen, Garbage Collection usw.
- Verhaltensfragen: Motivationsfragen wie „Warum möchten Sie im Compiler-Bereich arbeiten?“
Vorbereitung auf Interviews
- Gelernt wurde vor allem mit MIT-OCW-Vorlesungen
- Computation Structures: Pipelines, Assembly, binäre Operationen und andere Low-Level-Konzepte
- Computer Language Engineering: Erfahrung mit C++ und großen Codebasen
- Performance Engineering: Fokus auf Performance-Optimierung, entscheidend für den Einstieg in die aktuelle Stelle
- Theory of Computation: hilfreich zum Verständnis von Sprachgrammatiken
- Zusätzlich wurde auch der autodidaktische Kurs Advanced Compilers von Cornell genutzt
Verbesserungsmöglichkeiten und Erkenntnisse
- Fehlende Mentoren: Einsicht in die Notwendigkeit von Networking über LinkedIn
- Fachbücher (Engineering a Compiler, Dragon Book) sind nützlich zur Wiederholung von Konzepten, haben aber Grenzen bei der konkreten Interviewvorbereitung
- Keine Aufzeichnung von Interviewfragen: Es war ein Fehler, Fragen nach dem Interview nicht zu notieren und zu wiederholen
- Zu wenig Open-Source-Beteiligung: Projekte wie Carbon und Mojo wurden geprüft, aber es gab keine tatsächlichen Beiträge. Open Source ist effektiv für Lernen und Networking
Warum Compiler gewählt wurden
- Zunächst wurde ein Mathematik-Promotionsstudium erwogen, doch nach einem REU-Sommerforschungsprogramm entstand der Wunsch nach Arbeit mit unmittelbarerem Einfluss, weshalb zusätzlich Informatik studiert wurde
- Die Ähnlichkeit zwischen theoretischem Denken und Low-Level-Programmierung war besonders faszinierend
- Low-Level-Programmierung ist reizvoll, weil sie sich wie Mathematik anfühlt: eine ganze Welt aus Prinzipien heraus aufzubauen
- Im Gegensatz zum empirischen Charakter des Machine Learning wird ein Ansatz bevorzugt, bei dem man aus Axiomen ein ganzes Universum aufbaut
- Am MIT gab es in der Compiler-Community viele sympathische Menschen; außerdem braucht man im Vergleich zu anderen Bereichen wegen geringerer Bezahlung und weniger Ruhm eine leicht masochistische Ader
Technischer Arbeitsmarkt und Ratschläge
- Freunde der Autorin aus Oregon (etwa von Oregon State und anderen nicht-elitären staatlichen Universitäten) erhielten trotz hunderter Bewerbungen nur etwa vier Interviews
- Ressourcen maximal nutzen und sich differenzieren: an Open-Source-Communities teilnehmen, Social Media nutzen, Hochschulressourcen einsetzen (zur Not auch einen Club gründen, zu dem sonst niemand kommt)
- Menschen direkt treffen: etwa an System-Lesegruppen teilnehmen (Erwähnung von Erics Systemgruppe in New York)
- Auch der Start eines Compiler-YouTube-Kanals wird ernsthaft erwogen (trotz Unbehagen vor der Kamera)
- Solche Aktivitäten garantieren nicht direkt einen Job, erhöhen aber die Wahrscheinlichkeit von Chancen
Fazit und persönliche Erfahrung
- Vor dem Startup-Job im Jahr 2024 gab es keine Industrieerfahrung im Compiler-Bereich
- Im Bewerbungsprozess 2025 wurde sogar auf niedrig bezahlte Positionen reagiert, doch die Chancen gingen an Bewerber im Promotionsstudium
- Nach Dutzenden Interviews über 10 Monate gelang schließlich der erfolgreiche Berufseinstieg; aktuell liegt der Fokus auf Leistungsverbesserungen von Programmen im Millisekundenbereich
- Die Autorin bittet darum, von Menschen aus dem Compiler-Bereich kontaktiert zu werden, und erwähnt einen neuen Anfang in der Region Palo Alto
- Abschließend teilt sie die Nachricht über die Veröffentlichung ihres Romans „You Had Me at Hello World“
2 Kommentare
Im Vergleich zu anderen Bereichen gibt es weniger Geld und Ruhm, daher braucht man wohl eine leicht masochistische Veranlagung
Meine Güte
Hacker-News-Kommentare
Wer sich für Compiler interessiert, dem würde ich empfehlen, mit Beiträgen zum Projekt ClangBuiltLinux oder im Issue-Tracker von LLVM anzufangen
Man kann sich die Issue-Liste „Linux kernel with LLVM“ und
die Liste mit „good first issues“ von LLVM ansehen
Das Thema des Artikels wirkte wie persönliche Eigenwerbung
Wenn man aber wirklich Compiler Engineer werden will, ist es entscheidend, selbst einen Compiler zu bauen
Es ist wichtig, grundlegende Konzepte wie Tokenizing, AST-Erzeugung, Typechecking und IR (Intermediate Representation) zu lernen
Ich empfehle das LLVM-Tutorial.
Man muss kein Genie auf MIT-Niveau sein; der Umfang eines einsemestrigen CS-Kurses reicht völlig für den Einstieg
Entsprechende Jobs sind selten, daher wechseln viele in andere Bereiche wie AI
Es hat mich überrascht, dass selbst mit MIT-Hintergrund der Einstieg in Compiler Engineering nicht leicht ist
Das Feld ist enger, als man denkt, und wirkt eher wie ein seniorenlastiger Markt als einer für Einsteiger
Als die Dotcom-Blase 2001 platzte, war die Jobsuche schwierig, aber die aktuelle Lage scheint auf andere Weise ebenfalls hart zu sein
Es gibt auch viele Bewerber, denen Wissen in Systemprogrammierung fehlt
Der Thread verlief in viele Richtungen, aber hier eine Zusammenstellung von Unternehmen, die Compiler Engineers einstellen
Dazu gehören AMD, Nvidia, Intel, Apple, Google, Jane Street, Bloomberg, Qualcomm, Modular, AWS und ARM
Weitere Informationen gibt es in der CompilerJobs-Liste
In der Praxis gibt es deutlich mehr Bewerber als Stellen
Beiträge zu Projekten wie LLVM, Rust, Swift oder Carbon sind der realistischste Einstiegspfad
Referenzen: PL Resources,
How to Learn Compilers (LLVM Edition),
Compilers YouTube-Kanal
Ich fand den Titel des von ihr erwähnten Buchs „You Had Me At Hello World“ total süß
Ich war überrascht, als mitten im Artikel plötzlich „das ist mein Foto“ auftauchte
In den 80ern wollte ich selbst Compiler Engineer werden, machte einen Master und veröffentlichte sogar eine Arbeit über LR-Parsing,
aber schon damals gab es kaum Jobs. Ich hielt mich mit dem Studium des PCC- und GCC-Quellcodes über Wasser,
wechselte später in die GUI-Entwicklung, und mit dem Aufkommen von Java/Swing gab es dort viel mehr Chancen
Interessanter fand ich, dass sie schon Anfang zwanzig einen Debütvertrag bei Simon & Schuster bekam
Der Satz „Ich überlege, einen Compiler-YouTube-Kanal zu starten“ blieb mir im Kopf
Selbst wenn man komplexe Inhalte nur in einem Blog aufarbeitet, wäre das schon wertvoll genug
Es ist fast so, als müsste ein Kfz-Mechaniker erst selbst ein Auto bauen und Videos vom Fahren drehen, um eingestellt zu werden
Ich bin dankbar, diesen Beitrag zufällig kurz vor einem Compiler-Interview gelesen zu haben
Ich lerne gerade mit Crafting Interpreters(Link) und habe erst jetzt begriffen,
dass Interpreter und Compiler nicht dasselbe sind
Bis zum Interview bleibt nicht mehr viel Zeit, aber danach will ich das Interpreter Book in Go(Link)
und die von Rona empfohlenen Materialien in Ruhe durcharbeiten
sehr geholfen, die Backend-Algorithmen zu verstehen. Das Dragon Book ist ebenfalls nützlich, aber den Parsing-Teil kann man überspringen