Where to Apply in General
If you plan to be doing your job search interviews in the Spring of Year X you must submit applications in the Fall of Year X-1 (or by January 15-ish of Year X). You must decide where you will be applying early because different categories of institutions have different deadlines.
Despite the canonical “industry versus academia” phrasing, there are actually a number of choices:
Research Academia: This includes “top-ten” schools like MIT, CMU, Berkeley, Stanford, and Cornell as well schools with lower rankings like UC Irvine, Purdue, Rutgers and Virginia. This is the default type of application. Your applications will be due around December or January.
Industrial Research Labs: This includes Microsoft Research, IBM Research (T.J. Watson), Intel Labs, GrammaTech, Bell Labs, Sun Labs, NEC, BBN Raytheon, Google, and so on. Industry tends to feature “rolling interviews” (they aren’t on Academia’s semester clock) but they will do most of their interviewing for this type of position at the same time as academia will. We group Federally Funded Research and Development Centers (FFRDCs) like Lincoln Labs and MITRE in this category.
Industrial “Startups”: This includes Ph.D.-seeking high-tech companies in your particular area or recently-formed startups. Examples include Coverity, Green Hills, Fortify and EMC. These also generally follow Industry’s looser time clock. We have no personal experience with this type of work, but others suggest that it typically involves taking a research idea much further than you would in academia. Over the course of years you take a good idea from concept to product with all of the steps along the way (e.g., documentation, testing, shipping, marketing). Advice we’ve received suggests that this is actually very rewarding and that “right out of school” is a not a bad time to try it.
Non-US US-Like Research Academia: This includes McGill, Toronto, Waterloo, and UBC in Canada; EPFL in Switzerland; University College London in the UK; and lesser-known places like John Cabot University in Italy. These schools are located outside of the US but follow many US practices with respect to tenure and research and conduct classes in English. This is basically just like a job at a US university.
The trick here is that they tend not to take US applicants seriously. US applicants typically tend (for whatever reason – picking the known over the unknown, staying close to family, trying to use such places as safety schools, etc.) not to accept jobs at such places even when they are offered.
You should only apply for such positions if you’re serious about them (we both were). You’re making it harder for everyone else otherwise.
We recommend including an explicit notice in your cover letter and research statement detailing (in a few sentences) why you really want to go there and why they should take you seriously (e.g., you speak the local language, you have family there, you are not tied to the US, whatever). You can also emphasize these facts on the phone and in person. For example, Claire is of Francophone descent and speaks French fluently, facts that are relevant in Canada even outside Quebec. If you are granted an interview, be able to recall at minimum the name of the current prime minister and all of the provinces (states, departments, whatever) of the country in question.
If you are offered an interview or a position at such an institution, ask about immigration and the kind of help they’ll provide you and your spouse in crossing borders. Such schools have experience with these issues and can be quite helpful. It is also legitimate to ask about differences between academic systems. For example, salaries in Canada are 12-month, not 9; tenure is decided at 5 years, not 6; and the funding system is almost entirely different as compared to the States.
One more word on applying to Canada: Canadian CS and ECE departments are typically interchangeable for the purposes of an SE applicant, and thus you should apply to both. Evidently there is considerable variation in terms of how well the two departments get along at different schools. All schools will tell you that they get along capitally, especially as compared to all other schools, which are plagued by infighting and competition.
Non-US Research Academia: This includes places like ENS in France, Oxford in the UK and Tsinghua in China. These places may not conduct classes in English, usually have a different promotion and tenure scheme, and often have different requirements (e.g., they may expect a post-doc or a second degree and they are rumored to tend to hire “locally”). We can’t help you here, and in general if you don’t already know much more about this corner of the world than we do you shouldn’t count on ending up at one of these places. The one piece of insight we can add is that in the UK in particular, a post-doc is effectively mandatory.
Top-Tier Teaching Academia: This includes places like Carleton, Williams, Wesleyan, Oberlin and Brown. Faculty here still conduct research but undergraduate education is emphasized and the graduate program (and thus graduate students) will be smaller or non-existent. (As an aside, a university has a graduate program and a college does not.) Teaching at least 3 courses per year is common. The interview schedule for such schools is typically one to two months ahead of the schedule for Research Academia. Your application and letters of recommendation will be due weeks in advance as well. Thus if you plan on applying to such a school you must have all of your references ready early.
Teaching Academia: This includes standard small liberal arts universities that you probably haven’t heard of unless you’re from the locale. Shippensburg, Lock Haven, Haverford, Juniata and Ithaca College are all good examples. Here the emphasis will be on undergraduate education, undergraduate advising and scholarship (to the possible exclusion of the constantly-publishing-papers type of research). Teaching 6 courses a year is common. In addition, the salary will probably be around half of what you would receive from the Research Academia category.
“Instructor” Positions: Most top-tier schools (Berkeley and Virginia are both examples) have full-time “instructor” positions. These positions may or may not be tenure-track (and often are not). They often have a “social tenure” or “formal expectation of continued employment” at around the six-year mark that mimics tenure. They tend to cover teaching undergraduate “service” courses (freeing up the research faculty to do other things). In such a position you typically have no research requirements but a high teaching requirement of CS100-ish classes. If you are interested in one you must seek advice elsewhere (e.g., with the instructors or CS education faculty at your university).
Standard Industry: If you want to get a job as a normal Microsoft Developer, your Ph.D. certainly qualifies you. You don’t need this document in that case. Typically grad students aren’t interested in standard dev jobs, but it might be handy to remember that they’re out there if you’re jousting with a two-body problem. There is something to be said for having your work “end” when you go home for the evening or the weekend.
Post-Docs: Post-docs remain somewhat rare in Computer Science (at least in our neck of the woods, that is, Not Theory). Traditionally, European grad students apply for post-docs in the US and then apply for another job later. They have become more common in the US since 2008, as a number of schools froze hiring post-financial crisis. The low job supply forced otherwise qualified candidates to take post-docs and try again later. It then became more difficult for fresh PhDs to compete with such buffed CVs. That said, it is still possible (as of 2013) to acquire a tenure-track faculty position in SE or Systems without a completing a post-doc first. Post-doc positions typically use the same calendar as Research Academia, possibly offset slightly and with less strict deadlines (many people conduct a faculty search first before looking for a post-doc position). Taking a post-doc gives you time to flesh out your resume with additional publications. On the other hand, if you have taken a post-doc people will expect you resume to be flush with publications. The typical advice is that if you can possibly get a job without getting a post-doc, just get the job.
Having enumerated all of those possible options, we will now conveniently forget all of them except research academia and industrial research labs.
Ultimately you must decide what sort of positions you will apply for on your own. A research position is not inherently “better” or “worse” than a teaching position – they are made up of different things. Find out what makes you happy.
Where To Apply In Particular
Now that you know the sorts of jobs you’re looking for you still have to find actual jobs to apply for. Here are some approaches:
Word of Mouth: If you mention that you’ll be on the job market, people at conferences will tell you if their department is hiring. They may even offer to shepherd your application and make sure that it doesn’t get lost (since you’re at the same conference they probably like you and the sort of work you do, so this isn’t all that uncommon). You can expect two or three of these from a big conference. They’re not required, but can be extremely helpful. Claire gave two conference talks in the six months before applying for jobs and found this approach extremely useful. She did not end those talks with “I am on the job market,” but should have in hindsight.
ACM, CRA, and IEEE: The ACM, CRA, and IEEE Higher Ed all keep databases of CS jobs that you can search through. They have mailing lists that can send you daily or weekly postings of the most recent job ads. The blurbs there can be hard to follow, and are not always consistent with either one another or what is posted on department websites. We recommend that you get the names of places that are hiring from these databases and then go to the department websites (or whatnot) to double-check the details.
Rankings + Google: Get a list of department rankings. The two most popular are from US News & World Report and the CRA Taulbee Survey. Go to the department website of every school in the top N and see if they are advertising an opening. Note that they probably won’t have the advertisement up until the middle of the Fall Semester. Claire took the top 100 schools on one such list and put them in a spreadsheet, with a separate section for Canadian schools. She updated the spreadsheet when a school on the list posted a job to one of the above-mentioned websites. Before applying, she reviewed the schools that were hiring and filtered according to various preferences. She aimed to apply to approximately an equal number of schools ranked above and below her graduate institution (UVA).
If you choose to take a similar approach, Claire recommends modifying your starting list and filtering criteria as appropriate. Not everyone wants to work at a top-ranked school, so don’t feel like “top 100” is the only way to go. For example, Claire aimed to apply mostly to larger departments. You are likely to have different preferences.
Ask Around: Your advisor may forward job offers to you. Ask your recently-graduated friends if they know anyone who is hiring.
In 2005, Wes applied to 21 places and got 8 interviews and 5 job offers. In 2013, Claire applied to 28 schools and 1 research lab, got 10 invitations to interview, went on 9 interviews, and received 8 offers. Rumor has it that getting interviews at 33% of your places is average and that the best person in a particular field-year will get around 50%. A very strong candidate in Wes’s field-year (in his opinion the strongest candidate) applied to 30 places, got 17 interview offers, went on 15 interviews and got 7 job offers.
When considering these data points, note that Spring 2005 was considered to have “strong competition” and “many strong applicants” in PL/SE (almost everywhere Wes interviewed remarked on it). Claire’s current impression is that 2013 was a candidate’s market: the hiring freeze post-financial crisis was thawing, and the wave of candidates who had started postdocs in 2008 and applied for faculty positions 2 or 3 years later had thinned.
If you are in a “non-standard” CS field like HCI the numbers are probably completely different. If you are trying to solve the academic two-body problem you should be applying to at least 40 places. Some couples do 60.
Claire was told by different people at different points in the year that the number of positions to which she applied was (A) far too many, (B) far too few, and (C) exactly right. Make of that what you will.
Zak applied to 15 jobs, had interviews at five, and received two offers. For industrial-specific positions, he has three pieces of advice. First, cast a wide net by asking everyone you can about places they know that have hired people in the past. The idea here is that industrial jobs are somewhat less “searchable” than academic positions and word-of-mouth often tends to be much more helpful when finding places to apply. Second, consider places that might not immediately seem like a fit. It turns out that jobs in industry can be somewhat more fluid and that it is often easy to find a fit once you start talking to people at a given company. It certainly cannot hurt you to consider a wide range of companies initially and narrow the pool down once you start talking to people at said companies and getting a better feel for the types of positions they have to offer. Finally, the schedule for industrial hiring seemed very much more fluid than the somewhat rigid academic semester-based timeline. Some of the companies I initially talked to eventually contacted me about positions well into the summer of 2014, even after I had started my eventual job. Different companies work on different hiring schedules and there were several I was disappointed to find out simply weren’t hiring when I was looking for jobs. I’d recommend starting the search very early and contacting people at each potential employer to get an idea for how often and when they tend to hire.
Research Area and Where to Apply
All of the job postings you find in academia will use basically the same boilerplate ad copy (e.g., “we encourage all qualified applicants from all areas of computer science to apply, we are an equal-opportunity …”). Beyond that, there are two ways the ads are typically formed:
One says “we are particularly looking for people in bioinformatics and datamining, …”, at which point you shouldn’t get your hopes up unless you’re in those areas. Here’s a concrete example from Purdue’s 2005 search (emphasis ours):
- The Department of Computer Sciences at Purdue University invites applications for tenure-track positions beginning August 2005. Positions are available at the Assistant Professor level; senior positions will be considered for highly qualified applicants. Applications from outstanding candidates in all areas of computer science will be considered. Of particular interest are candidates in the areas of programming languages and compilers, software engineering, operating systems, data mining, and bioinformatics.
The other kind of ad says “our department has strengths in areas X, Y and Z and we are looking for people who can either augment or complement those strengths”, at which point you really have no information since they’ve covered all of the bases. Here’s a concrete example from Virginia’s 2005 search (emphasis mine):
- The University of Virginia ranks consistently as one of the top public universities in the country. Its highly valued Department of Computer Science has a diverse population with more than 300 undergraduate students, 110 graduate students, and 28 faculty members. The department offers baccalaureate, master, and doctoral degrees in Computer Science and Computer Engineering. The department is undergoing significant growth and programmatic evolution and aims to be one of the top departments in experimental systems research and the leading institution in undergraduate computer science education. Its existing strengths include algorithms, architecture, compilers, distributed systems, graphics, grid computing, mobile computing, networks, operating systems, programming environments, real-time and embedded systems, security, sensor networks, and software engineering.
If your work spans more than one subfield, carefully consider the way you position yourself and your work. Departments have areas in mind when they interview and assign applications to faculty in specific areas for batch-processing. Claire’s publication record was, as of 2012/2013, fairly evenly split between evolutionary computation and software engineering venues. However, she considers herself primarily an SE researcher, and wanted to be considered as such as an applicant. She thus pitched herself as an “SE person” who borrows insights from other fields (evolutionary computation/GP) as opposed to a person who floats in the void between research areas.
One notable exception to the “apply largely to schools specifically hiring in your area” rule is the class of “top 1” schools. CMU CS, for example, is huge, and its school of computing has multiple departments. Thus, its job ad is typically very general in its call, and applications are routed based on area to relevant departments or faculty. These programs (especially the very big ones) very rarely need to hire, and just do so when they find someone they like. Thus, even if their calls are open, it’s probably worth applying, because apparently you never know.
(Digression: Claire actually asked Wes if it was even worth sending applications to those places given that “it wasn’t going to happen.” He insisted she apply, which is funny in retrospect. She is of the opinion that her sincere belief that she wouldn’t receive an offer from CMU helped during the interview, because she wasn’t especially nervous or stressed out about messing up.)