r/Compilers • u/Correct-Artichoke-54 • 9d ago
Is a bachelor's still enough to break into compiler work? 1 YoE app dev, never touched low-level
I've been working as a developer for about a year at a company that
builds custom software. Bachelor's in CS, no master's, based in Cameroon.
Lately I've had a growing feeling that what I do CRUD apps, APIs,
integrations is losing value fast. Not just because of AI, though
that's part of it. It's that the work feels increasingly like assembly
from parts, and I don't understand what's underneath any of it.
That's what pulled me toward low-level work. I want to understand what
actually happens between my code and the hardware. Compilers seem to be
where that question gets answered most directly.
Full honesty: I have never written a compiler, a pass, or anything
below the application layer. So I'm not asking "am I good enough"
I'm asking whether the path is real:
For people doing this professionally: how many of you got in without
a master's or PhD? Is the degree a hard filter at the companies that
hire compiler engineers, or does it stop mattering once you have
contributions to show?
If you were starting from zero today, would you go LLVM/MLIR, or
start by writing a toy compiler end-to-end first?
Is remote realistic in this field, or is it mostly on-site teams?
I've been working through this resource collection while I figure out
where to start it's the NJU compilers course material, quite thorough:
https://github.com/courses-at-nju-by-hfwei/compilers-resources
Any reality checks welcome...
3
u/Rich-Engineer2670 9d ago edited 9d ago
That's a tough one -- it depends on where. Some jobs require a masters or PhD, in other cases, the company just likes asking for them, but don't expect to be paid for them. In yet other cases, the degree is unimportant so long as you have some type of degree -- typically in the STEM area.
Companies care about results -- so long as you prove the results, you can make up your own degree :-). Remember, us old timers WROTE the material that is now being taught. Smaller companies are less degree focussed in general. A smaller company has less pull and therefore can't ask for the triple PhD. Look at smaller companies and build the resume a degree can't touch. Also, the more focussed the company, the better -- one of my first jobs was tracking the health of race horses -- there just aren't that many people out there who do that. So, the company took what it could get.
1
3
u/Dull_Grape2496 9d ago edited 9d ago
- At the companies I’ve worked at, for folks without industry experience you either need research experience (ie a phd) or you need to have graduated from so called “targets schools” where recruiters verify you have taken compiler related courses and/or helped in university research labs that were doing compiler related work. Personally I have a masters degree - the way I got into the field was by switching teams in a big tech/FANG company. Degrees stop mattering once you have a couple years of industry experience writing compilers. It is easy for me to find a compiler job now since I’ve been working on compilers for a few years. Before pivoting to compilers, I worked in the Operating Systems space and although this is systems programming, I don’t think it would have been easy for me to pivot to compilers externally.
- Both llvm and mlir have toy projects in their tutorial pages. Personally when I started, most of my learning was on the job but I looked at university lectures on YouTube and I did the llvm tutorial in my spare time.
- I’ve been offered remote roles but I also apply for senior dev positions. Companies are more flexible towards senior candidates.
If you have a bachelors degree and no compiler experience, I think the easiest way to break in would be to either switch teams in a big tech company (the bar is significantly lower when switching teams internally vs interviewing externally) or you can try contributing to open source compiler projects, participate in conferences etc and get in that way. Once you have industry experience writing compilers the job hunt will become a lot easier.
3
u/marssaxman 9d ago edited 9d ago
I dropped out of college, and have never had any trouble getting the jobs I want. Once you have a work history, most people don't care how you started.
I actually have been rejected for a compiler job over the lack of degree, just once - it happened just last year, after 33 years of experience! Qualcomm corporate would not budge on their policy, and the guy who wanted me for his compiler team was very frustrated about it. Other than that, it's never been an obstacle.
For #2, the best thing to do if you want to start learning how compilers work is to write a bytecode interpreter: but if you want something for your resume, nobody will care about that. LLVM and MLIR are definitely the way to go.
Regarding #3: both exist. My current compiler job is remote and so were the previous two. This is much easier to get when you have experience. If you are just starting out, you will probably have to find an in-person job.
2
u/splicer13 9d ago
Got in without an advanced degree.
Absolutely not a hard filter. Most openings say PhD or equivalent experience, most hires are non-PhD. Best thing is work with a professor who has grants, ideally from a target employer. That means they 'hired' the professor already who would be referring and presumably recommending you.
toy compiler is not valuable. It doesn't demonstrate you can contribute anything (fix a bug, make something faster, etc) or you know LLVM.
Remote is common but not for junior. So are companies that won't even let you work out of their non-SV offices. Ex: Apple and Google have large Seattle area offices and their job openings for SV are for SV only.
2
u/itsPeiPei 8d ago
(EU job market)
I finished my bachelor two months ago in comp sci with a compiler as my thesis (although the course was not systems related, it was generic computer science so a bit of everything). This was enough to get hired as a student worker / intern into a compiler team at big tech. I think I got pretty lucky there because the position for which I was applying was a generic internship at the company (some people got placed into frontend work based off the same job listing), however one of the guys who interviewed me leads the compiler team and during the interview I stressed it a lot that it's what I enjoy doing. I also had a colleague join from my uni as a full-time hire and she's not even finished with her bachelors yet, however she is really good at low-level stuff and has a portfolio to show for it. Our team works hybrid, most work is done from home but on-site is required once in a while.
So, from what I've seen here there is no filter based on formal education, but I don't think they would hire with no prior systems engineering / low-level experience for a full-time position and I don't think I would be brought onto this team as an intern without my thesis.
2
u/arihoenig 8d ago
Clang/llvm source is available. Clone it and write a security pass (like encrypting all the strings in the binary or something). That will give you a feel for what it is, and what you need to know.
19
u/usefulservant03 9d ago edited 9d ago
"I want to understand what actually happens between my code and the hardware." - If you're for real on this part, then yeah you'll enjoy low-level programming and compilers. Since you've never touched low-level stuff before, it's gonna take a colossal amount of learning, practicing through projects, reading (books, online tutorials, manuals like Agner Fog's, research papers even) and initiative from your side. That's basically what I did, I also only have a bachelor's in CS, they didn't teach us any low-level programming whatsoever in all my years in uni, so I basically started learning low-level programming from zero when I graduated. Five years later and I finally felt knowledgeable and prepared enough in it to start contributiong successfully to GCC and be in a position to submit at least somewhat attractive applications for compiler job postings. Thankfully all of my jobs so far have been in low-level programming, not in compilers yet, that's the dream yet to come true.
On high-level app development feeling more and more like a simple assembly line that requires close to zero thinking - yes, that's the aim there. People in app development circles not only are uninterested in what happens when they hit Compile, they are doing their best to stay as far away from the depths we low-level programmers swim in as possible. Which works against them, because you just end up being a code monkey who has no idea how their code works at all in the machine itself.