Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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
1  
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

4 Answers 4

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
3  
just checkout the course of MIT OCW –  segfault Jan 26 '11 at 16:42
2  
@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

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

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

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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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