Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

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

Last week, a few colleauges and I were participating in career fairs at three major universities (two here in the US and one in England), where we were trying (without much success) to recruit for several compiler positions, ranging from internship, to entry-level, to more senior, for our team.

To our surprise, 80% of the students that we talked to responded somewhere a long the line of "I want to build Ansroid apps", when asked what they were interested in doing. (And the other 20%? "iPhone apps"! ) Some even expressed openly that they did not "want to build a compiler, ..., it's boring"; they said and I quoted.

So what is it about mobile apps that is so appealing to (young ?) "developers" these days? And by the same token, why is compiler such a"boring" topic to them? ( I don't necessarily think these two are mutually exclusive. One can certainly build a compiler for a mobile phone, but that's beside the point)

What can we do, if anything, to attract more talents, or even just interested candidates?

share|improve this question

closed as primarily opinion-based by gnat, Bart van Ingen Schenau, Eric King, Dynamic, Glenn Nelson Dec 17 '13 at 12:11

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

And before iPhone and Android, they would've probably all said something about making video games. I've found it's pretty normal to find the "oooh shiny objects!" people at those events, and know many who never bothered with career fairs. – Izkata Dec 15 '13 at 7:07
Why does everyone want to be an F1 driver, and no one a mechanic (or even a structural engineer)? I'd say fame, money, attention and excitement are reason enough for most people. – Kilian Foth Dec 15 '13 at 7:37
We used to hunt compiler people met on conferences, people known in the open source communities, etc. Just random hunting in the universities is pretty pointless. And, compilers are perceived as "boring" thanks mainly to the heavily irrelevant books like the revered Dragon Book, which are still used to teach compilers in the universities. – SK-logic Dec 15 '13 at 7:49
P.S., on a positive note - said students are not expressing a slightest interest in coding CRUD stuff in the enterprise neither, although a vast majority of them will end up there anyway. – SK-logic Dec 15 '13 at 7:51
One problem I could see, on my end, is wondering where my career goes from 3 years working in compilers. The job market for that skill seems smaller on the surface than most others. If you could sell on that it might not hurt as well. Presumptuously it would lead to embedded or system level work if compiler work wasn't available. – Rig Dec 15 '13 at 15:07
up vote 12 down vote accepted

Why is it so hard to recruit for compiler[-related] jobs?

Better phrased, your question is asking why it is hard to recruit for jobs that aren't currently trendy.

And the rephrasing gets at the core of the challenge - trends. In and of themselves, there isn't a whole lot wrong with trends. They'll always occur to some varying degree.

Any company or programming domain that's outside of what's currently trendy will have a bit harder of a time in recruiting candidates. It's just the nature of the beast.

But trends come and go. For example, in the late '90s and perhaps early '00s, RedHat was on a tear and "everybody who was anybody"* wanted to work there. Then the economy changed up a bit, attention focused elsewhere and the industry picked up new darlings for the popularity contest.
* Okay, that's a bit of hyperbole but that's the nature of trends

What can we do, if anything, to attract more talents, or even just interested candidates?

First off, make sure that you're promoting the interesting bits of those jobs. Every job has grunt work associated with it, and we put up with those aspects for the fun parts of our jobs. Make sure you lead with the fun parts when describing the gig.

Second, make sure you promote the fun and interesting aspects of your employer. For example, if you're recruiting in both the US and England then advertise your international presence. If you send developers overseas for periods of cross-training, point that out. Many developers are interested in opportunities to travel internationally and increase the breadth of their skills.

Third, make sure you're getting your company's name out there outside of recruiting season. Trends come and go, but you combat the trends by making sure the company's brand has at least been heard of in the off-season. There's a really large, international software firm based in Armonk that advertises constantly in order to make sure their name is known. You probably don't have the same advertising budget as they do, but you can target the campuses you're interested in recruiting from.

Fourth, always hire someone new every year especially in the lean years. It doesn't have to be the same amount as a growth year, but you need to hire at least one person. That same firm I mentioned has that type of policy in place for a host of reasons. Word will get around campus that you guys always have a slot available even in the worst of times. That security and economic strength will generate interest in your company.

Fifth, make sure that the benefits and salary your company offers are competitive. Word does get around about the quality of offers made. The students and the campus career center know who's cheap and who's competitive. Don't be cheap if you're not getting enough candidates.

Sixth, make sure that students know what skills you're looking for. They will have limited time actually developing compilers, perhaps only a semester or two of experience. If their perception is that you are looking for years of experience or only those who have done deep dives into compilers, then they're not going to apply for those jobs. Likewise, candidates may need a degree of reassurance that you'll help train them in bridging from academic compiler design to industrial compiler work.

Finally, consider donating equipment or software or both to the engineering labs. If the students don't know who your company is, then provide them the opportunity to find out about your product. Sun Microsystems did really well for a while with this approach. Giving free or low-cost gear to universities is a great way to make sure students know about your kit.

share|improve this answer

Well first, I'd like to break the stereotype: I'm 17 and contribute to/have written several compilers and rather like them.

To answer the question, a teenager's primary interaction with a computer isn't examining an IL dump of some compiler, but through apps/websites/video games. So it's only a natural step that if someone decides they want to start programming, why not make something they already "know" a bit about and like.

It doesn't help that there's a strong perception that real jobs are centered around the web and games. So already, you're fighting the "Oooh shiny" response of teenagers and the fact that they think that's where the money is.

Finally, no one's teaching compilers anymore! Many compilers courses are relegated to optional graduate courses. Even when many take a compilers course, half of the course is spent on the parser, which is arguably one of the least interesting bits of a compiler. So those who make the effort to register come away going, "Ok, We write the parser, then magic, then codegen". Not exactly thrilling compared to Angry Birds.

Now recruiting is generally hard, but I think you'll find it harder than most since many undergraduates who are willing to devote their own time to figuring out how to write or contribute to a compiler already have plans. In which case Joel's advice on getting good devs is relevant.

share|improve this answer
My sentiments exactly: the Dragon Book approach to teaching with all the emphasis put on parsing is simply ruining even that marginal interest in compilers that could have been. – SK-logic Dec 15 '13 at 7:53
Hire @jozefg. There problem solved. – ThinkingMedia Dec 15 '13 at 14:37
Yeah. We used the dragon book in university. Couple that with a lousy teacher and the class was nowhere near as interesting as I had hoped - kind of ruined the interest for me. – MetalMikester Dec 15 '13 at 14:37

From the perspective of a young(ish) compiler guy, one thing not discussed here is the question of where people get their introduction to compiler technology.

If you're lucky, they have a project or a class which discusses compilers. Maybe a course on computer architecture or internals which introduces them to varying layers of abstraction and optimization.

If you're unlucky, then they hear from their friends that compilers are: A solved problem, boring, without impact, too low-level, too small an employment market etc.

My university has a professor who still works in compilers and he's the reason that there are still people coming out of that university with experience and interest in the area. Even better, he has many industrial connections, and uses them to help students get work experience in the area.

So that could be one important route: Start making friends in the faculty at universities you're interested in: Start trying to get interns and research students associated. You'll start building a talent pool.

share|improve this answer

Boring Company Because they think building a mobile app is the path to the next "big" thing, so companies who build those, are more exciting and offer greater opportunities. Let's get funded, go public and become millionaires. Can't do that with a compiler. Certainly, the best thing about your company isn't getting to build compilers. Or is it?

Boring People It's hard to recruit the types of devs you need, so step up your game. Get more creative in your recruiting by attaching yourselves to professors who teach compiler classes. Find their best students and court them. Don't wait for career day. Everybody wants to be wanted and to prove that, offer a signing bonus for doing an internship.

Being Marketable they may not see a career path in your product/technology area. It's up to you to convince them this isn't a dead end. You want to build mobile apps kid? You better learn how to work with a shortage of memory. You will learn that at our company to such a level it will put you in the top 1% of mobile devs should you choose to switch. Make sure they understand the pitfalls of some mobile dev jobs.

Writing Code for People Sometimes it can be more liberating to write code that writes code. Avoid the customers that want you to add features so useless they suck your will to live. Can you fix that line in your GUI that is a pixel off?

Steve Jobs approached the CEO of Pepsi and asked, "Do you want to sell sugar water all your life or change the world?" I wonder what Dell would have said? "Come with us and we'll save 3 cents on every chip we buy!"

share|improve this answer

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