> 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).
Rephrased: If a graduate with relevant coursework from a top institution struggles to find a job in a particular field, what sort of chances do the rest of the graduates from less known colleges have?
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.
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!
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 assume they mean those firms hire compiler engineers to work on the specific languages they use. Jane Street famously uses OCaml for pretty much everything. Not sure about Bloomberg, though a quick search shows that they have Bloomberg Query Language and Bloomberg Scripting Language, both proprietary.
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.
True, the scholastics were an effort to derive theology from philosophy and logic and are how Asian and Greek philosophy and culture became part of the Western world, which then evolved into Western logic, Math and Philosophy.
The cultural importance of education in Jewry, the preservation of that in Christianity and that Christians can never take any understanding of something for granted and always need to question everything, because the Universe (being created by God) will always be more complex than any current knowledge of it, is the origin of the Western concept of Empirism and formalized (Natural-)Science, even if a lot of modern Atheists like to sweep that under the rack.
A lot of early and also late scientists researched as a part to understand the world their God created, meaning they understood it as a approach to worship God.
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.
Thanks, I looked at some of those examples. Several I saw were suspiciously similar, and I wonder how they got that way. Others didn't look suspicious to me.
I wonder whether the similar ones were the result of something innocent, like a shared writing prompt within the workshop both writers were in, or maybe from a group exercise of working on each others' drafts.
Or I suppose some could be the result of a questionable practice, of copying passages of someone else's work for "inspiration", and rewriting them. And maybe sometimes not rewriting a passage enough.
(Aside relevance to HN professions: In software development, we are starting to see many people do worse than copy&revise a passage plagiarism. Not even rewriting the text copy&pasted from an LLM, but simply putting our names on it internally, and company copyrights on it publicly. And the LLM is arguably just laundering open source code, albeit often with more obfuscation than a human copier would do.)
But for a lot of the examples of evidence of plagiarism in that document, I didn't immediately see why that passage was suspect. Fiction writing I've seen is heavily full of tropes and even idiomatic turns of phrase.
Also, many stories are formulaic, and readers know that and even seek it out. So the high-powered business woman goes back to her small town origins for the holidays, has second-chance romance with man in a henley shirt, and she decides to stay and open a bakery. Sprinkle with an assortment of standard subgenre trope details, and serve. You might do very original writing within that framework, but to someone who'd only ever seen two examples of that story, and didn't know the subgenre convention, it might look like one writer totally ripped off the other.
In the 80's I wanted to be a compiler engineer. Got a masters degree in it and published a paper on LR parsing with original research in the Journal of ACM. The opportunities back then were scarce. Over nearly 15 years I found a couple of gigs that consumed a few years. But it was hard and time consuming to develop the knowledge and skills. I used to study the PCC and GCC source code! I worked on GUIs between these gigs and when Java/Swing dropped, I switched full-time to GUIs. There were far more opportunities and I enjoyed developing GUIs for a time so it was a good switch.
Starting a channel just to stand out and land a first job really puts a spotlight on the sad situation of hiring in this job market. Imagine if you needed to record videos of yourself building and driving a car to land a job as a mechanic.
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.
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.
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
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.
For those unaware or may find her name familar, Rona is known for her plagiarism scandal. She blocks anyone on Twitter who asks about it or the book she got a substantial advance for but didn’t publish after this scandal came to light. She seems to have walked away from it - this utter elite impunity makes me sick.
Most crypto projects these days (and even Bitcoin, actually) are based on some kind of virtual machine. For example here's the first Google hit for "ethereum bytecode":
But writing smart contracts and whatnot directly in bytecode sucks; so, you make a compiler so you can write them in an (invented) higher-level language. For which you might as well hire a "compiler engineer" as any other kind. :)
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.
What does the other side look like? How would you go about finding people interested in this space, and who are not yet part of the LLVM and GNU toolchain communities (at least not in a very visible way)?
I feel like the comments are too negative here. Yes, it may not be a step by step guide, but for niche roles like this, I feel no such guide could exist and only self study and some company taking the opportunity on you are the only ways in which one could get a systems/low-level job.
This is honestly one of the worst blog posts I've ever read, and probably does a disservice to representing MIT grads (who shaped my entire career 20-30 years ago). Anyways, as someone who was in this space, my 2 pieces of advice are: 1) either get a PhD in the field (and Apple would pick you up relatively easily) 2) have a small history of contributing to languages like rust, go or be prominent on the clang committees, llvm, ghc.
At least up until 5 years ago, the bar to join compiler teams was relatively low and all it required was some demonstration of effort and a few commits.
Not sure why they down voted you. I agree about the quality of this post. It is low and lack substantial advices. Too many words. I suspect they used AI to generate text maybe.
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?
A system outputting correct facts, tells you nothing about the system's ability to prove correctness of facts. You can not assert that property of a system by treating it as a black box. If you are able to treat LLMs as a white box and prove correctness about their internal states, you should tell that to some very important people, that is an insight worth a lot of money.
As usual, my argument brought all the people out of the woodwork who have some obsession about an argument that's tangential. Sorry to touch your tangent, bud.
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.
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.
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...