This document summarizes experience, opinions, and advice (and advice received from others) on looking for jobs in academia and industrial research labs in the field of computer science. It contains both general advice and information on three particular job searches: Wes’s search for a programming languages / software engineering position in the Spring of 2005, Claire’s search for the same in Spring of 2013, and Zak’s search for industrial research positions in 2014. It is structured as a how-to guide for graduate students.
Navigating This Guide
We have divided this guide into the major stages of a job search: finding jobs, preparing your application, interviewing, and finally deciding between offers.
This guide isn’t just for students on the job market! Even if you are not yet on the job market, the portions of this guide focusing on job opportunities and application preparation can be particularly helpful. Often, your career goals will inform choices you make during your doctoral studies, and thus being aware of the kinds of jobs available to you is important. It an also be helpful to know what goes into an application package to help you plan ahead. For example, if you are targeting an academic career that emphasizes instruction, you might plan for being the primary instructor (“instructor of record” at some institutions) while still a doctoral candidate. Conversely if you are most interested in a research-focused career, you might instead choose to bolster your resume with industrial internships. It’s much better to know what to expect and plan ahead than to regret not doing more.
As you begin your search, you will first want to think about the types of jobs that appeal to you. We discuss various job opportunities in computer science for students earning doctoral degrees. Then we give pointers for discovering open searches and how to read job postings.
Applications are reasonably uniform across academic institutions, and my aspects of an academic application apply to industrial research as well. In addition to providing some high-level guidance to get you started with your application materials, we also provide concrete examples of materials from successful searches.
We discuss common activities for interviews and give some hints on questions to prepare (both to answer and to ask).
Once you have reached the stage of considering job offers, it’s time to decide. We discuss handling overlapping deadlines and negotiating your salary and startup. We also offer words of encouragement as you consider which offer to accept.
- In 2005 Purdue got 380 applicants for 3 job spots in CS and held 14 interviews. In programming languages alone they got 20 applicants and held 6-7 interviews for one spot. In 2005 Virginia got 457 applicants for 4 faculty positions.
- Read the CRA Taulbee survey.
- Many people will tell you that if all else fails, use rankings to break ties. Better ranked schools will have better grad students and will find it easier to get grant money. One problem with this is that different people remember the rankings differently. Whenever you ask someone for advice, ask for a relative ranking of your schools. You’ll be surprised at how many complete inversions you receive.
- A personal recommendation or inside champion can be a great boost and can help in case of a tie. If you are trying to end up at school X and you know someone at Y who is friend with someone at X, having Y them briefly mention you positively to X won’t hurt you.
- Before the interview you should go over everyone on the faculty web page and find people with research interests similar to your own. Learn the names of their projects (at least!).
- Do not expect to accomplish any work (beyond giving a conference talk) between February and May.
- Send thank you emails to everyone, or at least your host, and follow up with schools in which you’re interested, especially if you have deadlines from other schools.
- This is easily one of the top three pieces of job search advice Claire was given: Collude with other people in your field on the market, if you can. The departments are colluding; you should too. You can share details about the offers, which keeps things in perspective. Also, it’s a really long/tiring process, so it’s nice to have someone to commiserate with. At first you will resist, mistakenly believing that you are in competition with these people and that it is weird. You are wrong. There are enough jobs to go around. Make friends, it’s good for you.
- Golden Rule: only drink at interview dinners if your host(s) is/are drinking (…and you want to, obviously. Claire is French, and likes wine with dinner). This is more difficult if you’re female because waiters at nice restaurants typically ask the lady if she wants something to drink first.
- Silver Rule: never say anything mean about anyone, especially not your current institution or other institutions at which you are interviewing. This rule applies even if your current institution is legitimately dysfunctional.
This guide has been written predominantly by Wes Weimer (University of Michigan), Claire Le Goues (Carnegie Mellon), Zak Fry (GrammaTech), and Kevin Angstadt (St. Lawrence University). Kevin is the primary maintainer of this version of the guide (there are older versions out there, but we anticipate this site to be most up-to-date.)
We welcome contributions from the community to this guide. The repository is hosted on GitHub. We will post instructions and guidelines soon.
Problems with the Website
Did you notice something wrong with the website (something not working or a typo)? Please create an issue on our GitHub project.
We would like to acknowledge all of our colleagues who have aided (directly and indirectly) in the creation of this guide. You may safely assume that all of the good ideas here come from them and that all bad advice comes from us.
Many wise and wonderful people were kind enough to grant Wes the boon of their wisdom on this subject. They include, but are not limited to:
- Alex Aiken (Stanford)
- Ras Bodik (Berkeley)
- Katherine Compton (Wisconsin)
- Richard Fateman (Berkeley)
- Jill Findeis (PSU)
- Stephen Freund (Williams)
- Patrice Godefroid (Bell Labs)
- Sumit Gulwani (Microsoft)
- Tom Henzinger (EPFL)
- Ranjit Jhala (UCSD)
- Iain Keddie (IBM)
- Jim Larus (Microsoft)
- David Liben-Nowell (Carleton)
- Tessa Lau (IBM)
- Rupak Majumdar (UCLA)
- Wayne McMullen (PSU)
- Greg Morrisett (Harvard)
- George Necula (Berkeley)
- Jens Palsberg (UCLA)
- Sriram Rajamani (Microsoft)
- David Shoenthal (Longwood)
- Raj Varma (Delaware)
- Mark Wegman (IBM)
- Donna Weimer (Juniata)
Claire did not consult many people for her contributions to this document, as she modified it after it had long been written. However, beyond Wes, she would particularly like to acknowledge the support and assistance of:
- Katie Stolee (Iowa State)
- Yuriy Brun (UMass-Amherst)
- Reid Holmes (Waterloo)
- Ivan Beschastnikh (UBC)
- Stephanie Forrest (UNM)
- John Knight (UVA)
… and the many others who offered advice and support throughout her own job search.
Zak had a similarly short list of consultations, as he targeted exclusively industrial research positions and arguably had a more “homogeneous” job search experience overall:
- Wes Weimer (UVA)
- Lori Pollock (UD)
- Stephanie Forrest (UNM)
- John Knight (UVA)
- Pieter Hooimeijer (Facebook)
- Ray Buse (Google)
- Joel Coffman (Johns Hopkins APL)
The text of this guide is released under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
This guide includes some publicly-available application materials for comparison and convenience. You could get them off of archive.org yourself if you so desired. All application materials remain the property of their respective authors and are shared here by permission.