Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I was motivated by the Compiler Construction As A Subject question and thought I would ask this one.

I have heard from a few people that they have a good "compiler team" (don't ask where I heard it, I can't remember), so that led me to wonder, how does one get a job on such a team?

I know there are classes at in the Undergrad programs and such, but is that something that a graduate degree would be the minimum (such as a Masters at the least)?

I am starting my Masters in Computer Science in two months and the school I am going to has two compiler classes, would that be enough to get a job doing compiler development or would more time need to be invested in it?

share|improve this question

closed as off-topic by Ixrec, Snowman, jwenting, GlenH7, TZHX May 13 '15 at 22:01

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Ixrec, Snowman, jwenting, GlenH7, TZHX
If this question can be reworded to fit the rules in the help center, please edit the question.

Participation in an open source compiler project (e.g., llvm) would be a great advantage. – SK-logic Jan 26 '11 at 14:36
Ditta @SK-Logic I am currently writing a compiler for my IB CS final. Getting experience writing compilers is probably the best way.... as with anything really. – Glenn Nelson Jan 26 '11 at 20:02
up vote 12 down vote accepted

Well, compiler development is ultra hardcore which means that it requires lots of patience, passion and solid knowledge. Don't confuse patience, passion and solid knowledge with having any kind of degree. We've seen several applicants with Masters degree who couldn't even recognize strlen() in four lines of C code.

Definitely attend those classes and gain practical knowledge. Maybe you won't even like compiler development, but experience you gain will help you get some other very interesting development job.

share|improve this answer
thanks for the response. Would you give a chance to somebody that was self taught and had no academic CS background? – Jetti Jan 26 '11 at 15:28
just checkout the course of MIT OCW – segfault Jan 26 '11 at 16:42
@Jetti: I would give a chance to anyone having made significant contributions to an open-source compiler over the years, whatever their backgrounds :) – Matthieu M. Jan 26 '11 at 17:59
@Jetti: I definitely would once they bring evidence they have real knowledge. For example, if they wrote tests for a compiler optimizing code generator they are likely worth more than an average university graduate. – sharptooth Jan 27 '11 at 7:24
It gets even more interesting when the compiler is written in its own language. – ott-- Jun 3 '13 at 19:27

The first step is to have a good CS background - potentially, the more the better, but at least to have completed a BSc Honours degree. There is actually some justification for this, in that compilers (generally, language translators) and the associated techniques (lexing, parsing) are well studied fundamentals of computer science.

I believe that substantial industrial (including open source) compiler development would of course mitigate a lack of academic credentials - but depends largely on the background of the candidate. Note that compiler development here would also cover interpreters and related tools for parsing.

A general competence in software engineering is needed. Domain knowledge of applications needing good compilers (e.g. scientific computation, game development) or experience of assembly language programming above and beyond a general programming background in a high level language is also a plus. Expert level knowledge of the language the compiler implements is also a plus.

Disclaimer: I am a compiler developer, and have been involved in interviewing candidates.

share|improve this answer

Now-a-days, tools like Flex, YACC and several similar tools had made the compiler construction much simpler. If you want approach it like a hobby since it fascinates you, then these tools will help you and you would be able to build a decent compiler front-end in a month.

Dragon Book is one of the all time favorite book for anyone who wants to self-taught the compiler construction. And as you move on you move on spend sometime reading the opensource compiler codes.

share|improve this answer

If you are serious about a career in compilers, I believe that you at least need formal education in language theory, especially type theory, formal semantics and computability theory. These areas would be difficult to learn outside of an academic setting. For the most part, compiler construction per se is a subject a smart dev can learn the basics on his or her own. However, if you want to work on cutting edge compilers that use extensive semantic analysis and instrumentation for security and optimization, you would probably need at least a master's thesis in this area.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.