The post-academic (computer science) job market
After too many years sitting on the fence between academia and the rest of the world, I finally decided to take my leave. The reasons are numerous, but that’s another story for another time — if you’re curious, take a look at some of the “quit lit” I found particularly insightful.
When you’re an academic, industry is often portrayed as a job “over there” and a dichotomous choice between research and not research — or worse, the result of failure or selling out. This couldn’t be further from the truth:
- In computer science and related fields, there is enormous opportunity to conduct cutting edge research in companies. In fact, much of this research is inaccessible to universities without industry collaboration.
- Once you take a look “over there”, you discover that industry jobs actually cover a wide gamut of different positions, at organizations of different sizes, doing many different things. The choices are quite heterogeneous compared to the research process in academia.
- Deciding to leave academia is most definitely not failing or selling out! It takes a particular type of person to be a good academic, and if those are not your strengths, the world is better off by you doing what you do best.
This article distills my exploration and reflection on the post-academic job search, with the goal (at the risk of generalizing) of providing an informative overview. I didn’t know much of this when I started my search, so I hope it can be useful to you in yours.
Deciding to leap from the ivory tower
Before you even start your job search, the process of deciding to leave academia can be disconcerting. Unless you have an exceptional advisor or mentor, the academic environment is set up to make you feel like you are giving up or failing — after all, you probably enjoyed lots of success in college and got into a highly competitive PhD program. As you think about leaving, you may experience waves of anxiety and aggravated impostor syndrome, which are difficult to overcome. For many people (including myself) approaching the end of their PhD or postdoc, it’s common to feel rather worthless and wonder if you are even capable of getting anything done. Trust me: this feeling will not remain forever. It will pass.
Even if you don’t end up doing research per se with your PhD, you’ve acquired valuable skills that are important to any career. Perhaps the most significant is that you have learned how to learn, an important meta-skill enabling you to jump into unfamiliar areas and figure out how to solve ill-defined problems. With your experience giving talks and writing papers, you hopefully also have above-average communication skills.
One skill that might not be as practiced, as academics often work in isolation, is your ability to work with other people. In academic research, you often work alone or in small groups because of hyper-specialization or perceived “credit dilution”. In companies, you won’t get anything significant accomplished by yourself. Interpersonal and management “soft” skills are essential to your productivity, and are predominant over technical skills at higher levels of seniority.
What do you really want in a job?
Having a few years of research experience under your belt can leave you with a broad — or let’s face it, strange — set of skills, and that was certainly true for me as I started my job search. My PhD and postdoc in “computer science” actually belied data science skills focused on behavioral experimentation and causal inference, software engineering focused on real-time web apps (for building those experiments), applied machine learning using all kinds of algorithms, and loads of other auxiliary knowledge. At some companies, I’d likely be rejected as wholly overqualified, and at others, I’d be kicked out the door as a jack of all trades, master of none.
I went through a long (and involuntary) period of self-reflection to understand what I’d find meaningful and engaging. When graduating college, I and many of my peers picked our path based on how prestigious it was or how much money it paid. Having gained a little more wisdom since then, I decided I wanted to find something that would yield (1) practical impact, (2) substantive applications for my broad skill set, (3) a mission that I could get behind, and (4) great colleagues and a culture that put people first.
Job search leads
A regularity that I’ve often heard, and definitely applied to me, is that your network is the most important factor for a job search. It was almost impossible for me to get interviews at companies big and small without having a connection there, despite an undergraduate dual degree in computer science and business, a computer science PhD, and significant activity on GitHub and StackOverflow. In general, dropping your resume/CV online mostly goes into a black hole. Instead, think about who you know at companies you might be interested in and reach out to them. Referral hires are preferred to all other leads, so a resume that your friend submits for you is much more likely to lead somewhere.
Your friends at companies can also be a valuable resource for evaluating what types of positions you might like, by doing informational interviews. One of the best ways to discover if you’d like something is to talk to folks in your network who have similar interests and made the transition, before committing to official interviews. Most people love giving advice and talking about themselves, so this is less of a burden on them than you might anticipate. Invite an old friend or acquaintance to coffee — how do they like what they are doing now?
In general, consider all the following approaches for finding leads:
- Your network. Simply reaching out to people you trust and letting them know you are looking for a new position, will keep you in their mind when appropriate opportunities cross their path.
- Feeder programs/“boot camps”, such as Recurse Center (formerly Hacker School) for software engineering and Insight Data Science for data science. Boot camps have extremely high variance in quality — you’ll want to avoid the bottom 90% of them as they’ll charge upwards of $20,000 in tuition for very little. The best ones are free to you and earn money through placing you in a job.
- Recruiters, both the traditional kind and startups like TripleByte (see below).
The Options
My primary options could be boiled down to these categories:
- Software engineering vs. “data science”.
- Big company vs. small company. I assume that small tech companies are growth-oriented (startups), as in the majority of cases.
At the risk of grossly overgeneralizing these comparisons, I’ll try to paint a picture from my experience and others I’ve talked to.
Software Engineering or Data Science?
The reason I use “data science” in quotes is because it’s a highly overloaded term, meaning different things to different people. If you ask an economist, you will hear a lot about identification strategies. If you ask a theoretical computer scientist, you might get something about stream processing. And that doesn’t include all the usual suspects: data science can refer to various kinds of machine learning, cloud computing, database & systems engineering, experimental design & causal inference, data visualization, or even straight up running linear regressions on CSV files in Excel.
As a result, jobs in “data science” range from highly organized operations like Facebook’s Core Data Science where many people have PhDs, are well-trained in statistics and machine learning, and have plentiful computational resources — to “data janitor” jobs where a lot of work is more manual than computational and cargo cult processes prevail. You should use your bullshit detector here: if someone can’t explain to you what they are doing with their data, it’s probably not because it’s top secret — it’s because they don’t actually knows what they’re doing!
Although big companies can afford to be opaque, small companies need to be transparent to attract talent. They’re a lot more risky, so review them critically like you would review a paper!
Software engineering positions, while being slightly more standardized than data science roles, still run the gamut from front-end web and UX; to back-end, databases and infrastructure; to embedded systems; to numerical computing and machine learning engineering. At the most senior levels and/or smaller companies, the line between SWE and data science is blurred: you will probably be doing substantial engineering work in support of making it easier to get insight from your data.
Big company or startup?
Nothing’s perfect, and there are bad environments in both big and small companies. However, if you compared Google/Microsoft/Amazon with a well-managed startup, you would probably find that the big companies are characterized by:
- More processes in place for people management, project management, and product deliverables
- Prevailing existing goals from “on high” that need to be satisfied
- Better benefits and workplace amenities
- High and less uncertain compensation
- A more bureaucratic promotion process where you have to “do your time” to move up
On the other hand, smaller companies:
- Have high variance in quality of management, stability, and compensation
- Require employees to make more autonomous decisions, but also reward people who enjoy autonomy
- Are typically growing, so new people are constantly joining
- Always have several things that could be improved at any moment
- Are more resourceful or scrappy than big companies
- Provide opportunities to learn things outside of your day job and influence workplace culture
Preparing for interviews
The word interview generally freaks people out, like a stranger you don’t know is going to grade your life. But there’s a secret way to turn that around:
Think about interviews as someone else giving you their time, travel expenses, and free information.
Just like everything else in life, the job search is a process of gathering information, and when you treat the interviews as free learning and exploration, they can be quite fun! People love to talk about themselves, so given the chance to ask questions, throw out some insightful ones and you’ll simultaneously impress the interviewer and gather valuable data. Here are some examples:
- What do you like and dislike the most about working here?
- If you could tell yourself a year ago three things that you didn’t know then but have since learned, what would they be?
- What are three things that you least expected / surprised you the most in the last year?
Even if an interview is not going well, you can still learn quite a bit: how has communication broken down? Why is this company’s hiring process preventing you from showing off your strengths? Being on the receiving end of many interviews taught me a lot about how people do hiring (both good and bad). Startup founders had especially unique insights from their experiences to learn from (and they’re usually not very organized, so you can ask a lot of questions).
Almost invariably, companies that conduct interviews well have two-way information flow: they learn about you and you learn (hopefully attractive) things about them. When companies fail to sell you on their mission or vision, you won’t be excited to work there (they could be FAANG and just attract you with money and reputation though; see below).
Although I now find interviews to be extremely insightful, if not outright fun, they were quite grueling when I started. If you are not well-versed in the job interview process (common for academic candidates), it can be a harrowing experience to feel like you’re being put on the spot. The key to this, just as in giving research talks, is to practice. Practice mock interviews with your friends at companies. Practice by scheduling interviews with companies you’re less interested in first, then doing the important ones.
One other reason to do many interviews, even if some of them are less interesting, is to calibrate your distribution of “good companies to join.” Once you’ve seen some poorly-managed companies, it’s much easier to identify the good ones. This is especially true of startups, where there is much more variance than at the big tech companies.
Big company interviews
There are many, many resources online for software engineering interviews, but I think of it as essentially studying for a test…or oral examination, if you will — especially at big companies. This test is designed so that you have a good chance at passing if you’re both good and have studied. If you don’t prepare, however, they can’t tell if you’re qualified or not. Studying for this test is unavoidable drudgery, but I found LeetCode to be somewhat fun.
It’s unfortunate, but at many big companies interviews have been boiled down to the least common denominator between all interviewers and candidates: a whiteboard or computer coding question. The interviewer can’t evaluate you based on their experience, and you won’t really have a chance to highlight what’s unique about you. There is almost little opportunity to personally connect with your interviewers, and you won’t be evaluated on your soft skills (at least around this level). Companies like FAANG get away with this because they have strong enough brands to get you in the door, and don’t need to sell you on the organization.
One exception was to this was the interview at Netflix, which was more of a two-way conversation, digging in to your background based on your expertise. This requires interviewers who are sharp and can think on the spot. I usually conduct this type of interview now, as it allows both interviewer and candidate to learn about each other, instead of wasting time on a least-common-denominator coding question with a prescribed sequence of answers.
Interviewing at Startups
The figure on the left describes how I think about the overall experience you’ll get joining a big tech company vs. a startup.
At a big company, you’ll get a pretty consistent experience in your job, with some variance based on what your team is doing and how good your manager is.
If you compare the distribution of startups, you’ll see extremely high variance in quality. Very few are going somewhere, and many are poorly managed, have an unclear vision, or a bad product. A few have experienced founders that know what they’re doing. Many are staffed by a cohort of brogrammers. The fraction of startups that will be ‘better’ in some sense than your typical big tech company job is very small.
As a result, when interviewing at startups you need to quickly get some samples from this high-variance distribution and establish where the company you are talking to is on this distribution. Startup interviews are typically far less organized and more of a two-way (chatty) street than big company interviews — take advantage of this and ask lots of questions to drive the interview and to seek out information. Look for a quality founding that work well together, buy-in from reputable VCs, and a mission and culture that attracts people. A good place to start for understanding startups and entrepreneurship culture are Paul Graham’s essays.
An interesting new player in the startup recruiting scene is TripleByte. They do a single deep technical screen with you, and then forward you directly to non-technical “fit” and onsite interviews at companies. I didn’t end up taking a job through them, but the experience introduced me to a lot of startups I wouldn’t have been able to talk to otherwise, and was great for calibrating that aforementioned distribution and gaining information. If you want to check them out, they are currently offering a referral bonus for you and me.
You can also find jobs at promising startups through VCs. I wasn’t well connected enough for this during my job search, but look for friends who either work at a VC or have worked with VCs at their startup.
Negotiating an offer
Here’s a great article on evaluating offers, and a transparent guide to total compensation at tech companies. I’ll just comment briefly below.
There’s also a lot of information about negotiating your offers online, but the bottom line is: always negotiate! Of course, it’s easier to negotiate when you have more leverage — usually in the form of in-demand skills, or other offers. In my experience, the difference between having 1 offer and having 2+ offers is $100k+ in total compensation (for big companies), so that’s a good reason to interview at multiple companies even if you’re just interested in one. Getting offers from other companies also signals that you are more qualified — to get a sense of the process, check out this story about one job search and going from initial job offers of $100k to accepting a final offer of $250k.
An offer from a big company will come in the form of a base salary, expected annual bonus, and restricted stock (RSUs). The RSUs will typically vest over 4 years with a one-year cliff, and will be a significant part of your compensation, so you can annualize the RSUs and add everything up to get your total compensation. Most companies will lowball you on the initial offer, and have room to negotiate from 50k to 100k if you don’t bite. There are some exceptions: for example Snap and Netflix have a policy to pay “top of market”.
All though most recruiters will give you a deadline — “we need a response one/two weeks from now”, deadlines are always flexible. Most in-house tech recruiters have incentives for you join and stay on a period of time, as long as they keep you within the appropriate “compensation bands” — so their incentives are usually aligned with yours, and there’s no harm in pushing your compensation as high in that band as you can. They’ll try to put pressure on you with deadlines, a best & final offer, etc., but you should be willing to push back, and you’ll find that everything’s squishy, especially if you have leverage.
Deciding what job you’ll commit to for the next several years is an important life decision that you deserve time to evaluate, and no recruiter will argue with that.
If you want to make steady, comfortable money, you’ll definitely make the most of it at a big company. My highest offers (2.5 years after PhD) were over $300k total compensation — much more than needed to live comfortably.
At startups, on the other hand, you won’t be able to push much on the salary. Equity (in the form of options) comprises the rest of your offer, and is much more negotiable. While it would be outlandish to ask for double your salary, you can (justifiably) ask to double your equity, and possibly even more. For most startups, however, it’s reasonable to assume this is just “monopoly money”.
Making a Decision
The decision of which path you’ll take from the doors that have opened to you is personal, and advice that worked for me may not work for you. All you can do at this point is to take all the information you have so far and pick what feels best. My heuristics for these decisions have been to maximize (1) “interestingness” and (2) potential for learning.
One particularly frustrating part about joining a big company is that unless you know someone or are working in a research area, they hire for generalists and you won’t have choice of team or project. It can matter where you end up (e.g. Google Brain vs. some arbitrary engineering team) and what your manager is like, things you have little control over. Articles like Why I Quit Google reflected many conversations I’d had with friends, and I decided on balance that despite being comfortable, I’d probably struggle to have the impact I wanted at a big company.
At startups, you should rationally assume your options are worth little to nothing. On the other hand, the growth opportunities are potentially huge, including the opportunity to do jobs you might not be “qualified” for, to practice leadership skills long before you’d officially manage anyone at a large company, and to develop new technologies at the forefront of innovation.
Ultimately, by far the most interesting opportunity in my job search was at CTRL-labs. I’m earning around half of what I was offered at bigger companies, but it was a far better fit for my skills, interests, location preference, potential to learn from talented colleagues — we are an interdisciplinary company working across hardware, neuroscience, machine learning, and human-computer interaction, and we are hiring!
Parting Thoughts
Quantitative science disciplines, especially computer scientists (and especially those in machine learning), are lucky that the academia/industry boundary is more flexible than other fields. This is hard to see when you are still in academia, but it’s true!
I’ll leave you with one last thought. If you’re on the fence about leaving your current situation versus staying, you may feel like the xkcd to the left. If this is the case, know that humans are basically incapable of predicting the future based on the present. Experience has shown me time and time again that the new situation is almost always better than you thought it would be. Perhaps try and account for that, unless you prefer to learn this the hard way.
In attempting to provide useful information, I may have generalized a bit in parts of this article. Please leave comments and I will do my best to incorporate them.
My thanks to Stefano Balietti, Oliver Elbert, Chris Lin, Elliot Salisbury, and others who provided feedback on earlier drafts of this article.
If you liked this article and or are thinking of making the transition out of academia yourself, I’d love to hear from you! Please drop me a note.