The comments are wildly fragmented in this thread. I agree with @torginus, the article has less and less of anything useful to people that want to get into compilers.
Anyways, the "Who .. hires compiler engineer?" section is fairly vague in my opinion, so: AMD, Nvidia, Intel, Apple, Google definitely hire for compiler positions. These hire fairly 'in-open' so probably the best bets all around. Aside from this, Jane Street and Bloomberg also do hire at the peak tier but for that certain language. The off beat options are: Qualcomm, Modular, Amazon (AWS) and ARM. Also see, https://mgaudet.github.io/CompilerJobs/
I seriously attempted getting into compilers last year before realising it is not for me but during those times it felt like people who want to be compiler devs are much much more in number compared to jobs that exist (yes exist, not vacant).
The common way to get going is to do LLVM. Making a compiler is great and all but too many people exist with a lox interpreter-compiler or something taken from the two Go books. Contributing to LLVM (or friends like Carbon, Swift, Rust) or atleast some usage experience is the way. The other side of this is doing GNU GCC and friends but I have seen like only one opening that mentions this way as being relevant. University level courses are rarely of any use.
Lastly, LLVM meetups/conferences are fairly common at most tech hubs and usually have a jobs section listing all requirements.
A few resources since I already made this comment too long (sorry!):
Good synopsis! I enjoyed my time doing some compiler-type work in the past, but there are so few job openings that it can feel quite cramped after awhile, especially without great experience/credentials.
Definitely worth some self-study, however, if only for the healing effect of being exposed to a domain where the culture is largely one of quality instead of...everything except that. :)
> I'm a bit shocked that it would take significant effort/creativity for an MIT grad with relevant course/project work to get a job in the niche
That bit was heartbreaking to me too. I knew the economy was bad for new grads but if a double major from MIT in SF is struggling, then the economy is cooked.
While the economy's definitely in a shitty spot (and IMO heading towards shittier), I wouldn't necessarily take this specific line as a sign of the times. The author does outline reasons why demand for compiler engineers (and junior ones in particular) is likely low in her post.
Compiler development is (for better or worse) a niche that favours people who've got real-world experience doing this. The traditional ways to get in have either been through high-quality, high-profile open-source contribs, or because your existing non-compiler-dev job let you inch closer to compiler development up until the point you could make the jump.
As the author noted, a lot of modern-day compiler work involves late-life maintenance of huge, nigh-enterprise-type code bases with thousands of files, millions of LOC, and no one person who has a full, detailed view of the entire project. This just isn't experience you get right out of school, or even a year or two on.
Honestly, I'd say that as a 2023 grad with no mentors in the compiler dev space, she's incredibly lucky to have gotten this job at all (and to be clear, I hope she makes the most of it, compiler dev can be a lot of fun).
I'm not familiar with the current job market (There is a lot of uncertainty throughout all of the US hiring departments in all fields right now), but it certainly wasn't that hard a couple of years ago.
Compilers are just programs like anything else. All the compiler developers I know were trained up by working on compilers. Just like people writing B2B ecommerce software learned how to do so by working on B2B e-commerce software and embedded software developers learned how to do so by working on embedded software.
Heck, a typical CS degree probably covers more of the basics for compilers than B2B ecommerce software or embedded software!
It's definitely a pretty small world, and to make things worse there are sub-niches -- between which there's certainly cross-pollination, but that's still a barrier to people looking to change jobs. Frontend language semantics (where most PL papers focus) vs. middle-and-back end optimization and hardware support; AoT compilers vs. JITs; CPU targets vs. a blossoming array of accelerators, etc.
Beyond that, I've definitely interviewed people who seemed like they could have been smart + capable but who couldn't cut it when it came to systems programming questions. Even senior developers often struggle with things like memory layouts and hardware behavior.
I’d expect it to be a pretty small niche. How many companies need compiler engineers? Some big tech companies have compiler groups, but they’re a small part of the business. Most software companies are consumers of compilers, not producers.
Stories of "asian face" actresses with eyes taped back, prominent pieces of anti asian grafitti on walls and drawn in bathrooms are common tropes in asian communities, etc.
The examples of plagiarism are examples of common story arcs, with an educated asian female twist, and use of examples that multiple writers in a shared literary pool would have all been exposed to; eg: it could be argued that they all drew from a similar well rather thn some were original and others copied.
There's a shocked article: https://www.halfmystic.com/blog/you-are-believed that may indeed be looking at more evidence than was cited in the google docs link above which would explain the shock and the dismissal of R.W. as a plagiarist.
The evidence in the link amounts to what is common with many pools of proto writers though, lots of similar passages, some of which have been copied and morphed from others. It's literally how writers evolve and become better.
I'm on the fence here, to be honest, I looked at what is cited as evidence and I see similar stories from people with similar backgrounds sharing common social media feeds.
One of her publishers pulled her book from print, publicly accused her of plagiarism, and asked other publishers to denounce her for plagiarism.
That’s pretty damning evidence. If a publisher was on the fence they might pull her books quietly, but they wouldn’t make such a public attack without very good evidence that they thought would hold up in court. There was no equivocation at all.
The evidence, at least the evidence that I found cited as evidence, appears less damning.
Perhaps there is more damning evidence.
What I found was on the order of the degree of cross copying and similar themes, etc. found in many pools of young writers going back through literary history.
Rona Wang, whom I've never previously heard of, clearly used similar passages from her peers in a literary group and was called out for it after receiving awards.
I would raise two questions, A) was this a truly significant degree of actual plagarism, and 2) did any of her peers in this group use passages from any of Tona's work ?
On the third hand, Kate Bush was a remarkable singer / song writer / performer. Almost utterly unique and completely unlike any contempory.
That's ... highly unusual.
The majority of writers, performers, singers, et al. emerge from pools that differ from their prior generations, but pools none the less that are filled with similarity.
The arc of careers of those that rise from such origins is really the defining part of many creators.
It is evidence because a strong condemnation raises the likelihood that the accusation is true.
It doesn’t prove anything, but it supports the theory that they have seen additional evidence.
After researching this a bit, it looks like someone from publisher says she admitted it to them. That certainly explains why they weren’t afraid to publicly condemn her.
So typical of what I dislike about Hacker News. Are you a fiction writer? Who are you to think you have any useful insight into whether it’s plagiarism?
It’s compelling evidence to me, and seemingly no actual fiction writer says otherwise, and even Rona has not tried to defend herself from accusations, merely (people say) hiring a PR firm to wipe the slate clean.
With the roles reversed: if a writer passed judgment on whether a piece of code had been plagiarized, nobody would, or should, listen to them. Why would this be different?
Instead of slapping Harry Potter in the middle of your book wholesale, imagine you lifted a few really good lines from Harry Potter, a few from Lord of the Rings, and more from a handful of other books.
Read the evidence document another poster linked for actual examples.
This is a personal puff piece. Her accomplishments are impressive and well deserved, but she needn't use the title of 'Becoming a Compiler Engineer' as an attack vector to get people interested in writing compilers to read her greatest hits of her early to mid 20s.
The way to become a compiler engineer by definition is to try and write a compiler , for which the best course of action is to focus on learning how tokenizing, ast building, typechecking, and various intermediate representations work.
I don't pretend to know what's the best tutorial for this, but I think this is a fairly good one:
This is for LLVM, but I think doing basic codegen from generic SSA is not a huge leap from this point if one wants to build an entire compiler from scratch.
You do not need to be 'goes to MIT' level of smart, but you do have to understand the basic concepts, which I think is an absolutely manageable amount - about a scope of a couple hundred page paperback or a single challenging CS course worth of info to get started.
So few people trained or specialized in language implementation and compiler writing actually get the chance to write compilers. Those jobs are just so rare that many people in that area re-specialize into something else (like AI these days).
They aren't that rare. And AI is expanding the niche because making parallel linear algebra go zoom zoom is compiler work. There's also a lot of quantum compiler work.
Ya, I almost got a quantum compiler job at Alibaba (they decided to go in a different direction), and a job with Microsoft working complied ML support for Julia also fell through (I passed the interview, but they couldn’t get the head count) before ultimately joining Google working on developer experiences.
It is a Chicken-or-Egg problem, as most commercial attempts at compilers were awful partially compliant bodges, and or expensive.
The GNU gcc groups win is rarely considered these days, but kids who were stuck with masm, risc asm, or Basic thought they were heroes to the hobby.
Slowly, the FOSS compilers grew in features, and commercial entities realized it was less risky to embrace an established compiler ecosystem, and paid people to port in an experienced user-base.
Starting from scratch is hard, as people often make the same logical mistakes. =3
"There are two mistakes one can make along the road to truth...not going all the way, and not starting."(Prince Gautama Siddhartha)
LLVM is certainly not a recommended way to start. That would be to start with a small lisp or ocaml compiler. There you have all the batteries included and the project would still be small enough.
Honestly I've read a ton of scaremongering about how awful and complex LLVM was, and I too assumed the worst, but the API is surprisingly benign and well documented for how difficult a task it accomplishes.
I also checked out Cranelift which was recommended to me as a battle-tested but easier to use alternative, and honestly I haven't found it to be that much simpler.
I've got compiler jobs without ever touching LLVM. Even gcc has a better codebase and performance. If just its maintainers would behave as nice as the LLVM maintainers who are really nice.
Eg with gcc you can write a jit in pure C. With LLVM you'd still need C++ for name lookup hooks. With qbe you won't need any of this. With lisp much less.
Seriously? She's posting on her personal blog (that's what her substack is). Up front she says that one of the two kinds of people she's writing for are those who are interested in her personally.
> she needn't use
There are a lot of things that people needn't do, like absurdly talk about "attack vectors".
> You do not need to be 'goes to MIT' level of smart, but you do have to understand the basic concepts, which I think is an absolutely manageable amount - about a scope of a couple hundred page paperback or a single challenging CS course worth of info to get started.
You certainly don't need to be from 'top 3 college in US' at all. Neither did the creators of Zig (Andrew Kelly) and LLVM, Swift and Mojo (Chris Lattner) ever did.
All you need is genuine interest in compilers, the basic CS fundamentals including data structures and algorithms. Start by building a toy compiler and then study the existing open-source ones and make some contributions to understand how it all works.
> Her accomplishments are impressive and well deserved
what exactly are those even? that she went to MIT? from her linkedin she's at some blockchain startup (for only 4 months) doing "compiler work" - i put it in quotes because these jobs actually happen to be a dime-a-dozen and the only thing you have to do to get them is pass standard filters (LC, pedigree, etc.).
Of course it's a puff piece. Without being too mean-spirited about it, her success is mostly due to luck, reputation, and factors other than expertise such as checking off the right demographic boxes, or being charming in some way. Lots of people study compilers and even do theses and dissertations on the topic, and absolutely can't find work doing that. There are two equally disappointing outcomes I can see here. One is that she realizes that she was just lucky, and she isn't an expert like this. Another is that she never realizes how much luck was involved and begins to think she is the shit because she made it.
All that said, she seems nice. I'm just not going to expect much good advice about to get hired from a fresh MIT grad who checks off a bunch of HR checkboxes.
> Without being too mean-spirited about it, her success is mostly due to luck, reputation, and factors other than expertise such as checking off the right demographic boxes, or being charming in some way.
How do you know this? Just because some people have written dissertations on compilers and didn't find work? OP seems very talented. And doing compiler work for a blockchain is not the most competitive position. I did the same thing for a while, and I don't even have a computer science degree (nor do I "check HR boxes"). And her article has lots of information that would be helpful for someone looking for a compiler engineering role
It's incredibly rude, and wrong, to assume that a woman was hired because she "checks off a bunch of HR checkboxes" rather than skill or hard work when you know nothing about her.
> Lots of people study compilers and even do theses and dissertations on the topic, and absolutely can't find work doing that.
What's your point? Maybe those people aren't as good as her at turning their academic knowledge into real-world skills. Clearly the main reason she ever got hired anywhere was because she passed the interviews, which should tell you that she knows her stuff. Being charming and having contacts only gets you so far; nobody will hire you to work on compilers just because you smile and drop names.
Interesting article to get a bit more knowledge about the field. I went quickly trough some of the books cited and I have the same feeling that they’re not very practical. Also I didn’t find many practical books about LLVM either.
I would like to read in the future about what is the usual day of a compiler engineer, what you usually do, what are the most enjoyable and annoying tasks.
I've heard good things about "LLVM Techniques, Tips, and Best Practices" [0] but haven't gotten around to reading it myself yet. Packt does not always have the best reputation but it was recommended to me by someone I know and the reviews are also solid, so mentioning in case it's at all helpful.
Made an account to say thank you for sharing this post (and to Rona Wang for writing it)! I stumbled into having an interview for a Compiler Engineer position coming up and I wasn't sure how to prepare for it (the fact that I got this interview just goes to show how little people really know about Compilers if they're willing to take a chance on a normal C++ dev like me hah) and I had absolutely NO idea where to even begin (I was just working through Crafting Interpreters[1] that I picked up at the end of my contractorship last week but that's to make an Interpreter, not to make a Compiler)
...And honestly it seems that I'm screwed. And I need about 6 months of study to learn all this stuff. What I'd do right now is finish Crafting Interpreters, then grab that other book on Interpreters that was recommended here recently[2] and written in Go because I remember it had a followup book on Compilers, and THEN start going through the technical stuff that Rona suggested in the article.
And my interview is on Monday so that's not happening. I have other more general interviews that should pay better so I'm not too upset. If only I wasn't too lazy during my last position and kept learning while working. If the stars align and somehow I get that Compiler Engineer position, then I will certainly reach out to Rona and thank you again lalitkale for sharing this post with HN!
In my dabbling with compilers I’ve found Andrew Appel’s books [0] to be invaluable for understanding backend (after parsing) compiler algorithms. It’s a bit dated but covers SSA and other still-relevant optimizations and is pretty readable.
There are three versions (C, ML, and Java). The language isn’t all that important; the algorithms are described in pseudo-code.
I also find the traditional Dragon Book to be somewhat helpful, but you can mostly skip the parsing/frontend sections.
It's a bit sad seeing how much focus there is on using courses and books to learn about compilers.
> 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.
This sounds like the best way to learn and get involved with compilers, but something that's always been a barrier for me is just getting started in open source. Practical experience is far more valuable than taking classes, especially when you really need to know what you're doing for a real project versus following along directions in a class. Open source projects aren't usually designed to make it easy for anyone to contribute with the learning curve.
> 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.
There's a lot of advice and a lot of different ways to try to find a job, but if I were to take away anything from this, it's that the best way is to do a lot of different meaningful things. Applying to a lot of jobs or doing a lot of interview prep isn't very meaningful, whereas the most meaningful things have value in itself and often aren't oriented towards finding a job. You may find a job sooner if you prioritize looking for a job, similar to how you may get better grades by cramming for a test in school, but you'll probably get better outcomes by optimizing for the long term in life and taking a short term loss.
I've been in compiler engineering now for almost a decade. No grad school, just moved into the field and did a lot of random projects for my own entertainment (various compilers for toy languages, etc). It takes a particular type of person who cares about things like correctness. It is a very bizarre subsection of people with an improbably high number of transgender people and an equally high number of rad trad Catholics.
Which is to say that all it takes is an interest in compilers. That alone will set you apart. There's basically no one in the hiring pipeline despite the tech layoffs. I'm constantly getting recruiting ads. Current areas of interest are AI (duh) but also early-stage quantum compute companies and fully-homomorphic encryption startups. In general, you will make it farther in computer science the more niche and hard you go.
being a compiler engineer is like making it in hollywood with a lot less glam. There are maybe 10-15 serious compiler projects out there, think LLVM, GCC, Microsoft, Java, then you've got virtual language bytecode intepreters.
The world needs maybe what, 5000, 10000 of these people maximum? In a world with 8 billion people?
There's more than that. Not a huge amount more but still.
- multiple large companies contribute to each of the larger AoT compiler projects; think AMD's contributions to LLVM and GCC, and multiple have their own internal team for handling compiler work based on some OSS upstream (eg Apple clang)
- various companies have their own DSLs, eg meta's Hack, the python spinoff Goldman has going on, etc.
- DBs have query language engineers which are effectively compiler roles
- (most significantly) most hardware companies and accelerators need people to write toolchains; Triton, Pytorch, JAX, NVCC, etc. all have a lot of people working on them
Great article. Here is a very simple test that I use to find very cracked compiler engineers on this site.
Just search for either of the words "Triton", "CUDA", "JAX", "SGLang" and "LLVM" (Not LLM) and it filters almost everyone out on "Who wants to be Hired' with 1 or 2 results.
Where as if you search "Javascript", 200+ results.
This tells me that there is little to no interest in compiler engineering here (and especially in startups) unless you are at a big tech company or at one of the biggest AI companies that use these technologies.
Of course, the barrier is meant to be high. but if a recruiter has to sift through 200+ CVs a page of a certain technology (Javascript), then your chances of getting selected against the competition for a single job is vanishingly small.
I said this before and it works all the time, for compilers; open-source contributions to production-grade compiler projects with links to commits is the most staightforward differentiator and proof one can use to stand out against the rest.
I can't think of any of my employers I've had in the last 15 years that would have cared that I committed code to a compiler project, with one exception. That one exception would have told me they'd rather have me work on a different product than the one I was applying to, despite the one I was applying to being more interesting to me than debugging compilers all day.
YMMV, I guess, but you're better off demonstrating experience with what they're hiring for, not random tech that they aren't and never will use.
Not many companies are willing to maintain a compiler... but LLMs will change that. An LLM can find bugs in the code if the "compiler guru" is out on vacation that day. And yes, you will still need a "compiler guru" who will use the LLM but do so at a much higher level.
I'm desperately looking forward to, like, 5-10 years from now when all the "LLMs are going to change everything!!1!" comments have all but completely abated (not unlike the blockchain stuff of ~10 years ago).
No, LLMs are not going to replace compiler engineers. Compilers are probably one of the least likely areas to profit from extensive LLM usage in the way that you are thinking, because they are principally concerned with correctness, and LLMs cannot reason about whether something is correct — they only can predict whether their training data would be likely to claim that it is correct.
Additionally, each compiler differs significantly in the minute details. I simply wouldn't trust the output of an LLM to be correct, and the time wasted on determining whether it's correct is just not worth it.
Stop eating pre-chewed food. Think for yourself, and write your own code.
I bet you could use LLMs to turn stupid comments about LLMs into insightful comments that people want to read. I wonder if there’s a startup working on that?
For that, they would need to make LLMs not suck at easy programming tasks. Considering that with all the research and money poured into it they still suck at easy stuff, I'm not optimistic.
LLMs (or LLM assisted coding), if successful, will more likely make the number of compilers go down, as LLMs are better with mainstream languages compared to niche ones. Same effect as with frameworks. Less languages, less compilers needed.
First, LLMs should be happy to use made up languages described in a couple thousand tokens without issues (you just have to have a good llm-friendly description, some examples). That and having a compiler it can iterate with / get feedback from.
Second, LLMs heavily reduce ecosystem advantage. Before LLMs, presence of libraries for common use cases to save myself time was one of the main deciding factors for language choice.
Now? The LLM will be happy to implement any utility / api client library I want given the API I want. May even be more thoroughly tested than the average open-source library.
Have you tried having an LLM write significant amounts of, say, F#? Real language, lots of documentation, definitely in the pre-training corpus, but I've never had much luck with even mid sized problems in languages like it -- ones where today's models absolutely wipe the floor in JavaScript or Python.
Even best in class LLMs like GPT5 or Sonnet 4.5 do noticeably worse in languages like C# which are pretty mainstream, but not on the level of Typescript and Python - to the degree that I don't think they are reliably able to output production level code without a crazy level of oversight.
And this is for generic backend stuff, like a CRUD server with a Rest API, the same thing with an Express/Node backend works no trouble.
I’m doing Zig and it’s fine, though not significant amounts yet. I just had to have it synthesize the latest release changelog (0.15) into a short summary.
To be clear, I mean specifically using Claude Code, with preloaded sample context and giving it the ability to call the compiler and iterate on it.
I’m sure one-shot results (like asking Claude via the web UI and verifying after one iteration) will go much worse. But if it has the compiler available and writes tests, shouldn’t be an issue. It’s possible it causes 2-3 more back and forths with the compiler, but that’s an extra couple minutes, tops.
In general, even if working with Go (what I usually do), I will start each Claude Code session with tens of thousands of tokens of context from the code base, so it follows the (somewhat peculiar) existing code style / patterns, and understands what’s where.
See, I'm coming from the understanding that language development is a dead-end in the real world. Can you name a single language made after Zig or Rust? And even those languages haven't taken over much of the professional world. So when I say companies will maintain compilers, I mean DSLs (like starlark or RSpec), application-specific languages (like CUDA), variations on existing languages (maybe C++ with some in-house rules baked in), and customer-facing config languages for advanced systems and SaaS applications.
Yes, several, e.g., Gleam, Mojo, Hare, Carbon, C3, Koka, Jai, Kotlin, Reason ... and r/ProgrammingLanguages is chock full of people working on new languages that might or might not ever become more widely known ... it takes years and a lot of resources and commitment. Zig and Rust are well known because they've been through the gauntlet and are well marketed ... there are other languages in productive use that haven't fared well that way, e.g., D and Nim (the best of the bunch and highly underappreciated), Odin, V, ...
> even those languages haven't taken over much of the professional world.
Non sequitur goalpost moving ... this has nothing to do with whether language development is a dead-end "in the real world", which is a circular argument when we're talking about language development. The claim is simply false.
Bad take. People said the same about c/c++ and now rust and zig are considered potential rivals. The ramp up is slow and there's never going to be a moment of viral adoption the way we're used to with SaaS, but change takes place.
The comments are wildly fragmented in this thread. I agree with @torginus, the article has less and less of anything useful to people that want to get into compilers.
Anyways, the "Who .. hires compiler engineer?" section is fairly vague in my opinion, so: AMD, Nvidia, Intel, Apple, Google definitely hire for compiler positions. These hire fairly 'in-open' so probably the best bets all around. Aside from this, Jane Street and Bloomberg also do hire at the peak tier but for that certain language. The off beat options are: Qualcomm, Modular, Amazon (AWS) and ARM. Also see, https://mgaudet.github.io/CompilerJobs/
I seriously attempted getting into compilers last year before realising it is not for me but during those times it felt like people who want to be compiler devs are much much more in number compared to jobs that exist (yes exist, not vacant).
The common way to get going is to do LLVM. Making a compiler is great and all but too many people exist with a lox interpreter-compiler or something taken from the two Go books. Contributing to LLVM (or friends like Carbon, Swift, Rust) or atleast some usage experience is the way. The other side of this is doing GNU GCC and friends but I have seen like only one opening that mentions this way as being relevant. University level courses are rarely of any use.
Lastly, LLVM meetups/conferences are fairly common at most tech hubs and usually have a jobs section listing all requirements.
A few resources since I already made this comment too long (sorry!):
[0]: https://bernsteinbear.com/pl-resources/ [1]: https://lowlevelbits.org/how-to-learn-compilers-llvm-edition... [2]: https://www.youtube.com/@compilers/videos
Semiconductor companies developing DSPs also likely hire them. My first job was writing an LLVM backend for a DSP.
Looking through the domains in the LLVM mailing list or the git commits should get you a longer list of "off beat" options.
Good synopsis! I enjoyed my time doing some compiler-type work in the past, but there are so few job openings that it can feel quite cramped after awhile, especially without great experience/credentials.
Definitely worth some self-study, however, if only for the healing effect of being exposed to a domain where the culture is largely one of quality instead of...everything except that. :)
If folks are interested in compilers and looking for where to get started, we're always looking for new contributors:
Building the Linux kernel with LLVM: https://github.com/ClangBuiltLinux/linux/issues
LLVM itself: https://github.com/llvm/llvm-project/issues?q=is%3Aissue%20s...
Very interesting and informative!
I'm a bit shocked that it would take significant effort/creativity for an MIT grad with relevant course/project work to get a job in the niche
I would have thought the recruiting pipeline is kinda smooth
Although maybe it's a smaller niche than I think -- I imagine compiler engineers skew more senior. Maybe it's not a common first or second job
I graduated at the bottom of bear market (2001), and it was hard to get a job. But this seems a bit different
> I'm a bit shocked that it would take significant effort/creativity for an MIT grad with relevant course/project work to get a job in the niche
That bit was heartbreaking to me too. I knew the economy was bad for new grads but if a double major from MIT in SF is struggling, then the economy is cooked.
While the economy's definitely in a shitty spot (and IMO heading towards shittier), I wouldn't necessarily take this specific line as a sign of the times. The author does outline reasons why demand for compiler engineers (and junior ones in particular) is likely low in her post.
Compiler development is (for better or worse) a niche that favours people who've got real-world experience doing this. The traditional ways to get in have either been through high-quality, high-profile open-source contribs, or because your existing non-compiler-dev job let you inch closer to compiler development up until the point you could make the jump.
As the author noted, a lot of modern-day compiler work involves late-life maintenance of huge, nigh-enterprise-type code bases with thousands of files, millions of LOC, and no one person who has a full, detailed view of the entire project. This just isn't experience you get right out of school, or even a year or two on.
Honestly, I'd say that as a 2023 grad with no mentors in the compiler dev space, she's incredibly lucky to have gotten this job at all (and to be clear, I hope she makes the most of it, compiler dev can be a lot of fun).
Yup, I have been a junior compiler engineer at three(!) different jobs early in my career, before moving on to other stuff.
It has never been a huge niche. It's fun work if you can get it. There were often MIT grads around, but I don't think it made you an automatic hire?
Once in a blue moon, for old times' sake, I send a bug fix PR for someone's optimizer, or build a small transpiler for something.
I'm not familiar with the current job market (There is a lot of uncertainty throughout all of the US hiring departments in all fields right now), but it certainly wasn't that hard a couple of years ago.
Compilers are just programs like anything else. All the compiler developers I know were trained up by working on compilers. Just like people writing B2B ecommerce software learned how to do so by working on B2B e-commerce software and embedded software developers learned how to do so by working on embedded software.
Heck, a typical CS degree probably covers more of the basics for compilers than B2B ecommerce software or embedded software!
It's definitely a pretty small world, and to make things worse there are sub-niches -- between which there's certainly cross-pollination, but that's still a barrier to people looking to change jobs. Frontend language semantics (where most PL papers focus) vs. middle-and-back end optimization and hardware support; AoT compilers vs. JITs; CPU targets vs. a blossoming array of accelerators, etc.
Beyond that, I've definitely interviewed people who seemed like they could have been smart + capable but who couldn't cut it when it came to systems programming questions. Even senior developers often struggle with things like memory layouts and hardware behavior.
I’d expect it to be a pretty small niche. How many companies need compiler engineers? Some big tech companies have compiler groups, but they’re a small part of the business. Most software companies are consumers of compilers, not producers.
Tangential but since she mentions her book, "You Had Me At Hello World", is the cutest title for a nerd romance novel that I can imagine.
I'm thinking "et tu btrfs?"
I'm almost more interested in how a 20-something with no apparent prior pedigree lands a Simon and Schuster debut novel contract!
She lost that contract after being found guilty of plagiarism. That’s why she avoids mentioning her considerable writing career at all
It's fiction what is she plagiarizing
What I just said is a fact. Look it up if you like
The similarities are intriging but not compelling.
https://docs.google.com/document/d/1pPE6tqReSAXEmzuJM52h219f...
Stories of "asian face" actresses with eyes taped back, prominent pieces of anti asian grafitti on walls and drawn in bathrooms are common tropes in asian communities, etc.
The examples of plagiarism are examples of common story arcs, with an educated asian female twist, and use of examples that multiple writers in a shared literary pool would have all been exposed to; eg: it could be argued that they all drew from a similar well rather thn some were original and others copied.
There's a shocked article: https://www.halfmystic.com/blog/you-are-believed that may indeed be looking at more evidence than was cited in the google docs link above which would explain the shock and the dismissal of R.W. as a plagiarist.
The evidence in the link amounts to what is common with many pools of proto writers though, lots of similar passages, some of which have been copied and morphed from others. It's literally how writers evolve and become better.
I'm on the fence here, to be honest, I looked at what is cited as evidence and I see similar stories from people with similar backgrounds sharing common social media feeds.
One of her publishers pulled her book from print, publicly accused her of plagiarism, and asked other publishers to denounce her for plagiarism.
That’s pretty damning evidence. If a publisher was on the fence they might pull her books quietly, but they wouldn’t make such a public attack without very good evidence that they thought would hold up in court. There was no equivocation at all.
Said publisher also claims Rona directly admitted plagiarism to them. That’s probably why they’re so confident.
That's a pretty damning response, sure.
The evidence, at least the evidence that I found cited as evidence, appears less damning.
Perhaps there is more damning evidence.
What I found was on the order of the degree of cross copying and similar themes, etc. found in many pools of young writers going back through literary history.
Rona Wang, whom I've never previously heard of, clearly used similar passages from her peers in a literary group and was called out for it after receiving awards.
I would raise two questions, A) was this a truly significant degree of actual plagarism, and 2) did any of her peers in this group use passages from any of Tona's work ?
On the third hand, Kate Bush was a remarkable singer / song writer / performer. Almost utterly unique and completely unlike any contempory.
That's ... highly unusual.
The majority of writers, performers, singers, et al. emerge from pools that differ from their prior generations, but pools none the less that are filled with similarity.
The arc of careers of those that rise from such origins is really the defining part of many creators.
It is evidence because a strong condemnation raises the likelihood that the accusation is true.
It doesn’t prove anything, but it supports the theory that they have seen additional evidence.
After researching this a bit, it looks like someone from publisher says she admitted it to them. That certainly explains why they weren’t afraid to publicly condemn her.
So typical of what I dislike about Hacker News. Are you a fiction writer? Who are you to think you have any useful insight into whether it’s plagiarism?
It’s compelling evidence to me, and seemingly no actual fiction writer says otherwise, and even Rona has not tried to defend herself from accusations, merely (people say) hiring a PR firm to wipe the slate clean.
With the roles reversed: if a writer passed judgment on whether a piece of code had been plagiarized, nobody would, or should, listen to them. Why would this be different?
No I'm literally saying - she writes fiction- how can you plagiarize a fiction book and make it work lol
(I have no knowledge / context of this situation - no idea if she did or what happened here)
You don't seem to know what plagiarism is.
You can't plagiarize fiction?
So if I copy paste Harry Potter that's ok?
What kind of argument is that
Absolutely not saying this or making this argument.
I just don't see how this could possibly work - how would slapping Harry Potter in the middle of the book your writing work
Instead of slapping Harry Potter in the middle of your book wholesale, imagine you lifted a few really good lines from Harry Potter, a few from Lord of the Rings, and more from a handful of other books.
Read the evidence document another poster linked for actual examples.
This is a personal puff piece. Her accomplishments are impressive and well deserved, but she needn't use the title of 'Becoming a Compiler Engineer' as an attack vector to get people interested in writing compilers to read her greatest hits of her early to mid 20s.
The way to become a compiler engineer by definition is to try and write a compiler , for which the best course of action is to focus on learning how tokenizing, ast building, typechecking, and various intermediate representations work.
I don't pretend to know what's the best tutorial for this, but I think this is a fairly good one:
https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index...
This is for LLVM, but I think doing basic codegen from generic SSA is not a huge leap from this point if one wants to build an entire compiler from scratch.
You do not need to be 'goes to MIT' level of smart, but you do have to understand the basic concepts, which I think is an absolutely manageable amount - about a scope of a couple hundred page paperback or a single challenging CS course worth of info to get started.
IMHO the best tutorial is Crenshaw's "Let's Build a Compiler" series.
So few people trained or specialized in language implementation and compiler writing actually get the chance to write compilers. Those jobs are just so rare that many people in that area re-specialize into something else (like AI these days).
They aren't that rare. And AI is expanding the niche because making parallel linear algebra go zoom zoom is compiler work. There's also a lot of quantum compiler work.
Ya, I almost got a quantum compiler job at Alibaba (they decided to go in a different direction), and a job with Microsoft working complied ML support for Julia also fell through (I passed the interview, but they couldn’t get the head count) before ultimately joining Google working on developer experiences.
It is a Chicken-or-Egg problem, as most commercial attempts at compilers were awful partially compliant bodges, and or expensive.
The GNU gcc groups win is rarely considered these days, but kids who were stuck with masm, risc asm, or Basic thought they were heroes to the hobby.
Slowly, the FOSS compilers grew in features, and commercial entities realized it was less risky to embrace an established compiler ecosystem, and paid people to port in an experienced user-base.
Starting from scratch is hard, as people often make the same logical mistakes. =3
"There are two mistakes one can make along the road to truth...not going all the way, and not starting."(Prince Gautama Siddhartha)
Puff piece? Attack vector? It’s just a personal story.
LLVM is certainly not a recommended way to start. That would be to start with a small lisp or ocaml compiler. There you have all the batteries included and the project would still be small enough.
Honestly I've read a ton of scaremongering about how awful and complex LLVM was, and I too assumed the worst, but the API is surprisingly benign and well documented for how difficult a task it accomplishes.
I also checked out Cranelift which was recommended to me as a battle-tested but easier to use alternative, and honestly I haven't found it to be that much simpler.
Sure if you want to build a lisp clone.
Anything else, you're better off starting off with LLVM. Especially if you want a compiler job.
I've got compiler jobs without ever touching LLVM. Even gcc has a better codebase and performance. If just its maintainers would behave as nice as the LLVM maintainers who are really nice.
Eg with gcc you can write a jit in pure C. With LLVM you'd still need C++ for name lookup hooks. With qbe you won't need any of this. With lisp much less.
> This is a personal puff piece.
Seriously? She's posting on her personal blog (that's what her substack is). Up front she says that one of the two kinds of people she's writing for are those who are interested in her personally.
> she needn't use
There are a lot of things that people needn't do, like absurdly talk about "attack vectors".
> You do not need to be 'goes to MIT' level of smart, but you do have to understand the basic concepts, which I think is an absolutely manageable amount - about a scope of a couple hundred page paperback or a single challenging CS course worth of info to get started.
You certainly don't need to be from 'top 3 college in US' at all. Neither did the creators of Zig (Andrew Kelly) and LLVM, Swift and Mojo (Chris Lattner) ever did.
All you need is genuine interest in compilers, the basic CS fundamentals including data structures and algorithms. Start by building a toy compiler and then study the existing open-source ones and make some contributions to understand how it all works.
I don’t know about Kelly but Lattner certainly did. UIUC is pretty top for CS. That’s where NCSA is, as in NCSA Mosaic and many others.
> Her accomplishments are impressive and well deserved
what exactly are those even? that she went to MIT? from her linkedin she's at some blockchain startup (for only 4 months) doing "compiler work" - i put it in quotes because these jobs actually happen to be a dime-a-dozen and the only thing you have to do to get them is pass standard filters (LC, pedigree, etc.).
Of course it's a puff piece. Without being too mean-spirited about it, her success is mostly due to luck, reputation, and factors other than expertise such as checking off the right demographic boxes, or being charming in some way. Lots of people study compilers and even do theses and dissertations on the topic, and absolutely can't find work doing that. There are two equally disappointing outcomes I can see here. One is that she realizes that she was just lucky, and she isn't an expert like this. Another is that she never realizes how much luck was involved and begins to think she is the shit because she made it.
All that said, she seems nice. I'm just not going to expect much good advice about to get hired from a fresh MIT grad who checks off a bunch of HR checkboxes.
> Without being too mean-spirited about it, her success is mostly due to luck, reputation, and factors other than expertise such as checking off the right demographic boxes, or being charming in some way.
How do you know this? Just because some people have written dissertations on compilers and didn't find work? OP seems very talented. And doing compiler work for a blockchain is not the most competitive position. I did the same thing for a while, and I don't even have a computer science degree (nor do I "check HR boxes"). And her article has lots of information that would be helpful for someone looking for a compiler engineering role
> Without being too mean-spirited about it
You must be referring to something other than your own comment.
It's incredibly rude, and wrong, to assume that a woman was hired because she "checks off a bunch of HR checkboxes" rather than skill or hard work when you know nothing about her.
> Lots of people study compilers and even do theses and dissertations on the topic, and absolutely can't find work doing that.
What's your point? Maybe those people aren't as good as her at turning their academic knowledge into real-world skills. Clearly the main reason she ever got hired anywhere was because she passed the interviews, which should tell you that she knows her stuff. Being charming and having contacts only gets you so far; nobody will hire you to work on compilers just because you smile and drop names.
Well, you know, she's female.
In truth we need a curriculum to help people learn how to become compiler engineers.
Hands-on balanced with theory.
We need more compilers (and interoperability of course) and less dependence on LLVM.
> I was seriously considering starting a compilers YouTube channel even though I’m awkward in front of the camera.
Doesn’t need to be a YT channel, a blog where you talk about this very complex and niche stuff would be awesome for many.
Most (all?) of compiler engineering jobs I've seen were about writing glue code for LLVM.
All the ones I've had, and most of the ones I've seen, we for bespoke compilers and toolchains for new HW / specific languages
Lol I love these clueless takes. I'm just curious who you thinks actually writes the stuff within LLVM? Chris lattner? Lololol
Interesting article to get a bit more knowledge about the field. I went quickly trough some of the books cited and I have the same feeling that they’re not very practical. Also I didn’t find many practical books about LLVM either.
I would like to read in the future about what is the usual day of a compiler engineer, what you usually do, what are the most enjoyable and annoying tasks.
I've heard good things about "LLVM Techniques, Tips, and Best Practices" [0] but haven't gotten around to reading it myself yet. Packt does not always have the best reputation but it was recommended to me by someone I know and the reviews are also solid, so mentioning in case it's at all helpful.
0: https://www.packtpub.com/en-us/product/llvm-techniques-tips-...
Made an account to say thank you for sharing this post (and to Rona Wang for writing it)! I stumbled into having an interview for a Compiler Engineer position coming up and I wasn't sure how to prepare for it (the fact that I got this interview just goes to show how little people really know about Compilers if they're willing to take a chance on a normal C++ dev like me hah) and I had absolutely NO idea where to even begin (I was just working through Crafting Interpreters[1] that I picked up at the end of my contractorship last week but that's to make an Interpreter, not to make a Compiler)
...And honestly it seems that I'm screwed. And I need about 6 months of study to learn all this stuff. What I'd do right now is finish Crafting Interpreters, then grab that other book on Interpreters that was recommended here recently[2] and written in Go because I remember it had a followup book on Compilers, and THEN start going through the technical stuff that Rona suggested in the article.
And my interview is on Monday so that's not happening. I have other more general interviews that should pay better so I'm not too upset. If only I wasn't too lazy during my last position and kept learning while working. If the stars align and somehow I get that Compiler Engineer position, then I will certainly reach out to Rona and thank you again lalitkale for sharing this post with HN!
[1] https://craftinginterpreters.com/
[2] https://interpreterbook.com/
In my dabbling with compilers I’ve found Andrew Appel’s books [0] to be invaluable for understanding backend (after parsing) compiler algorithms. It’s a bit dated but covers SSA and other still-relevant optimizations and is pretty readable.
There are three versions (C, ML, and Java). The language isn’t all that important; the algorithms are described in pseudo-code.
I also find the traditional Dragon Book to be somewhat helpful, but you can mostly skip the parsing/frontend sections.
[0] https://www.cs.princeton.edu/~appel/modern/java/
It's a bit sad seeing how much focus there is on using courses and books to learn about compilers.
> 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.
This sounds like the best way to learn and get involved with compilers, but something that's always been a barrier for me is just getting started in open source. Practical experience is far more valuable than taking classes, especially when you really need to know what you're doing for a real project versus following along directions in a class. Open source projects aren't usually designed to make it easy for anyone to contribute with the learning curve.
> 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.
There's a lot of advice and a lot of different ways to try to find a job, but if I were to take away anything from this, it's that the best way is to do a lot of different meaningful things. Applying to a lot of jobs or doing a lot of interview prep isn't very meaningful, whereas the most meaningful things have value in itself and often aren't oriented towards finding a job. You may find a job sooner if you prioritize looking for a job, similar to how you may get better grades by cramming for a test in school, but you'll probably get better outcomes by optimizing for the long term in life and taking a short term loss.
Step one: no engineering education, just get a job that a company calls engineering.
>In 2023, I graduated from MIT with a double major in math and computer science.
Great series about whether programming is “engineering” or not: https://www.hillelwayne.com/post/are-we-really-engineers/
I've been in compiler engineering now for almost a decade. No grad school, just moved into the field and did a lot of random projects for my own entertainment (various compilers for toy languages, etc). It takes a particular type of person who cares about things like correctness. It is a very bizarre subsection of people with an improbably high number of transgender people and an equally high number of rad trad Catholics.
Which is to say that all it takes is an interest in compilers. That alone will set you apart. There's basically no one in the hiring pipeline despite the tech layoffs. I'm constantly getting recruiting ads. Current areas of interest are AI (duh) but also early-stage quantum compute companies and fully-homomorphic encryption startups. In general, you will make it farther in computer science the more niche and hard you go.
Rad trad Catholics makes sense because Catholic theology involves a lot of logic
[flagged]
being a compiler engineer is like making it in hollywood with a lot less glam. There are maybe 10-15 serious compiler projects out there, think LLVM, GCC, Microsoft, Java, then you've got virtual language bytecode intepreters.
The world needs maybe what, 5000, 10000 of these people maximum? In a world with 8 billion people?
There's more than that. Not a huge amount more but still.
- multiple large companies contribute to each of the larger AoT compiler projects; think AMD's contributions to LLVM and GCC, and multiple have their own internal team for handling compiler work based on some OSS upstream (eg Apple clang)
- various companies have their own DSLs, eg meta's Hack, the python spinoff Goldman has going on, etc.
- DBs have query language engineers which are effectively compiler roles
- (most significantly) most hardware companies and accelerators need people to write toolchains; Triton, Pytorch, JAX, NVCC, etc. all have a lot of people working on them
Great article. Here is a very simple test that I use to find very cracked compiler engineers on this site.
Just search for either of the words "Triton", "CUDA", "JAX", "SGLang" and "LLVM" (Not LLM) and it filters almost everyone out on "Who wants to be Hired' with 1 or 2 results.
Where as if you search "Javascript", 200+ results.
This tells me that there is little to no interest in compiler engineering here (and especially in startups) unless you are at a big tech company or at one of the biggest AI companies that use these technologies.
Of course, the barrier is meant to be high. but if a recruiter has to sift through 200+ CVs a page of a certain technology (Javascript), then your chances of getting selected against the competition for a single job is vanishingly small.
I said this before and it works all the time, for compilers; open-source contributions to production-grade compiler projects with links to commits is the most staightforward differentiator and proof one can use to stand out against the rest.
I can't think of any of my employers I've had in the last 15 years that would have cared that I committed code to a compiler project, with one exception. That one exception would have told me they'd rather have me work on a different product than the one I was applying to, despite the one I was applying to being more interesting to me than debugging compilers all day.
YMMV, I guess, but you're better off demonstrating experience with what they're hiring for, not random tech that they aren't and never will use.
Not many companies are willing to maintain a compiler... but LLMs will change that. An LLM can find bugs in the code if the "compiler guru" is out on vacation that day. And yes, you will still need a "compiler guru" who will use the LLM but do so at a much higher level.
I'm desperately looking forward to, like, 5-10 years from now when all the "LLMs are going to change everything!!1!" comments have all but completely abated (not unlike the blockchain stuff of ~10 years ago).
No, LLMs are not going to replace compiler engineers. Compilers are probably one of the least likely areas to profit from extensive LLM usage in the way that you are thinking, because they are principally concerned with correctness, and LLMs cannot reason about whether something is correct — they only can predict whether their training data would be likely to claim that it is correct.
Additionally, each compiler differs significantly in the minute details. I simply wouldn't trust the output of an LLM to be correct, and the time wasted on determining whether it's correct is just not worth it.
Stop eating pre-chewed food. Think for yourself, and write your own code.
I bet you could use LLMs to turn stupid comments about LLMs into insightful comments that people want to read. I wonder if there’s a startup working on that?
I'm screenshotting this, let's see who's right.
Actually, your whole point about LLMs not being able to detect correctness is just demonstrably false if you play around with LLM agents a bit.
For that, they would need to make LLMs not suck at easy programming tasks. Considering that with all the research and money poured into it they still suck at easy stuff, I'm not optimistic.
LLMs (or LLM assisted coding), if successful, will more likely make the number of compilers go down, as LLMs are better with mainstream languages compared to niche ones. Same effect as with frameworks. Less languages, less compilers needed.
I mostly disagree.
First, LLMs should be happy to use made up languages described in a couple thousand tokens without issues (you just have to have a good llm-friendly description, some examples). That and having a compiler it can iterate with / get feedback from.
Second, LLMs heavily reduce ecosystem advantage. Before LLMs, presence of libraries for common use cases to save myself time was one of the main deciding factors for language choice.
Now? The LLM will be happy to implement any utility / api client library I want given the API I want. May even be more thoroughly tested than the average open-source library.
Have you tried having an LLM write significant amounts of, say, F#? Real language, lots of documentation, definitely in the pre-training corpus, but I've never had much luck with even mid sized problems in languages like it -- ones where today's models absolutely wipe the floor in JavaScript or Python.
Even best in class LLMs like GPT5 or Sonnet 4.5 do noticeably worse in languages like C# which are pretty mainstream, but not on the level of Typescript and Python - to the degree that I don't think they are reliably able to output production level code without a crazy level of oversight.
And this is for generic backend stuff, like a CRUD server with a Rest API, the same thing with an Express/Node backend works no trouble.
I’m doing Zig and it’s fine, though not significant amounts yet. I just had to have it synthesize the latest release changelog (0.15) into a short summary.
To be clear, I mean specifically using Claude Code, with preloaded sample context and giving it the ability to call the compiler and iterate on it.
I’m sure one-shot results (like asking Claude via the web UI and verifying after one iteration) will go much worse. But if it has the compiler available and writes tests, shouldn’t be an issue. It’s possible it causes 2-3 more back and forths with the compiler, but that’s an extra couple minutes, tops.
In general, even if working with Go (what I usually do), I will start each Claude Code session with tens of thousands of tokens of context from the code base, so it follows the (somewhat peculiar) existing code style / patterns, and understands what’s where.
Humans can barely untangle F# code..
See, I'm coming from the understanding that language development is a dead-end in the real world. Can you name a single language made after Zig or Rust? And even those languages haven't taken over much of the professional world. So when I say companies will maintain compilers, I mean DSLs (like starlark or RSpec), application-specific languages (like CUDA), variations on existing languages (maybe C++ with some in-house rules baked in), and customer-facing config languages for advanced systems and SaaS applications.
Yes, several, e.g., Gleam, Mojo, Hare, Carbon, C3, Koka, Jai, Kotlin, Reason ... and r/ProgrammingLanguages is chock full of people working on new languages that might or might not ever become more widely known ... it takes years and a lot of resources and commitment. Zig and Rust are well known because they've been through the gauntlet and are well marketed ... there are other languages in productive use that haven't fared well that way, e.g., D and Nim (the best of the bunch and highly underappreciated), Odin, V, ...
> even those languages haven't taken over much of the professional world.
Non sequitur goalpost moving ... this has nothing to do with whether language development is a dead-end "in the real world", which is a circular argument when we're talking about language development. The claim is simply false.
This seems like a case of moving the goalposts because Zig and Rust still seem newfangled to me. I thought nothing would come after C++11.
Bad take. People said the same about c/c++ and now rust and zig are considered potential rivals. The ramp up is slow and there's never going to be a moment of viral adoption the way we're used to with SaaS, but change takes place.