Advice for Applying to Data Science Jobs
Following Dave Robinson’s sage tweet to write a blog post when you’ve given the same advice three times, this post is a collection of my thoughts and recommendations for people interested in applying to data science jobs in the US. Many of these principles also apply to tech jobs in general.
A disclaimer: I have never worked as a recruiter or career coach. This knowledge comes from mainly from my study of Organizational Behavior (including negotiations and women in tech) in graduate school and my own career. This advice also will not fit every single situation. The people who will benefit the most from this post are probably those who are applying for their first data science job and/or are in or recently out of school. If there’s another tip or a caveat I should add, send me a note on twitter!
Take stock of your online presence. Check your privacy settings on Facebook or any other social media you use to make sure you’ve limited what’s available publicly. While many online job applications now have places for twitter handles, don’t include yours unless you use it mainly in a professional manner (e.g. tweeting about data science resources or pets. Pets are always appropriate).
If you have a GitHub, pin the repos you want people to see and add READMEs that explain what the project is. I also strongly recommend creating a blog to write about data science, whether it’s projects you’ve worked on, an explanation of a machine learning method, or a summary of a conference you attended. If you need more convincing that blogging is a great use of your time, check out this post by Dave Robinson on the subject. If you program in R, you can use blogdown to create a website. Emily Zabor has written a great tutorial for this; find more blogdown resources in Mara Averick’s extensive list. If you don’t use R, you can use Hugo (which blogdown is built on top of) directly or start out with Medium.
Finding and Evaluating Jobs
- Browse widely: jobs in data science go by many names besides data scientist. These include: product analyst, data analyst, research scientist, quantitative analyst, and machine learning engineer. Different companies use different names for similar roles and some are changing what their titles mean (see Lyft’s post on their recent shift of data analyst to data scientist and data scientist to research scientist). Even the definition of what separates a data analyst from a data scientist is not agreed upon (see this recent post by Mikhail Popov summarizing different perspectives). Try searching for all of these terms to find positions and then use the description to evaluate the fit. If you’re interested in start-ups, Angelist has thousands of positions, many of which list a salary range.
- Do some self-reflection: rather than applying to every type of data science job you find, think about where you want to specialize. A distinction I’ve found helpful when thinking of my own career and looking at jobs is the Type A vs. Type B data scientist. “A” stands for analysis: type A data scientists have strong statistics skill and the ability to work with messy data and communicate results. “B” stands for build: type B data scientists have very strong coding skills, maybe have a background in software engineering, and focus on putting machine learning models, such as recommendation systems, into production. Also consider what data stage you want your company to be in (see discussion in Robert Chang’s post). An advantage of working at a smaller company is you can try different parts of data science; big companies are more specialized, so you may not be able to try both creating a lifetime value model and tuning a recommendation system, and many problems, like data engineering, are abstracted away. On the other hand, at smaller companies you’ll usually need to deal more with data quality problems, poor documentation, and slow query processing. While data stage is correlated with company size, a big company that’s been around for 100 years may not have data science maturity.
- Don’t demand perfection: your first job in the field probably won’t be your dream one. It’s easier to transition within your field or bring data science into your current role; even if you’re looking to eventually leave your domain, you may need to start out by moving to a position where you can leverage your other skills. That doesn’t mean you shouldn’t have certain requirements and preferences (see above), but it does mean you’ll want to have some flexibility. It’s very normal to switch jobs in tech even after just a year or two, so you’re not signing yourself up for the next 15 years. To me, the most important criteria for my first job was that it was a supportive environment, with lots of other analyst, where I could learn a lot. And as Jacqueline Nolis points out, you can’t know exactly what you want before you’re even in the field and you’ll learn even from bad jobs, so don’t stress too much:
Early in my career I spent a lot of emotional effort trying to figure out which job was “right” for me and what exactly I needed, but now I realize that even my bad jobs were good experiences to learn what’s important to me. 2/— Jonathan Nolis (@skyetetra) May 29, 2018
- Don’t undersell yourself: job descriptions are generally wishlists with some flexibility. If you meet 80% of the requirements (e.g. you’re a year short of their required work experience or haven’t worked with one component of their tech stack), but are otherwise a good fit, you should still apply. With that said, be wary of job descriptions that describe a unicorn - a PhD in Computer Science who’s also worked for 5+ years as a data scientist and is an expert in cutting-edge statistics, deep learning, and communicating with business partners - and lists a huge range of responsibilities, running from doing production-level machine learning to creating dashboards to running A/B tests. It usually means they don’t know what they’re looking for and they expect a data scientist to come and solve all their problems without any support.
- Look for connections on LinkedIn: check if you know anyone at the company you’re interested in. If you don’t know anyone, see if there’s anyone in your alumni networks (bootcamp, college, that kickball team you joined one summer). You can also check for second connections and see if the person who bridges you can introduce you. Many jobs get hundreds if not thousands of applications for each position and having someone refer you or give you feedback on what the team is looking for is enormously helpful. If you do reach out, take the time to tailor the message: if you don’t know the person, do your research and reference their background or public work.
- Check out meetups and conferences: sometimes hiring managers will come to meetups or conferences to recruit. You may also meet someone in the company or sub-industry you’re interested in. You can ask if they have time for an informational interview so you can learn more about their field. If you ask if their company has an opening or if they can refer you, though, you’ll probably be directed to the company’s career page. This is why it’s important to build your network before you need it - starting off with a strong ask is not a great way to build a mutually fulfilling relationship.
Resume and Cover Letter
- Keep your resume to one page: you don’t have to list everything you’ve ever done. Try making a master resume which has all of your work history and then pull what’s most relevant for each job. Don’t put a laundry list of every technology you’ve ever used; focus on the ones that you’ll be comfortable talking about. A tip from a recruiter: “don’t use graphs showing how experienced you are in certain technologies. If you have python being a full bar, do you actually know 100% of what there is to know about python?” If you’re running out of room and have a summary or objective statement, you can leave it off as those are much less common now. If you come from academia and have work experience, consider leaving off publications if they’re not looking for a PhD and it’s not a research position.
- Proofread: having typos or grammar errors in you’re reSume can be the quickest way to have your aplication elimminated. Use spel-check and have a friend or too check it over.
- Don’t include a picture: while this is common in some countries in Europe and South America, it is not appropriate in the US.
- Tailor your resume to the position: bigger companies often have automated resume-screening systems that check for keywords. Look in the job description to find those words; you can use a tool like TagCrowd to see which words are most common. For example, does it say leadership instead of management? Does it say NLP or natural language processing? Change your words to match theirs.
- Start your bullets with a verb: write “analyzed 300 papers” instead of “I analyzed 300 papers.”
- Quantify your accomplishments where possible: instead of saying “ran experiments on our ranking algorithm”, write “ran more than 60 experiments that led to $2.3 million in additional revenue.”
- Write a cover letter: if there is a place to submit a cover letter, do so. Some companies will eliminate candidates if they haven’t written one. Just like your resume, you can have a master cover letter that you pull paragraphs from. Tailor at least the first and closing paragraph to the company and make sure you get their name correct! The more specific you can be, the better; show you’ve done your research on the company and have specific reasons why you’re interested in this position. Try to find the hiring manager’s name (see here) so you can address the letter to them instead of a “Dear Hiring Manager.” If you want more guidance on writing a good letter, these articles of 31 tips and 5 common phrases to avoid are great places to start.
data science hiring PSA:— Jesse Maegan (@kierisi) May 7, 2018
some advice out there says that cover letters don't matter, so just slap a new file name on your resume and label it a cover letter, or write a single sentence that says “this is my cover letter.”
this is bad advice.
- Prepare and practice: there are two main types of questions you’ll be asked- technical and behavioral. For behavioral questions such as “tell me about a time you had a conflict with a team member” or “what’s your greatest strength,” tell a story using the situation-behavior-outcome model: describe the situation you faced, how you handled it, and the result. Try to keep your answers short but comprehensive. It’s worth keeping a list of these examples and thinking about which ones most show case the experiences and traits most relevant to the specific job you’re interviewing for. For technical questions, you’ll want to find out the interview structure. The structure of interviews and types of questions range widely: you may have to do a take-home, answer Computer Science questions (e.g. invert a binary tree), explain random forests, give a presentation, write SQL code, etc. It’s very helpful to know ahead of time what to expect. Check out Glassdoor for reviews of the interview process and ask your network if anyone’s interviewed there. You can also ask HR in your initial phone screen what to expect. If you’re coming in for multiple interviews, you can ask what topics will be covered in each and what the structure will be (e.g. “Will I be doing any whiteboard coding?”). Once you know, you can focus your preparation there. If you’re stumped on a problem, consider saying, “I am not sure, but this is how I would go about solving it.” Often, you’re evaluated on how you work through the problem, not whether you get the correct answer. For more tips, check out Trey Causey’s post on his experience in the data science job market, Erin Shellman’s guide to landing a data science job, and Mikhail Popov’s post on Wikimedia Foundation’s process for fulfilling a data analyst position.
- Anything on your resume is fair game: if you have an internship from six years ago on your resume or list AWS as a skill, be prepared to be asked a question about it.
- Research the company: you should have done some when writing your cover letter, but once you get the interview, dig a little deeper. In addition to the tips in the thread below, find out about your interviewers’ professional accomplishments. I was very impressed when a candidate I was interviewing asked some technical questions about a presentation I had given.
Especially if you are interviewing at a startup, spend an hour doing your research. Here's the formula:— Jensen Harris (@jensenharris) May 16, 2018
1) Crunchbase. Find out funding, investors, etc.
2) LinkedIn. Who works there?
3) Glassdoor. What do people say about the company?
4) Company web site. Read all you can stand.
- Have questions ready: each interviewer should leave time for questions at the end. If they don’t, that’s a bad sign! Interviewing is a two-way matching process: you’re evaluating them as much as they’re evaluating you. If you don’t know what to ask, check out Julia Evans’ list. She splits them into categories such as quality of life, culture, and management practices; think about what matters most to you! You can ask each interviewer different questions to maximize how many you can get answered, but you could also try to ask multiple people the same questions to see if and how their answers differ. If it’s a start-up, I highly recommend checking out this list of questions to ask.
- Never name a salary number: don’t tell them either your current salary or your expectation for this one. In some places, including New York City and California, it is actually illegal for them to ask you your current salary. If you name a number, you risk them giving you a lower offer than they would have otherwise. Their offer should not depend on your current salary or expectations; it should be your worth in the market and similar to the salary of your peers there! If there’s question on the application form, put “NA” or “flexible;” if forced to write a number, put 0 and add somewhere else “Note: I entered $0 on the salary question because I am flexible on salary if we determine there is a mutual fit.” If you’re asked in an interview, redirect the conversation by saying something like, “Before discussing salary, I’d like to learn more about the position and focus on what value I can bring to the company. I’m sure if it’s a good fit we can reach an agreement on a competitive overall package.” If it’s about your current salary and you’re in a different job type/industry with a lower salary, you can say something like, “Since this position is a large change from my current job, let’s discuss what my responsibilities at this company will be and work together at the end of the process to determine a fair salary for this position.” If they insist on knowing your expectation, give a large range based on research into what’s standard in the industry and at that company. For example, you can say, “From my research and past experience, my understanding is a base salary of $95k to $120k is standard, but I’m most interested in the fit with the position and overall compensation package.” You can look at the H1B visa data, Glassdoor, and paysa to give yourself a ballpark. And talk to friends! Knowledge is power. Some friendly folks will also do a salary information exchange:
while I'm on it, my DMs are always open if you want to send me your salary. especially if you work in data, work in Toronto, or work in a “technical” role with 0-3 years of experience. if you're an URM, I'll tell you mine too. knowledge is power 💪— Sharla Gelfand (@sharlagelfand) April 15, 2018
- Handle rejection gracefully: you will almost inevitably get rejected from jobs, maybe dozens of them. Data science is a competitive field, and this is a very normal process that everyone goes through. If they give you the rejection (versus just never hearing back), you can express your disappointment politely (e.g. “I’m sorry to hear that”) and thank them for their consideration. You can ask for feedback, but know that many hiring managers won’t be able to give you any because they want to avoid the possibility of being sued if a comment is interpreted as discriminatory. While it’s okay to take a little time to wallow, don’t lash out in public or to the hiring manager. It won’t help the situation, but it will hurt your professional reputation.
one of the things that should go without saying, but here we are, is that it's important to handle rejection gracefully. data science positions can be highly competitive. having a public meltdown and/or sending the hiring manager nasty/demanding emails is… bad.— Jesse Maegan (@kierisi) May 29, 2018
For the initial offer, you may get a phone call, an email with the details, or an email asking for time to go over the offer by phone. In all cases, make sure you express your excitement and gratitude for the opportunity. Don’t accept right away: get the full offer in writing, say you need to review it, and ask if you can reconnect in a few days. This sets the stage for negotiating and gives you time if you’re considering other offers. If you need more information (e.g. starting date possibilities, health insurance information), you should ask for it before your second conversation so you can have the full picture.
Juggling multiple options
Unfortunately, you probably won’t get offers (or rejections) from all the companies you’re interested in at once. More likely, when you get an offer, you might be in the final round for another company, just finished with the phone screen in another, and waiting to hear back from others. What if one of the ones you’re waiting on is your “dream job”?
If you’re in or very close to the final round with a company, tell them about your other option. Reiterate how interested you are in their company (and if they’re your first choice, tell them!), but explain that you’re received another offer and would appreciate if they would be able to give you a decision by X date. Recruiters understand that you’re likely to be interviewing with other companies and deal with this situation all the time. If you’re very early in the other process, it’s unlikely they’ll be able to speed it along enough to have an offer in time, and you may need to decide whether to accept the offer without knowing your other options.
Even if the offer is more than you expected or it would be a big increase from your current job, you should negotiate. Tech companies expect you to negotiate. You can almost always get at least another $5k or a 5% increase in base salary and very likely more depending on the company and original offer. You could also ask for a signing bonus or more stock options. Remember that it’s not selfish or greedy to negotiate:
Other thoughts: it's not about the salary you make now. It's about the salaries of your peers at the new place. It may be a large bump for you now, but once you're hired you'll be doing the same work for less pay.— bletchley punk (@alicegoldfuss) May 2, 2018
Also think about the non-monetary benefits you’re interested in. For example, maybe you want to be able to work from home one day a week. Maybe you want them to cover the cost of two conferences a year. If it’s a smaller company, you can ask for a different job title.
How much you can negotiate for depends on your bargaining position and the company. A non-profit will probably have less room on salary. If you have another offer or you’re well compensated in your current job, you have a strong alternative. If you have a rare skill that they recruited you for or the role has been open for a long time, it’s going to be harder for them to find someone else. You should do your research on the salary websites mentioned above so you can explain why you’re asking for the numbers you are. Aim high so you have room to compromise and give a number, not a range - if you say you’re looking for between a 5k and 10k increase, they’ll probably give you the 5k. Reiterate why you’re excited about the company and position and how you bring X, Y, Z to the table. Finally, start the conversation with the set of things you’re interested in instead of raising and settling one issue after another. This way, they’ll both feel they have the picture of what you want and you can do compromises among issues (e.g. you might accept a $5k base salary increase and $5k signing bonus instead of a $10k base salary increase).
I highly recommend reading more about how to negotiate well; this comprehensive two-part post by Haseeb Qureshi on his 10 rules for negotiating (with many specific examples from his own successful tech job search) is an excellent place to start. I also like these HBR articles on 15 rules for negotiating an offer and on advice for women (who unfortunately need to sometimes modify negotiation tactics).
It is very, very, very rare for a company to pull an offer because you negotiated. If they do, you do not want to work there.
One caveat: if you’re negotiating and you get everything you ask for, the company expects you to accept! You of course don’t have to, but you shouldn’t be stringing along a company you’re not serious about. And knowing you’ll accept also allows you to say the magic words, “If we can get to X, Y, and Z, I would be thrilled to accept the offer.”
Job hunting is stressful, especially if you’re working full-time and/or looking to change industries. I hope this post has given you a good starting point for understanding the hiring process in data science, what mistakes to avoid, and what strategies you can leverage in the process. If you’re still looking more, this is an incredibly comprehensive guide from Favio Vazquez, which includes his own thoughts and links to dozens of resources.
As I said at the start, feedback and additions to this post are very welcome! Thank you to Ilana Mauskopf, Dana Levin-Robinson, Jesse Maegan, Philipp Singer, Jacqueline Nolis, Naoya Kanai, and Michael Berkowitz for their additions to this post.