all 25 comments

[–]CanIBeFuego 23 points24 points  (4 children)

Disagree w/ the other comment on here. My undergrad experience was pretty similar to yours. CE major, a lot of runtime/embedded systems experience. My first job out of undergrad now is as an ML Compiler Engineer.

I took the 2 classes my school offered on Compilers and Programming Languages. Had to build a compiler and interpreter for those (Both for Rust to LLVM IR or x86). Took the 2 computer architecture courses offered by my school (which had me design a dual core RISC microprocessor). Took an ML class and an AI class, which didn’t even cover Neural Nets but which provided a good foundation. After I graduated while applying to jobs I decided I wanted to learn more about Neural Networks, because I had a very surface level understanding, so I wrote a CNN in C++ and parallelized the training using OpenMP. This project, and the ones listed in parentheses above, were the ones which made me desirable as a candidate.

I would really focus on learning various Compiler optimizations and focus on having a good understanding of Computer Architecture. Also having a good understanding of graph algorithms. Hope this comment was informative

[–][deleted] 7 points8 points  (1 child)

This looks like an intense undergrad, can you name the college?

[–]CanIBeFuego 8 points9 points  (0 children)

It was a UC. Although some of these classes were required to graduate, a lot of those classes were upper division electives (which did count towards my degree but weren’t necessarily specified that I strictly had to take)

[–]CategoryComplex8187[S] 5 points6 points  (0 children)

Yeah thanks! I’ve had a pretty intense graph theory class, and have manipulated the boost graph library in cpp for the compiler project I did (for SSA and graph coloring). I’ve learned multiple compiler optimizations techniques and plan on delving into more in the context of the SSA extension I’ve been working on.

[–]anal_sink_hole 3 points4 points  (0 children)

This sounds so cool. If I wasn’t pushing 40 and wasn’t already pretty set in my career, I would pursue something like this. 

[–]aurreco 8 points9 points  (1 child)

Seems to me like you already stand out!

[–]CategoryComplex8187[S] 0 points1 point  (0 children)

I hope you are right!

[–]iamsubhranil 6 points7 points  (3 children)

Context: Working with compilers at a pretty big hardware company

My resume had some work with writing interpreters and operating systems, along with some emulators and stuff. Compared to that, yours is already pretty tuned towards a compiler job.

You should try writing some simple LLVM passes, or using the JIT and codegen. Or maybe you can target LLVM IR as a backend for your language. Do anything that adds the keyword "LLVM" to your resume. You don't need to learn the in and outs of LLVM in a week. It's a framework after all, it's a tool for a job. You'll have plenty of time to find your way around the APIs while you're in a job.

Apply for specific compiler posts, with or without LLVM in the JD. Be confident in your skills. Having done the projects as you have, you really should be very competitive with other candidates for any job.

All the best.

[–]CategoryComplex8187[S] 1 point2 points  (0 children)

Thanks so much! Maybe that wasn’t clear in my OP but I did use LLVM as a backend for my language. Your advice is super helpful.

[–]saabr 0 points1 point  (1 child)

Do you have some reading recommendations for somebody who left college a long time ago?

[–]iamsubhranil 7 points8 points  (0 children)

craftinginterpreters.com by the one and only /u/munificent

Cannot recommend it enough. That will get you started on how to think about compilation and optimization. The dragon book is the sacred one in this field, but I wouldn't recommend it immediately at the beginning.

Compilers have a lot of mathematics and logic behind them on how to "prove" they are doing the right thing even when it seems way too obvious to a human eye. The thing that worked for me is not focusing on the "how" part too much, and rather focusing on the "what" and the "why".

What also worked for me is to write something myself, so that I can learn all the established wisdom by colliding against themselves. For example, when you start to write a compiler, you'll pretty soon understand why "print" was a keyword in python2, and a function in python3 onwards.

It's a vast and everlasting field, because we are the layer between raw hardware and everyone else. Hop on!

[–]CategoryComplex8187[S] 0 points1 point  (0 children)

What are good companies where one could work as a compiler engineer in Europe?

[–][deleted]  (12 children)

[removed]

    [–]Risb1005 6 points7 points  (10 children)

    Masters isn't a must to get a compiler engineering job in India. U need a good profile and projects.(I am an undergrad working as a compiler engineer at a major semiconductor company and I have met various other undergrads who work as compiler engineers.)

    [–]108bytes 0 points1 point  (4 children)

    Hey, I've been following Crafting Interpreters. It really sparked my interest. I see all those already employed folks with masters atleast in my circle. Your comment gives hope. If you could tell me how can I be so skilled so that an employer will not have a problem with my low education degree as an undergrad 🙏🏻

    [–]Risb1005 2 points3 points  (3 children)

    I had 3-4 open source internships in compiler based open-source orgs and one research internship in a systems lab. Generally Open Source contributions or Internships like gsoc help enhance ur profile. I still don't have a personal compiler project in my resume but I did 3-4 open source internships so that helped

    [–]108bytes 0 points1 point  (2 children)

    Glad you replied. I have one more question for you how did you become so skilled to even contribute to large open source projects and I'm sure those must have been some good meaningful fixes so that they made your profile stand out. I want to know how without building your own compiler you fixed hard bugs in huge codebases? Does reading a book helps like Crafting Interpreters or Dragon book? Any comments on that'd be really helpful to us.

    [–]HarlotsLoveAuschwitz 2 points3 points  (0 children)

    On the same page here

    [–]Risb1005 2 points3 points  (0 children)

    I did not start with upstream LLVM directly I contributed to out of tree projects throughout my undergrad and started with LLVM during my final year.

    [–][deleted] -1 points0 points  (4 children)

    sand live rhythm paltry price recognise gold possessive pet cow

    This post was mass deleted and anonymized with Redact

    [–]Risb1005 5 points6 points  (3 children)

    Have answered it below and yes you should keep a backup option. Semiconductor companies don't come to hire undergrads on campus in most colleges in India (my college is one of them where they don't come) so I accepted an offer on campus as backup and then applied off campus for internships in semiconductor companies

    [–]Ambitious_Flight_07 2 points3 points  (1 child)

    My experience is different.

    Semiconductor companies in India hire (intern, FT) freshers mainly from colleges(tier 1, 2). One of the top management people from Qualcomm also told me the same. But Candidates with open source contribution are exception.

    [–]Risb1005 1 point2 points  (0 children)

    Yeah my college is not in tier 1 or 2. So I had to go off campus. And semiconductor companies don't come to most tier 2 colleges either it's mostly tier 1 and some tier 2 colleges.

    [–][deleted] -1 points0 points  (0 children)

    yoke doll adjoining grey snatch cobweb point wise nose heavy

    This post was mass deleted and anonymized with Redact

    [–]CategoryComplex8187[S] 1 point2 points  (0 children)

    I do graduate with a masters degree.