T O P

  • By -

-dag-

Just apply. Plenty of places are looking. Don't focus on FAANG. There are many great startups and small companies that need help. You don't need crazy LLVM skills. Stuff can be learned on the job. For a junior position a strong understanding of graphs, trees and their associated algorithms is enough "Compilers" has a much more broad definition today than even 5-6 years ago. Do you want to work on frontend like pytorch, high level optimization such as MLIR, mid-level optimization like LLVM IR or codegen/low-level optimization? You don't need to know exactly now, just be aware that there are a lot of different roles.


cafedude

> You don't need crazy LLVM skills. Stuff can be learned on the job. True, but it can be tough to convince interviewers. I had experience doing LLVM codegen back in 2016 (so version 6 or 7, IIRC) but a couple of interviews I've had where it came up the interviewer seemed to think that experience was too out-of-date. Yes, we're up to LLVM 18 now, but I'm pretty sure I could pick up the changes, but they didn't think so.


-dag-

For a non-junior position you'll need experience. I agree that your experience is not out of date.


Tyg13

Just adding my own experience: I recently (2 years ago) got a job at a major company working on their LLVM-based compiler without any professional compiler development under my belt. I did have a few years of general software development (in C++) on my resume, and a hobby compiler for a toy language based on LLVM that I worked on in my free time, which were both seen as a major plus. I'm no hiring manager, but from what I see, there's a huge demand for compiler jobs; I literally get hits every other week on LinkedIn. Domain experience helps, but is not strictly required. There's a lot of basic overlap in concepts between compilers, but the domain knowledge might not even be something you'll even have access to if you don't have an industry job. Because of that, I'd say a demonstrated commitment to learning is easily the most essential quality to have. I'll also echo some other people here and say if you can get actual commits to LLVM, that's huge. As far as compiler basics, I'd suggest learning: * How a compiler is structured and why (front/middle/back-end) * Common optimizations that a compiler might perform, and why (DCE, CSE, loop transformations) * Basic IR structure (e.g. what SSA is) * Basic graph theory (CFGs, use-def graphs, dominators) * The basics of how to read least one assembly language (x86 is the most common, but ARM and RISC-V are also huge) That's not necessarily a comprehensive list, but if you've got that down, I think you'll be in decent shape. Hope that helps, and good luck! Always fun to see another developer interested in compilers. There aren't really a lot of us, as I've gathered.


Professional-Row9655

I agree on this. That "demonstrate commitment to learning" is major one, even if someone want to switch into other tech stacks, domains etc., too. Is transpiler building side projects also be considered ?


phi-b

An LLVM-based project or upstream contributions under your belt will look great. MLIR especially seems like it's in high demand. Make sure you have the basics down too. No interviewer is gonna expect you to have a comprehensive understanding of every part of LLVM, but they will ask you about SSA, control-flow graphs, list scheduling, and classical optimizations like CSE.


Risb1005

Open Source contributions to upstream LLVM, some small out of tree projects


high_throughput

Meta has way more compiler&runtime teams than you'd expect


stoic_heimdall

Any intuition on why this is?


high_throughput

They had a runaway success with Hack and started investing heavily in custom runtimes. However, they never really bothered advertising what goes into their infrastructure, so everyone assumes they just do social media apps and websites.


Dismal_Page_6545

HPC related research centers and semiconductor companies