Becoming a Compiler Engineer
In August, after many months of job hunting, I finally started a new role in the San Francisco Bay Area as a compiler engineer. It’s wild, I have dental insurance now.
What is a compiler engineer, anyway?
I imagine the audience of this post is both “people who want a job in compilers” and “people who are curious about my life”, so for those in the latter category: Wikipedia says that “a compiler is software that translates computer code written in one programming language into another language.” Basically, I’m a software engineer who works on programming languages. I don’t make programming languages—there is an entire theoretical subfield for that, and it is very cool; I implement them, which requires less math.
If you’re in the latter category, most of the technical details in this post will probably be boring and irrelevant to you, so you can skip to the end where I talk more about why I do compilers, what my life is like these days, etc.
(By the way, my debut novel from Simon & Schuster is out on November 11th. It’s a young adult romance set at a hackathon. You can preorder it here.)
Why this post exists
When preparing for compiler interviews, I discovered there was very little information online about how to break into this niche as a new or recent grad. There were plenty of YouTube videos on machine learning/full-stack/a newfangled thing called “AI Engineer”, but nobody was talking about compilers, and maybe somebody less delusional would’ve taken that as a sign to switch subfields, but alas, I happen to be delusional, so instead I fumbled around in the dark for the better part of a year and eventually landed a job.
So maybe this post can help other people who are interested in compilers. Or maybe they will read all of this and decide this is so not worth the effort, which I guess is also a way of helping them.
A little about me
In 2023, I graduated from MIT with a double major in math and computer science. Then I began a fifth-year research-based master’s degree, where I was in a compilers lab group. I dropped out after that fall, but sadly cannot claim any cool “MIT dropout” cred because it was grad school. From June to October 2024, I was a compiler engineer at a startup in New York City. In that role, I worked on extending a preexisting open-source programming language.
I am now a compiler engineer at a large, post-IPO tech company in the San Francisco Bay Area. I work on making programming languages run faster.
Who even hires junior-level compiler engineers?
According to Indeed, there are 116,000 job postings for “software engineer” and only 400 job postings for “compiler engineer”. It’s brutal out here.

Compiler engineering roles are relatively rare due to limited demand (most companies don’t build their own compilers, and once a compiler is built, the work is mostly maintenance and optimization) and high barrier to entry. In the past year, I interviewed for twenty-ish opportunities.
Here are the different types of places that might hire a compiler engineer:
Startups: In my experience, startups are more amenable to hiring new grads for this position. My first role was at a startup, after all. Startups sometimes post their listings online; I had LinkedIn and Glassdoor alerts for the “compiler” keyword. Getting to unsubscribe from those alerts . . . that was a beautiful moment.
Larger tech companies: Automotive companies (Tesla, Waymo) have compiler positions, as well as hardware companies (Nvidia). While I do know junior compiler engineers at FAANG companies, they got those jobs by converting an internship into a full-time offer; they applied for “software engineering” and got placed on a compiler-specific team due to their skill set and interests.
Academia: Well, I was speaking to a professor who was hiring for his lab, and it would’ve been a cool chance to work on high-performance computing, but the opportunity disappeared after federal funding cuts. Oof.
Quant finance: I did not interview at any of these companies (I wanted to stay in the Bay Area, and these opportunities are predominantly in New York City and Chicago), but some of my classmates ended up at companies like Jane Street or Five Rings due to their interests in high-performance computing and low-level systems.
Open-source projects: I interviewed at one startup that makes an open-source library, but it wasn’t a good fit for my skills.
Okay, but how do you get these people to look at your resume?
If you are reading this because you’re a recent grad or graduating soon, there are many factors that are likely out of your control now, like your educational institution, your previous internship experience, whether you happen to be related to the CEO of a Fortune 500 tech company, etc.
But referrals help a lot! I ask plenty of people for referrals, even if we aren’t that close. I ask my friends if they know anybody at [insert company name] and if that person can refer me. I try to find a referral for every single job I apply to.
I also tell everyone that I like compilers (I even made my Twitter name “Rona likes compilers”, which got me an interview) because if they later hear about someone hiring for that role, they might think of me.
But of course, I am super-lucky in a lot of ways. I am an American citizen and don’t need visa sponsorship. My school name probably opens doors. I can’t pretend otherwise, that it was all because I hustled so hard and got so many referrals!
Later, I’ll talk more about the brutal job market and how one can stand out without a preexisting network.
What are the interviews like?
During my recruiting process, this is the #1 question I wished somebody online could’ve answered. Instead, this is what I found:
Yeah, the Internet was not very helpful.
So hello, fellow desperate interviewee who stumbled upon this post while searching “what is on a compiler interview” or “what is on a compiler interview reddit” or “is it too late to change careers?”
Here are the types of interview questions I got:
Leetcode-style data structures and algorithms whiteboarding: I heard that tech recruiting was moving beyond these types of questions, but surprisingly, many still focused on implementing breadth-first search or a priority queue. Unlike typical software engineering interviews, I was expected to solve everything in C++.
Language design principles: One of the most interesting final-round questions I got was to invent a simple programming language with specific constraints. I had to write a grammar, ensuring that it was unambiguous.
Programming languages: I never got anything too deep (nothing about formal verification, for example) but was definitely asked “What is your favorite programming language and why” in multiple interviews. Turns out, if you say brainfuck, you will not get the job. Oops.
Intermediate representation: I had multiple interviews where I was expected to read x86 assembly (or a pseudo version of it) and optimize or translate it into another language. I also had a take-home assignment that was in MLIR.
Optimization passes: The aforementioned MLIR take-home assignment wanted me to write an optimization pass for algebraic simplification; other interviews asked me to write optimization passes for constant propagation and dead code elimination.
Compiler fundamentals: I was asked to explain the different parts of a compiler, different compiler optimizations, static vs. dynamic compilers, etc.
Graph theory: This might’ve been due to my resume (I wrote a graph theory paper in undergrad), but I got some questions about graph-based representations in compilers, like control flow graphs and register allocation.
Other low-level topics: I was asked about deadlock, race conditions, special-purpose registers, instruction pipelines, memory allocation, binary representation and binary arithmetic, garbage collection, probably other things I’m forgetting right now.
Behavioral: The main question lobbed was “why do you want to do compilers” (which maybe you’re also wondering after reading this list); I’ll answer that later.
How do I prepare for all that?
I mostly have my MIT education to thank, which is probably an annoying answer for everybody who didn’t go there, but luckily, OCW has these classes available online for free!
The classes that were most helpful:
Computation Structures, which I also TA’d during my master’s program. Taught me many low-level fundamentals like pipelining, assembly, binary arithmetic.
Dynamic Computer Language Engineering, which does not seem to be available online, but its static counterpart is here. I took this class before I had taken the introductory programming course at MIT and that was like putting on your shoes before your socks, except if your shoes were also on fire. However, it taught me C++, what a compiler was, how to work with a huge codebase, and that mixing Red Bull and coffee while pulling an all-nighter is not the brightest idea.
Performance Engineering taught me the lion’s share of the above list and is the main reason I got my current position. Fun coincidence: for one of the jobs I interviewed for, they ended up going with somebody else—turns out the successful candidate was one of my project partners from this class.
Theory of Computation was not as helpful—it is a math course—but it helped me with that final round where I had to write my own grammar. It’s great for getting you to think about what a programming language needs to achieve on a mathematical level.
I also went through Cornell’s Advanced Compilers course, which was quite fun but perhaps a tad heavy-duty for the purpose of interviewing.
Things I would’ve done differently
I didn’t have a mentor in this space; I probably should’ve done more LinkedIn outreach to find people who had the jobs I wanted.
As part of my prep, I read several books, like Engineering a Compiler by Keith D. Cooper and Linda Torczon and the famous Dragon Book (Compilers: Principles, Techniques, and Tools). They were engaging, but they provided high-level overviews that I already knew, so weren’t that helpful for someone who had already taken the classes mentioned above.
I didn’t write down the interview questions I got, mostly because interviews are like a black hole for me and once they’re over I want to throw away my brain. That’s pretty silly, though. I should’ve recorded the questions I got, so I could go back and review.
I’m not involved in any open-source projects, but they seem like a fantastic way of learning more about this field and also meeting people with shared interests. I did look into Carbon and Mojo but didn’t end up making contributions.
Okay, so why compilers?
Here is the answer I give when an interviewer asks me so why do you want to work on compilers:
I was initially a math major, and I thought I wanted to do a math PhD. I went to an REU (a summer research program for undergrads) and wrote a paper. But I decided academia isn’t for me—I wanted to do something that felt more immediately impactful, so I added computer science as my second major.
When I started studying computer science, I was really attracted to low-level programming because, like math, it felt like reinventing the whole world from first principles. Here are these axioms. You can use them to build the whole universe. In contrast, I didn’t love the empirical nature of machine learning.
That’s my interview-ready answer. But I think I stumbled upon compilers with some serendipity, too. There was the foundational Computation Structures course, where I spent a lot of time going to office hours because my friends happened to be there, and where I spent a lot of time grinding on the final design project (which required low-level optimization) because my friends and I were good-naturedly competing with each other. There was the fact that, at MIT, this niche had a lot of people whom I liked. After all, you have to be a little masochistic to study compilers when other subfields have way more money and prestige.
And while this isn’t a post about my writing life (did I mention my novel is out on November 11th?), I’ve also wondered if my brain just really likes managing large systems with many moving parts and many different skill requirements for those parts, which is important in writing both compilers and novels.
About that job market
Look, I know the tech job market is brutal right now. I lurk r/csmajors. Also, I grew up in Oregon, and my friends back home (who attended Oregon State or other public, non-target universities) have applied to hundreds of jobs only to get maybe four interviews.
So how the hell does anybody get a job?
This is general advice for non-compilers people, too: Be resourceful and stand out. Get involved in open-source communities, leverage social media, make use of your university resources if you are still in school (even if that means starting a club that nobody attends, at least that demonstrates you’re trying). Meet people. There are reading groups (my friend Eric runs a systems group in NYC; I used to go all the time when it was held in Cambridge). I was seriously considering starting a compilers YouTube channel even though I’m awkward in front of the camera.
I don’t know if this will get you a job. But it’ll certainly improve your chances.
Good luck!
Before the startup I worked at in 2024, I didn’t have any industry experience in compilers. My internships were all full-stack web development. I got pretty lucky that my first full-time job took a chance on me, and even though it didn’t work out with them, I’m really grateful.
During my 2025 recruiting cycle, I applied to a compiler position that paid $28/hr (yes, far above California’s minimum wage, but below market rate for a software engineer) but required C++ experience, knowledge of deep-learning, and LLVM fundamentals. And then, after making it to the final round, I didn’t even get that job. It went to a PhD student.
Also, at one point, I made it to the final round for a position in Shanghai, and I was truly considering moving to China even though my Mandarin ability means I would only be able to fluently converse with five-year-olds.
It took a long time—ten months and so many interviews—but I did end up landing a job as a compiler engineer. Now I spend all day thinking about how to make programs run milliseconds faster. It’s awesome.
Also, if you work in compilers, please say hi! My email is rona at mit dot edu.
(I also recently moved to Palo Alto and don’t know many people here, so if you’re in the area, let’s be friends!)
Okay, shameless plug one last time: my debut novel from Simon & Schuster is out November 11th. It’s titled You Had Me at Hello World. You can get it here.
I’ll end with an excerpt from said book, coding-related to match the theme of this post:
Thanks for reading! Subscribe for free below:
What's Your Reaction?
Like
0
Dislike
0
Love
0
Funny
0
Angry
0
Sad
0
Wow
0