zangell44 / ds-hiring-guide

Hopefully a useful guide to the job search process for Lambda School students

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ds-hiring-guide

Hopefully a useful guide to the job search process for Lambda School students. Any Lambda specific info in this repository may become inaccurate over time, double check with Lambda staff for more current info.

This guide has been sourced from various places on the interwebs.

Things to Start Halfway Through the Program or Earlier

Start ASAP

  1. Make a list of all the regular, small, technical meetups in your city. Ideally something where you discuss a paper or write actual code in a workshop. Start going, even if you sit in a corner and do nothing the first couple of times. The benefit of having industry people see your face every week compounds quickly.

Start After ~15-20 Weeks

  1. Start applying to jobs. How you choose to apply will affect your success rates.

Companies look at hiring metrics from various pipelines when evaluating candidates. This means applying thrugh Indeed, for example, may not send a good signal.

Here are some good places to apply for DS/ML jobs that aren't generally known:

πŸ‘‰ Applying through AngelList is great for talking directly to the executive team of startups.

πŸ‘‰ Applying through Key Values sends a good signal to hiring managers, because they tend to attract good engineers as applicants.

πŸ‘‰ Y Combinator's Work At A Startup page is another great one. This lets you submit a single application to all YC companies.

πŸ‘‰ Hacker News puts up a "Who Is Hiring?" post every month where companies post open jobs. A great hack is to look up all the past Who Is Hiring posts at this URL. Instructions on how to apply to each job are included in the comments. Check it out!

πŸ‘‰ The Comet ML newsletter is another great place to apply for ML jobs. We highly recommend subscribing: you'll get a list of ML jobs delivered to your inbox every two weeks.

  1. If the hiring manager whose group / company you're trying to join has a Twitter account, follow it. If they have a blog, read it. Same goes for engineers in the group / company you're trying to join.

Job Search: First Impressions

Before reaching out to companies, you need to prepare the way for yourself. In this section we'll cover how to curate your online presence to make your value obvious.

The more obvious your value is, the more receptive companies will be when you reach out to them, and the easier they'll be to negotiate with. If you follow the advice in this section properly, you might even find recruiters start to reach out to you. (Don't let that go to your head - a recruiter reaching out isn't that valuable by itself. It's just a sign you're on the right track.)

Your personal website

You do need to have a personal website. But you don't need to over-think it.

What to do

Set up a website for yourself at a custom domain. Your personal website only needs to have 3 things on it:

  • Your name.

  • A one-line blurb that describes you.

  • Links to your other online profiles (GitHub, LinkedIn, Twitter, Medium).

That's it. Add projects as you do them. Add blog posts directly if you prefer.

How to Build It

I would recommend purchasing a domain on Google Domains, NameCheap, or another common provider. Something as close to firstname.lastname.com as possible.

How exactly you build the site depends on your skills and how much effort you're willing to put in. In ascending order of difficulty:

  1. Use wordpress, webflow, DatoCMS, or whatever site builder you want. Let's you quickly create something that looks good, but of course using those tools can have a stigma.

  2. You use something like Gatsby/Hugo to build your site. A little more involved than wordpress but templates are provided. See these templates as an example. This is what I did for my site.

  3. You find a website online that you really like, jack the source code and make it your own.

  4. You build that thang from scratch using a tool like materialize css or NESCSS.

Find people with jobs you want or at companies you want to work for for inspiration. Here's some examples of good websites:

Your GitHub profile

GitHub is where the rubber hits the road. It's where you show off the real meat of the projects you've done: not just explaining them, but showing the quality of your code. :octocat:

What to do If you don't have a GitHub account, get one. Don't feel bad if it's empty at first. It's far better to have a single project that you're diving deep on than to have 20 projects that are all forks with 1 commit each.

Make sure your pinned repositories represent personal projects. It may be worthwhile to aggregate all Lambda work into one repo and pin that.

Here's a checklist of the bare minimum your GitHub account should have:

  • A repository for each of the projects you've done
  • A README file for each of your projects with a clear explanation of what it does and how to run it
  • Bonus points: A link to a URL where I can test a demo version of your project

How to do it

  1. If you don't already have a GitHub account, create one.

  2. Add a profile pic of yourself that matches the profile pics you use on other professional networks (LinkedIn especially).

Why you're doing it It's basically guaranteed that at some point during your job application process to any company, someone technically capable is going to look at your GitHub profile. So make sure it looks good.

Your Resume

As you gain more experience, your resume will matter less and less. But early on, it matters a lot.

What to do

Put together or update your resume. Make sure it's geared towards data science roles.

Here's a list of common resume mistakes.

  • Spelling mistakes
  • Inconsistent formatting
  • So much text I can't get through it to read the important parts
  • Including a picture of yourself
  • Gaps in your timeline so I can't tell what you were doing during some time period
  • Not ordering your timeline chronologically
  • Listing Microsoft Office as one of your skills
  • Listing MNIST, the Titanic dataset, or another generic project in your list of projects
  • Submitting your resume in any format other than a PDF
  • Including a detailed description of your graduate thesis if it isn't directly ML-related
  • Including a list of publications if they aren't ML-related
  • Mentioning that you have "communication skills"
  • Having a resume that is 1 page long plus one sentence, instead of either 1 page long or 1.5 pages long

And here's a list of things you can do to make your resume stronger.

  • Make sure your Skills section is at the top of the resume
  • Divide your skills into "advanced" skills and "experience with" skills
  • If you've had technical or business jobs before, list your dollar contributions to them (e.g., increase revenues by X%, reduced costs by $Y)
  • List a few ML data types you're familiar working with (e.g., NLP, computer vision, time series)
  • Provide GitHub links to your best projects
  • If you've been promoted, list your original and promoted position as 2 job titles under one company heading
  • Make sure your writing is clear and concise. Use short sentences, with one idea per sentence

How to do it

(If you already have a resume, skip the first 2 steps.)

  1. Start by picking a format. There are many online templates available, my favorite is Creddle. Pick one that works well for you.

  2. Fill in the template with content. (TODO-Provide Examples of Good Resumes)

The next steps involve subjecting your resume to multiple rounds of review. 🚨🚨 Don't skip any of these steps, even if some of them overlap with each other:

  1. Navigate to this link. Go through all 24 mistakes on the list and eliminate them from your resume.

  2. Navigate to this link. Go through all 4 mistakes on the list and eliminate them from your resume.

  3. Scroll back up to the "What to do" section above. Go through all the common mistakes listed and eliminate them from your resume.

  4. Scroll back up again to the "What to do" section above. Go through all the improvements listed and add them to your resume.

  5. Send your resume to a peer for feedback.

  6. Send your resume to your career coach for feedback.

Tip: to fix spelling and grammar, download Grammarly and the Sapling.ai Chrome extension and run them both over your resume. Start with Grammarly first, then use Sapling. Grammarly and Sapling catch different kinds of mistakes, but Sapling is better than Grammarly so it should be used last.

Why you're doing it

If you're trying to get your first job in data science or ML, your resume might be the single most important document you'll create to help you do that. It's worth spending lots of time on it to make it good.

Your Cover Letter

Cover letters should be unique to every company. As you write them more frequently, it'll get easier and easier. But, the first one might take hours. The most important thing is to put words to paper. The quicker you write something, the quicker you can iterate if you realize it sucks.

A good way to think about the structure of a cover letter is a flattery sandwich. First you flatter them, then you flatter yourself, then you flatter both of you together.

Some more tips can be found here and here.

TODO-Provide Example of good cover letter

Always have someone proof your cover letter before sending it. Installing Grammarly can prevent a lot of mistakes. When in doubt, ask a peer or your career coach to proof it.

Your LinkedIn profile

You probably have a LinkedIn account already. If you don't have one yet, get one.

What to do

Create or polish your LinkedIn account. You should think about your LinkedIn profile the same way an ambitious person thinks about what to wear in an office: dress for the job you want, not the job you have.

Here's a list of common LinkedIn profile mistakes.

  • Spelling mistakes
  • Weird capitalization of your own name, e.g., "BOB JOHNSON"
  • Not having a profile picture
  • Having a profile picture that looks like a mugshot
  • Gaps in your timeline of education or experience
  • Mentioning that you have "communication skills"
  • Calling yourself an "aspiring" data scientist
  • Having recently commented on someone else's LinkedIn post along the lines of "I sent you a message yesterday. Please respond!!!" Your comment history is immediately visible on your profile and this makes you look desperate
  • Long taglines in your profile, e.g., "Graduated | Actively looking for openings in startups and internships | Software, Machine learning, IT, Data Analyst"

Here's a list of some LinkedIn profile do's:

  • Give yourself a tagline that looks like a job title, e.g., "Data Scientist" or "Machine Learning Engineer", depending on what describes your desired role
  • Make sure you're smiling in your profile picture
  • In your description, list a few ML data types you're familiar working with (e.g., NLP, computer vision, time series). Recruiters will find you based on these keywords!
  • In your description, mention 2-3 key accomplishments you have in data science or ML. Your format should be: I accomplished X, as measured by Y, by doing Z. For example, "I saved ABC Corp $1M per year by building them a new ML model for widgets", "I hit the top 10% in this Kaggle competition by applying the method from this research paper", or even, "I built a grocery store inventory manager 3X more efficient than the legacy system, by collecting the data I needed with my smartphone"
  • In your description, mention what fields you're interested in (e.g., healthcare, finance). Don't mention more than 3
  • If you've been promoted, list your original and promoted position as 2 job titles under one company heading
  • Make sure your writing is clear and concise. Use short sentences, with one idea per sentence
  • Make sure you add logos to the list of companies you've worked at

How to do it:

(If you already have a LinkedIn profile, skip the first step.)

  1. Create your LinkedIn profile. Make sure it's connected to an email account that you check regularly.

The next steps involve subjecting your LinkedIn to multiple rounds of review. 🚨🚨 Don't skip any of these steps, even if some of them overlap with each other:

  1. Scroll back up to the "What to do" section above. Go through all the common mistakes listed and eliminate them from your resume.

  2. Scroll back up again to the "What to do" section above. Go through all the improvements listed and add them to your resume.

  3. Ask one of your peers for feedback.

  4. Ask your career coach for feedback.

Tip: to fix spelling and grammar, download Grammarly and the Sapling.ai Chrome extension and run them both over your resume. Start with Grammarly first, then use Sapling. Grammarly and Sapling catch different kinds of mistakes, but Sapling is better than Grammarly so it should be used last.

Why you're doing it You're going to be reaching out to hiring managers and CEOs on LinkedIn a lot. When you do, those hiring managers and CEOs will look at your profile as the first thing they do. So make sure it's bulletproof!

Job Search: Application Strategy

Elevator Pitch / Personal Value Proposition

Your elevator pitch is critical to all parts of the application strategy. You should have this practiced and be able to easily tailor it to positions you're interested in. Lambda can help with giving additional tips.

When considering a company/role specifically, you need to think deeply about how you can add value to that company in your role.

To get in the room, you'll need some signal that you can add value. Most positions use a PhD or Masters Degree as a proxy for ability to add value. Lambda School by itself provides very little positive signal in the data science industry at this point.

Signals you can target can include

  • Past experience relevant to the company (e.g. my background in Finance)
  • A project directly relevant to the company's business model, demonstrating you can do the work they need
  • Advanced Education in another field that is related to the company (e.g. a PhD in Biochem can get you in the door for DS/ML roles in that industry)

What job search strategy should I use?

It depends. Here are the possibilities:

1) You live in a major tech hub

This is a city with a very high concentration of DS/ML jobs and talent.

How to tell if you live in a major tech hub

You're in a major tech hub if you live close to one of these 3 areas:

  • Toronto
  • SF
  • NYC

What to do if you live in a major tech hub

2) You live in a minor tech hub

This is a city that has a vibrant tech scene and a decent number of DS/ML opportunities, but less so than a major hub.

How to tell if you live in a minor tech hub

For our purposes, there's a simple way to check:

  1. Search for tech events in your city on Meetup.com. Make sure the city in the search bar is correct.

  2. Scroll down and look at the titles of the meetups.

  3. Do you see at least 3-4 meetups in the next month on the topics of AI, data science, ML, or data engineering? You do? Then you live in a minor tech hub.

What to do if you live in a minor tech hub

  • You should spend as much of your search time as possible in meetups. Depending one the tech density in your city, this will range from 10% to 50% of your search time.
  • You should spend the rest of your search time doing email outreach and LinkedIn outreach.
  • You may be able to find a job close to where you live, but you should definitely be open to moving if you get an onsite offer elsewhere.

3) You live somewhere else

If you live somewhere that isn't either a major or minor tech hub, that means you won't be able to rely on meetups as part of your job search strategy.

What to do if you don't live in a tech hub

  • You should spend all of your search time doing email outreach and LinkedIn outreach.
  • It may be difficult to find a job nearby given the opportunity set. Be open to relocation if possible, otherwise explore remote work.

Meetup strategy

The meetup strategy is the strategy that takes the longest to convert. But minute-for-minute, it's easily the most effective. If you live in a major or minor tech hub, there's no excuse not to use it.

What to do Attend as many high-quality data science-related meetups in your area as you can. Even if you have to commute for an hour to get to the meetup, it can be worth it if the meetup is good enough.

High-quality meetups have most of the following properties:

  • They're technically focused. This ensures that less competent people drop out quickly from boredom. Research paper or project presentations are good. "Introduction to Python for Data Science" is bad.

  • They recur often. This lets you get to know the community faster. Every week is great. Every month is fine.

  • They have medium attendance. The meetup should be small enough to be intimate, but big enough that you don't run out of people to talk to. 10-60 people attending is ideal. (That's not "10-60 people signed up on meetup.com". It's "10-60 asses in seats at the meetup".)

How to do it

  1. Go to meetup.com and search for tech meetups near your area. Make sure the city in the search bar is right.

  2. Start going to meetups. Start by casting a wide net: go to as many data science-related meetups as you can. It's very hard to tell which ones are good without going there in person.

  3. Stop going to the lame meetups. After you've been to a few, the lame meetups will seem lame; stop going to them. If you aren't sure, evaluate the meetups using the criteria in the What to do section above.

If you're in a small enough city, it's possible that all the meetups in your area will be lame. If so, you won't be able to use the meetup strategy.

Second, you need to start networking. Here's how to do that:

  1. The question you should always be asking yourself at a meetup is this:

    "How can I learn as much as I possibly can about people's problems that I find interesting, and offer as much help as I possibly can to those people in solving their problems?"

    You can mess up a lot of things, but if you apply this mentality to everyone you talk to, doors will start opening for you. Every step after this is just tactical advice to get you to talk to more people.

  2. Go to your first meetup. If you feel nervous about meeting people, set yourself the goal of "just going".

  3. If you're shy in person, set yourself a goal to intro yourself to at least one attendee. At the next meetup increase this goal to two, then three.

  4. If you go to a meetup and someone presents a technical topic, a great way to start conversations afterwards is to ask questions during the presentation. (Just do it politely, and make sure they're good questions.)

  5. Once you've discovered which meetups are good, keep attending them. See the Why you're doing it section below for why this is important.

  6. If you've been doing a project during Lambda, and if you've been to a meetup a few times, ask the organizer if he'd be interested in having you present your project. Don't feel shy about doing this! Most meetup organizers lie awake at night thinking of how to fill their meetups with content. You're giving them what they need.

  7. Remember: Ask people what their problems are and listen to them when they tell you! This is the essence of real networking.

    Nobody cares about your problems. So if you want someone's attention, you need to care about their problems. (Later, once you've become wealthy and/or powerful, you'll suddenly discover that other people have started to care about your problems.)

Why you're doing it

It's important to remember that the value you'll get from attending a meetup series compounds over time. It also compounds over different meetups across the same area, since the same people often go to multiple meetups.

Meeting Bob from Google for the first time at Meetup X is fine. Meeting Bob for the sixth time at Meetup X is great. Meeting Bob at Meetup Y after you've already met him at Meetup X is fantastic.

It will take you time to build up equity and trust in a meetup community. But after you've built up a head of steam it's one of the best possible uses of your time.

Email strategy

Cold Email Checklist (Zak Slayback)

  1. Does your subject line appeal to something already on their mind?

  2. Do you answer the Core Email Questions?

  • Who are you?
  • Do I know you?
  • How did you get my info?
  • Why me?
  • Prove it
  1. What, specifically do you want from me?
  • Is your ask clear and compelling?
  • WIIFM (Whats in it for me) - email hooks
  1. Is your ask easy to reply to?

Zak also has some free templates to get you going here.

LinkedIn Networking

  1. For most people, there isn't any value in collecting random LinkedIn connections if you don't know them and they don't know you. You should connect with someone on LinkedIn if you, at a minimum: a) have met them in person, or 2) have already had 2-way communication with them some other way (email, Twitter, etc.).

  2. If you want to follow someone's posts on LinkedIn (e.g., Andrew Ng), don't connect with them; follow them.

  3. While you should never try to connect with random people you don't know, it can be a good idea to connect with specific people you don't know. For example, if someone is a hiring manager at a company you want to work at, it can be a good idea to connect with them. The points below explain how to do that.

  4. Here's the situation. Suppose you really want to get hired at Uber Data Science in Seattle.

  5. Start by searching for folks who work at Uber DS in Seattle on LinkedIn. Identify their Twitter accounts, Medium blogs, any online presence by any of them. Engage with them personally as much as possible - smart, positive comments on Twitter, Medium posts, etc. Do that for at least 1 week with as many of them as possible.

  6. Then, connect with as many as you can on LinkedIn with a personal, customized message ideally that references other stuff they've written online. People love it when you quote their own insights back to them.

  7. Once you're connected and you can message them without character limits, try to start a conversation. The trick is, don't ask for something - offer something. One good strategy is to combine an idea with an implied compliment.

  8. Do this with a small handful of people at first, and you're almost guaranteed to start a productive conversation with at least one of them.

  9. Important: Don't send generic messages to a ton of people. Impersonal LinkedIn spam will only damage your reputation. When in doubt, ask yourself: Does this message make it obvious that I've spent more than 5 minutes investigating this person's online presence? If the answer isn't "heck yes", then keep working on your message.

Interviewing Tips

  1. To prepare for the interview, follow the advice at the end of this blog post. It's geared to software engineering, but can be easily adapted to ML / data science.

  2. To prepare for the interview, use the Briefcase Technique - described in this blog post. It's especially useful if there's one company that you really want to work at and you get an interview. (Ignore the marketing-speak in the linked blogpost, the technique works and that's what matters.)

  3. To practice interviewing, there are two resources you can use. First, you can message your career coach on Slack for practice interviews. Second, you can use pramp. Pramp (short for PRActice Makes Perfect) is a free interview prep service that pairs you with interviewers to practice job interviews.

Outside of practicing with others, spend as much time as possible practicing answers by yourself out loud. It takes time for things to flow just right.

  1. Find out who is going to be interviewing you, then look them up on LinkedIn, Twitter, and Facebook. Most questions in interviews have many correct answers, so the more context you have on your interviewer, the better you'll be able to predict which correct answers they're looking for! Elite tip: It can be a great idea to quote some of their own insights back at them, if they've written in blogs or on Twitter.

Also, find out as much as possible about the format of the interview. Data science interviews vary significantly, knowing the format can help you target the right skills for preparation.

  1. During the interview, you might get asked if you have any questions for the interviewer about the team or the organization. Here's a great list of questions you can ask; pick a few you find most interesting.

  2. Getting no follow up after an interview is not unusual - in this or in any other activity where you're selling yourself. Remember that you're playing a numbers game: each time you practice the technical interview your odds for the next time around go up.

  3. If you don't hear back from the interviewer: follow up with them 2-3 times by email (once every 2-3 days) with a simple, polite request for feedback. If you can combine that with a thought or a suggestion that would help their business (e.g., "I was thinking about the way you model sales for widgets, and it occurred to me that you might get better performance if you used model X instead of model Y because of Z"), that's πŸ’―.

  4. Your frame of mind is: you are a person who can add significant value to their business. If they don't want you, no problem: you will find another business and you will add value over there instead. There's no emotional component to the decision from either side; it's just business.

  5. To keep your energy high, focus on the process, not the goal. Allow yourself to feel a sense of accomplishment when you learn things that improve your process for applying / interviewing / etc. Focus on the inputs and the output will come eventually πŸ’ͺ.

  6. In other words: learn as much as you can from each no, then deliberately move on. It doesn't matter how many nos you get. All that matters is that one of them is a yes. And that will happen!!!

Random Interview Tips/Notes

Things on your resume and that you mention in the interview are fair game for deeper follow ups. Play to your strengths.

Topic Specific Interview Practice Resources

Generic DS/ML

I like Chris Albon's ML Flashcards. Comparatively low effort + spaced repetition over time can help reinforce concepts.

https://www.coriers.com/the-data-science-interview-study-guide/

https://towardsdatascience.com/giving-some-tips-for-data-science-interviews-after-interviewing-60-candidates-at-expedia-395fff7e073b

SQL

SQLZoo

HackerRank

Computer Science Whiteboarding

This is still sometimes a part of data science interviews, depending on the company.

CodeSignal

LeetCode

HackerRank

Random FAQ and Tips

What if I don't know what career path to follow?

Use the Waterloo strategy. Here's what that is: (1) you work at a tiny startup that can't afford anyone better; (2) you work at a BigCo or consulting firm like KPMG or Oracle; (3) you work at a startup at Series A or Series B; (4) you work at Google or Facebook; (5) you work wherever you want.

I just got a job offer. Should I negotiate the salary?

Yes!!! But before you do, you should do two things. First, tell your career coach about it so they can help you negotiate. Second, read this blog post.

What kinds of meetups should I go to for networking?

Most meetups you go to will be a waste of time, but when you're starting you should go to all of them and figure out which ones are good and which ones are bad. The good ones will (1) be technical; (2) be small; and (3) repeat often (e.g. once a week). If you can't get all 3, then prioritize (1) and (3). A meetup that repeats often means you'll build long term relationships with the participants, many of whom will be hiring managers you want to work for.

This strategy is way more successful than going to one-off "networking" events. Real networking is more than adding someone on LinkedIn: it's about building relationships that compound over time. The sooner you start, the better.

How can I tell if a company's DS/ML team is actually good?

Evaluating the work of a company's ML/DS team from the outside can be irreducibly hard. Usually, you can't assess the quality of their work upfront because as an outsider you can see neither the inputs nor the outputs. My best advice is: ask them during the interview. Try to figure out what goes in, what comes out, how the pipeline is organized, and then ask yourself if it all seems reasonable.

Is there anything different about being a data scientist at a small (~20 employee) company?

Yes. Read this Medium post.

If I'm given a take home test with no deadline, how long should I take to submit it?

There is generally a deadline, make sure you ask for it. A reasonable company won't ask you to spend more than a day of work (8 hours) on a take home assignment.

When in doubt, ask your career coach or drop a question in ds_help.

Does Lambda School source jobs?

Once you're endorsed by a career coach, Lambda School does have some job leads available. You should not rely on these as your source of jobs. Continue actively applying on your own.

Is there any benefit to Open Source Contributions?

Yes, there can be. I found open source contributions useful in bulding my engineering skills.

If there's a specific company you're interested in working with, and that company has open source projects on GitHub, it's a very good idea to contribute to their open source codebases. For example, if you really wanted to be hired by Uber, you could contribute to this project. If you have a contribution accepted, you can and should list this on your resume under a section like "Open Source Contributions".

About

Hopefully a useful guide to the job search process for Lambda School students