12 ms·
Becoming a compiler engineer
- munificent 11mo agoTangential 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.
- ge96 11mo agoI'm thinking "et tu btrfs?"
- laidoffamazon 11mo agoIt was supposed to be out years ago! She got a substantial advance but presumably delayed it due to the plagiarism scandal
- wavemode 11mo ago> plagiarism scandal Do tell
- laidoffamazon 11mo agoFrom one of the publishers she worked with - https://www.halfmystic.com/blog/you-are-believed https://www.halfmystic.com/blog/you-are-believed
- pkd 11mo agoI'm almost more interested in how a 20-something with no apparent prior pedigree lands a Simon and Schuster debut novel contract!
- thereitgoes456 11mo agoShe lost that contract after being found guilty of plagiarism. That’s why she avoids mentioning her considerable writing career at all
- jasonjmcghee 11mo agoIt's fiction what is she plagiarizing
- thereitgoes456 11mo agoWhat I just said is a fact. Look it up if you like
- defrost 11mo agoThe similarities are intriging but not compelling. https://docs.google.com/document/d/1pPE6tqReSAXEmzuJM52h219f30oMDBWx80jlJ2KOCiY/edit?pli=1&tab=t.0 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 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.
- sarchertech 11mo agoOne 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.
- phendrenad2 11mo agoNot 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.
- est31 11mo agoLLMs (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.
- cube2222 11mo agoI 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.
- achierius 11mo agoHave 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.
- phendrenad2 11mo agoHumans can barely untangle F# code..
- 11mo ago
- thxforthepost 11mo agoMade 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/ https://craftinginterpreters.com/ [2] https://interpreterbook.com/ https://interpreterbook.com/
- moregrist 11mo agoIn 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/ https://www.cs.princeton.edu/~appel/modern/java/
- _f9cu 11mo agoare you sure the content of the article is from some other article, quite a old one. as far as i remember
- zerr 11mo agoMost (all?) of compiler engineering jobs I've seen were about writing glue code for LLVM.
- achierius 11mo agoAll the ones I've had, and most of the ones I've seen, we for bespoke compilers and toolchains for new HW / specific languages
- almostgotcaught 11mo agoLol I love these clueless takes. I'm just curious who you thinks actually writes the stuff within LLVM? Chris lattner? Lololol
- goatsi 11mo agoStep 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.
- wffurr 11mo agoGreat series about whether programming is “engineering” or not: https://www.hillelwayne.com/post/are-we-really-engineers/ https://www.hillelwayne.com/post/are-we-really-engineers/
- chubot 11mo agoVery 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
- munificent 11mo ago> 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.
- verandaguy 11mo agoWhile 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).
- ekidd 11mo ago
- alyxya 11mo agoIt'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.
- torginus 11mo ago[flagged]
- rurban 11mo agoLLVM 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.
- torginus 11mo agoHonestly 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.
- fooker 11mo agoSure 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.
- rurban 11mo agoI'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.
- fooker 11mo agoYes, I'm sure you got a compiler job without touching LLVM. Doesn't mean it's good advice for someone getting into a field where LLVM is the technology used for 90% of the jobs.
- 11mo ago
- rvz 11mo agoGreat 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.
- zdragnar 11mo agoI 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.
- silcoon 11mo agoInteresting 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.
- eredengrin 11mo agoI'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-and-best-practices-clang-and-middle-end-libraries-9781838829728 https://www.packtpub.com/en-us/product/llvm-techniques-tips-...
- silcoon 11mo agoThanks! I hoped that someone would come with some suggestions
- achierius 11mo agoI can at least give my favorite and least ... - most enjoyable: fiddling with new optimizations - least enjoyable: root-causing bugs from customer crash stacks
- anon291 11mo agoI'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.
- vatsachak 11mo agoRad trad Catholics makes sense because Catholic theology involves a lot of logic
- 1718627440 11mo agoTrue, 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.
- trvthnvke 11mo ago[flagged]
- mattrighetti 11mo ago> 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.
- 1970-01-01 11mo agoStarting 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.
- ndesaulniers 11mo agoIf 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 https://github.com/ClangBuiltLinux/linux/issues LLVM itself: https://github.com/llvm/llvm-project/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22 https://github.com/llvm/llvm-project/issues?q=is%3Aissue%20s...
- calvinmorrison 11mo agobeing 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?
- achierius 11mo agoThere'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
- tiu 11mo agoThe 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/ 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/ https://bernsteinbear.com/pl-resources/ [1]: https://lowlevelbits.org/how-to-learn-compilers-llvm-edition/ https://lowlevelbits.org/how-to-learn-compilers-llvm-edition... [2]: https://www.youtube.com/@compilers/videos https://www.youtube.com/@compilers/videos
- mattgreenrocks 11mo agoGood 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. :)
- doix 11mo agoSemiconductor 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.
- fithisux 11mo agoIn 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.
- rrgok 11mo agoRIP my dreams of becoming a professional parentheses balancer
- matt3210 11mo agoIs this an ad or something? I was hoping for technical details :(
- _f9cu 11mo agoThis is an old content and reposted in this article.
- supriyo-biswas 11mo agoI 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.
- laidoffamazon 11mo agoFor 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. https://www.halfmystic.com/blog/you-are-believed https://www.halfmystic.com/blog/you-are-believed
- amelius 11mo agoIt's even harder to become a Compiler Rockstar. I know only three, Stallman, Peyton Jones and perhaps that guy from Svelte.
- epolanski 11mo agoHejlsberg too (Turbo Pascal, C#, TypeScript). There's probably hundreds of other brilliant engineers more with insane impacts that never got any popularity.
- silcoon 11mo agoGuy Steele, Rich Hickey, James Gosling, Kernighan and Ritchie, Guido Van Rossum, Bjarne Stroustrup. Harder because the bar is really high.
- hasbot 11mo agoFor compiler fans, that's a very incomplete list. I'm rusty but off the top of my head, I see you're missing Walter Bright and Terrence Parr.
- quuxplusone 11mo agoChris Pressey, Arthur Whitney, Chris Lattner...
- _mocha 11mo agoThis 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. (Disclosure: am retired now)
- thorn 11mo agoNot 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.
- fweimer 11mo agoWhat 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)?
- rs186 11mo agoI cannot recall the last time (if ever) I saw any article on HN that has a "this is a photo of me" in the middle of it, coming out of nowhere.
- zvmaz 11mo agoMaybe a less subtle self-promotional blog post, as compared to others.
- hasbot 11mo agoIn 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.
- getnormality 11mo agoAccording to LinkedIn, the author landed at a small crypto startup. Any guesses as to why this startup needs a compiler engineer?
- quuxplusone 11mo agoMost 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": https://ethervm.io/ https://ethervm.io/ 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. :)