You certainly don't need to be from 'top 3 college in US' at all. Neither did the creators of Zig (Andrew Kelly) and LLVM, Swift and Mojo (Chris Lattner) ever did.
All you need is genuine interest in compilers, the basic CS fundamentals including data structures and algorithms. Start by building a toy compiler and then study the existing open-source ones and make some contributions to understand how it all works.
The GNU gcc groups win is rarely considered these days, but kids who were stuck with masm, risc asm, or Basic thought they were heroes to the hobby.
Slowly, the FOSS compilers grew in features, and commercial entities realized it was less risky to embrace an established compiler ecosystem, and paid people to port in an experienced user-base.
Starting from scratch is hard, as people often make the same logical mistakes. =3
"There are two mistakes one can make along the road to truth...not going all the way, and not starting."(Prince Gautama Siddhartha)
Then there are the people building compilers accidentally, like in the <xyz>-as-code space. Infrastructure automation deal with grammars, symbol tables, (hopefully) module systems, IRs, and so forth. Only the output is very different.
And of course the toolchain space is larger than just compilers. Someone needs to maintain the assemblers, linkers, debuggers, core runtime libraries. If you are building a Linux distribution, someone has to figure out how the low-level pieces fit together. It's not strictly a compiler engineering role, but it's quite close. Pure compiler engineering roles (such as maintaining a specific register allocator) might be quite rare.
It's a small field, but probably not that obscure. Despite the efficiency gains from open-source compilers, I don't think it's shrinking.
Seriously? She's posting on her personal blog (that's what her substack is). Up front she says that one of the two kinds of people she's writing for are those who are interested in her personally.
> she needn't use
There are a lot of things that people needn't do, like absurdly talk about "attack vectors".
If it was her who posted it, she should've made it more clear that this is a 'personal journey' post. If it was someone else without her permission, then that should've not done so.
If you look at most of the discussion that emerged around it, it's about the relative technical merits of various compiler frameworks and techniques, and getting a job working with compilers, which I think most people expected to read about.
And do you really have no sense of how utterly absurd
> she needn't use the title of 'Becoming a Compiler Engineer' as an attack vector
is? Her title is perfectly reasonable and beyond any rational sensible intellectually honest good faith criticism.
The fault you seek lies entirely within.
Then you turn around and claim that this was a technical article after all. And no, the advice of 'you have to be among the three dozen people that get accepted to MIT to do math' is an unnecessarily elitist piece advice, that's not even necessary, as I (and a lot of others) pointed out there are a ton of good books and resources you can just get started with.
I know HN disallows editorializing, but the title reads like it'll be an useful resource on compilers. The writer obviously chose that title in context of her personal blog, where it makes sense, but I maintain that a strangers life update is not interesting to the rest of us, and if I were the writer, I wouldn't be too happy if someone decided to direct a ton of eyeballs to my personal post.
I'd implore you to look around in the thread, most people had different expectations and complained about the same thing I did. Still the post was useful, since an interesting conversation happened around the topic of compilers.
And I'd like you to realize, that you are just one person sharing his personal opinion, not some arbiter of moral goodness, please stop attacking me, and I feel bad for having to defend myself.
> First you chew me out for pointing out that this isn't a very good resource for compiler stuff as its more of an autobiographical post.
I never did any such thing. I didn't even bother to read past that false claim as I expect the rest to be similarly false and dishonest, and won't respond to anything else from that source.
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.
Anything else, you're better off starting off with LLVM. Especially if you want a compiler job.
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.
Doesn't mean it's good advice for someone getting into a field where LLVM is the technology used for 90% of the jobs.
Still I think once you get over the hurdle of SSA-ifying your procedural code, LLVM is all right, and seems to be a lot more feature rich (I might be stupid, but I don't see how to make stack maps in GCC).
Also GCC is very lightly documented while LLVM seems to have quite good docs and tutorials.
Just emit load and store instructions, and it'll be converted automatically.
What SSA gives you is substantially easier analysis and optimizations on the intermediate representation, so much that all compilers use it (yes, even GCC).
what exactly are those even? that she went to MIT? from her linkedin she's at some blockchain startup (for only 4 months) doing "compiler work" - i put it in quotes because these jobs actually happen to be a dime-a-dozen and the only thing you have to do to get them is pass standard filters (LC, pedigree, etc.).
> I was a compiler engineer at a startup in New York City. In that role, I worked on extending a preexisting open-source programming language.
> I am now a compiler engineer at a large, post-IPO tech company in the San Francisco Bay Area. I work on making programming languages run faster.
The 4 month startup is the former.