The Ultimate Guide To Getting a Tech Job For College Students

August 4, 2022 (2y ago)

Photo by Jared Erondu on Unsplash

This 4-part series, written for people trying to get their first job in tech, provides a detailed approach to understanding what it takes to get a job as a software engineer. I’m mainly going to focus on getting a job in the Bay Area, but in principle, the guide can be used by anyone anywhere.

We’ll start with an overview of job hunting, followed by A way to get your resume to pass the screen test before moving on to applying for jobs. The tutorial will be completed with an in-depth interview preparation topic and finally cover negotiation.

The guide is focused on folks who didn’t attend Big-N schools or have Big-N internships since getting a job without them requires some hustle and out-of-the-box thinking.

All opinions in this post are my own. However, I will talk about my experience and share all the tips and tricks I learned. While many of you might not agree with these methods, it’s important to remember that this was how I approached this challenge.

Please use any content of this blog post that is appropriate for you.

Part 1: Resume

Let’s get started with how we hack the resume. The resume is the first step that lands you interviews. So, let’s talk about what you can improve in your resume to make it more visible and attractive to recruiters.

Table Of Contents

  1. Example of how your resume travels around a big N

  2. Beating the Applicant tracking system(ATS)

  3. Getting past the 6-second recruiter screen.

  4. Getting past the engineering manager.

Example

I will give you an example of numbers on how your resume gets to the engineering manager.

On average, a Salesforce software engineering position gets about ~3000 applicants (Online applications). Now that’s a considerable number.

  1. But most applicants need to realize that 75% of those resumes are rejected by something called ATS (Applicant Tracking System), which takes the lower bound of percentages.

  2. Congratulations! Now you are one of the 750 people whose resume has made it to a human — The recruiter. Now it’s time for the infamous six-second-resume-scan. The recruiter, on average, will spend about 6–10 seconds on a resume scanning for keywords and further narrow the applicant trail down to 100–150 applicants. That’s another 20% decrease in applicants.

  3. These 100–150 applicants are given some coding challenge/behavioral interview, which lessens the applicants down to 50.

  4. The next step would be another screen, which could be technical/behavioral, which should reduce the candidate pool to 10–15.

  5. The engineering manager then decides if you should be called onsite. If you have come onsite, there are about 5–7 (I had 12!) more interviews before you get the offer.

Nervous? You shouldn’t be. The Bay Area is known for its competitive hiring, and companies use the strategy of rejecting talented people if that means avoiding hiring false positives.

There is a lot of randomness in the process. The recruiter might be busy or just about to go on lunch and might throw away your resume. The ATS might incorrectly read some experience you thought would come up etc.

We want to do our best to minimize the randomness.

Tips To Make Your Resume Stand Out

ATS Scanner — Most (if not all) tech companies in the valley use an ATS scanner to parse applicants’ resumes. Long story short, An Applicant Tracking System or ATS for short — is software that recruiters/recruiting agencies use to collect, sort, parse, and rank prospective job-seekers according to open positions. You might be asking why companies use this fand; this might seem unfair. Well, the truth is that Fortune 500 companies receive way too many applicants to be sorted by humans. Therefore, if recruiters didn’t use ATS, hiring pipelines would get clogged up, making hiring slower.

So whether we like it or not, the ATS is here to stay, So we might as well understand how it works and how we can beat it.

  1. Basics Of How ATS Works

The ATS parses a resume’s content into categories, scans those categories for specific keywords that have been predetermined, and then ranks the resume. The resume is passed on to the recruiter if there is an A X % match.

So this only means that the ATS is designed to weed out the least-qualified applicants instead of identifying the best candidates.

As you may have guessed, this also weeds out the best candidates who need the right words in their resumes. If this is one of you and you have received many rejections, it’s not your fault.

  1. Beating ATS

Here is where resumes go wrong. (stats according to TopResume)

  1. 25% of applicants have buried contact information in the header.

  2. 43% of applicants are submitted with an incompatible file type.

  3. 21% of applicants use graphics or charts which are unparsable.

  4. People use fancy templates that are also unparsable.

Contrary to popular belief, PDF is not the most ATS-friendly file type. While PDFs do a phenomenal job at preserving your resume’s design, style, and format, not all ATS support PDFs. So, unless the file type listed is pdf, stick to using .doc or .docx. Likewise, .txt file types are the best for ATS parsing but limit your options for style and design.

II(a) Optimize with the right keywords.

One of the best ways to beat ATS is to use the right words in your resume. You might often think that using words like “attention to detail,” “proactive,” etc. may seem like fluff or too much, but if it’s in the job description, unfortunately, it might have been added to ATS. To play it safe, you can add it to the soft-skills part of your resume. No one will judge you for adding those words, so better safe than sorry!

An excellent website for this is jobscan.io, which has an ATS parser for anyone who wants to use it. It also provides unique metrics such as what experiences it found, skills found, etc. You can paste the job description in one box and your resume in another, and Voila! You have your results ready.

Be sure to tinker with the application and optimize your resume as needed by the job you are applying for.

  1. Getting Your Resume Past The Recruiter

The recruiter is the human version of ATS, who also scans your resume for keywords and hands the resume, which passes the screen over to the hiring manager.

The recruiter looks explicitly for one thing: TECHNICAL BUZZWORDS. (Note: This is valid for online apps and career fairs, which we will discuss in part 2.)

Now, what are technical buzzwords? Haven’t you already passed the ATS scan? The recruiter wants to see if you are fit for the job. The recruiter will scan your resume and try to find experiences in FAANG or other BIG-N companies.

Now, I will go to the skills section of your resume and find the predetermined technical skills required for the job.

For Example, if your job posting says:

We use the MERN stack and AWS.

Make sure you have the keyword “MERN stack” in your resume and MongoDB, React.js, Node, and Express.js. The recruiters are not technical people. They are like a pattern-matching algorithm that makes a binary decision based on what skills they see.

Recruiters are also known for discarding resumes for things that you and I think are irrelevant to whether or not you are qualified to do your job. But, unfortunately, it happens, and here are some things to avoid.

  1. 78% of resumes are discarded for an unprofessional email address!

  2. 88% of resumes are rejected if they include a photo.

  3. They spend 80% of the time on past companies and skills (A WHOLE 4.8 seconds!)

Conclusions: Make sure that you have the right skills listed in your resume, have a professional email id, no pictures, etc.

  1. Getting Your Resume Approved By The Hiring Manager

Now, this is the most critical part. You’ve made it this far, and this decision breaks or does the interview.

The engineering managers are looking for the following skills: ATTITUDE, APTITUDE, AND CHEMISTRY.

  1. Attitude: Do you have the right attitude for this job? Do you want to work here? Are you going to be a good fit?

  2. Aptitude: Do you have the skills to do the job? Do you have previous experience: Projects, Internships, etc.? This is usually resolved using remote tests, hackerrank, or other tools. While your Aptitude is not the biggest reason for hiring, you have to be good at what you say you’re good at.

  3. Chemistry: Managers are very BIG on communication skills. It makes sense they have to manage a group of people and want to see whether or not you have the technical chops and the communication skills. They also want to see whether you can gel with other team members because if you’re an excellent developer but an ass in general, you will do the company more harm than good.

In the valley, technical experience is, fortunately(unfortunately), found everywhere. Every other coder has worked someplace, knows X stack, etc. So how do you differentiate yourself? Be excellent at soft skills. Technical skills are essential, don’t get me wrong. But it’s the soft skills that help you stand out from the crowd.

Now What?

You made it! Here is a quick recap of what we did:

  • Introduced ATS and how we beat it

  • Looked at what keywords are suitable for your resume.

  • Understood what doesn’t work in your resume.

  • We looked at what it takes to get your resume past the recruiter and engineering manager.

There’s still much more reading to do:

Part 2: Applying

In this article, we will talk about the optimal way to apply for jobs.

NOTE: Some of these methods might be socially unacceptable; therefore, you should do what YOU feel is right.

Now that you have that impressive resume let’s talk about how you can apply for jobs.

In this article, I’m going to start with my statistics for how many jobs I applied to, how many interviews I got, and the means I used to get those interviews.

Next, we will move on to what methods we can use to apply to jobs.

Table of Contents

  1. My Statistics of Job Applications

  2. Employee referrals

  3. The art of cold emailing.

  4. Walking into companies.

  5. Career Fairs.

My Job Application Statistics

An incredible percentage (~72%) of my interviews were from cold emails or walking into companies. On the other hand, only a disappointing 15% of interviews were from online applications.

Overall, I converted my application into interviews approximately 1/4 times, so one interview for every four was rejected.

An important thing to note: These interviews are over seven months. Many variables affect these numbers: Continuous iteration of my resume over time, peaks and valleys in hiring, etc.

But the overwhelming statistic here is that Cold-emailing and walking into companies got me my interviews.

Methods to Apply for Jobs

Employee Referral

The easiest way to get your resume directly read by a recruiter or an engineering manager is by using an employee referral.

The referral almost guarantees that a human will read your resume. So if you can get one of those valuable referrals: Get em!

Tips for getting employee referrals

Squeeze your networks (Extremely shamelessly — I cannot say this enough): For many people, reaching out to friends, alums, professors, and classmates for referrals might be embarrassing. But trust me, it was for me!

Below I have added a sample email I used to ask for referrals. One is with a classmate at Atlassian, and the other is with my professor, who has many contacts in the valley. For my professor, I just browsed his LinkedIn contacts and made a spreadsheet of people I would like an introduction to. For some, he did.

**Subject: **REQUEST: Opportunity to show what I can bring to your team at Apple Body: Hey Emily, It looks like I missed you by 2 years at CSUMB!. I’d greatly appreciate a chance to chat about how I can help your team deliver a great mapping interface for Apple maps. Are you available for a quick, 15 min coffee at <Somewhere extremely close to them, coffee shop by their office etc> sometime in the coming weeks? Say this Friday at 3pm? I know you’re busy — I’m to work around your schedule in any way. I’ve built a few projects in React <direct link to projects>. In one, I create a web interface that I built for the <something> to help researchers effectively communicate the effects of climate change on the local water ecosystem — to the local community using Apple maps. I was hoping to chat with you about how your team uses (x technology) for Maps, to share my work in greater detail and to see if there could be a good fit for me on your team. Regards,

<your name>, w: <link to your website> c: <your phone number>

The other method you can use for a referral is team blind. People there usually post for referrals and are often slammed by most people, but you only need that 1–2 to click! Just write a nice message, and something will click.

Another way is using Rooftop Slushie, where you can set some money for employees to give you referrals.

Note: I have never used Rooftop slushie, but I’ve had friends use it to get referrals.

The art of cold-emailing

The ultimate hack for getting things you want — Intros, referrals, connections. For the following two methods, cold emailing and walking into companies, Many people don’t use them out of fear, and others don’t because they think it’s socially unacceptable. So again, I want to reiterate: Use it to your benefit.

Now, let us say you have no friends/professors from whom you can ask for referrals. Or let’s say that you’ve milked your contacts and still no luck.No worries, you have officially used what you can say is “the tip of the iceberg.”

You now have access to thousands, if not 10, of employees working at places you want to work. The next step is to cold email the people who work at these companies and try to impress them. Impress them enough that they directly give you an interview or, in some circumstances: straight offers.

Who to Email: The people in power. The people who can either get you an interview directly or the people who can hand your resume to get you an interview.

Who are those people: Those people are the Engineering managers or the Engineers working on the team.

WHY?: If an Engineer or Engineering Manager wants you on their team, they can make things happen! They can skip steps, get you ahead of the line, etc. Usually, everyone is spamming the recruiters, so the odds that they get back to you are slim.

TOOLS THAT YOU NEED TO USE:

  1. LinkedIn: Use this to find the names of Engineering managers. Click on the company name -> People -> Search Engineering Manager.

  2. hunter.io && rocket reach. co: Use these tools to find the managers’ emails.

  3. snov.io: Use this to track who has opened your email. This is to determine whether or not your emails are being read. Usually, an interested manager will open your email multiple times and click on different links. All of which can be accessed for free.

  4. Companies that I got an interview from — Quora, 23nMe, VSCO, Apple, Benchling, Mapbox, Zendesk, and many more.

Here is a sample of a cold email that I used:

Dear Eric (CEO of Mapbox), I’d greatly appreciate a chance to further Mapbox’s mission, by contributing as a software engineer/intern/apprentice on your team. A little about me: My name is x and I am a recent graduate from y. I have experience as a full-stack web developer but something I realized very late is that I am crazy about working with Maps, data-viz and geospatial data and due to my experience with Web. I’ve build a project, a visualization of Uber drivers speeding around San Francisco. I built this by extracting OSM, Mapbox and Uber Telemetry data and processing it using Spark. The link to the codebase: (www.github.com/xx) I read about how Mapbox is building the future of telemetry data vizualization and I was hoping to chat with you about what I can bring to the table and see if there could be a good fit for me on your team. I know it’s a lot to ask, but would you be available for a quick, **15 min coffee **at (Somewhere extremely close to them, coffee shop by their office etc) sometime in the coming weeks? Say this Friday at 3pm? I know you’re busy — I’m to work around your schedule in any way. Sincerely, Name (Number/Email)

Yes, you read that right. That was the company’s CEO (whom I got a response + Interview, + Offer! from). The types of people I have a cold emailed and gotten a response from are Engineers, Engineering Managers, VPs, and CEO.

TIPS FOR COLD EMAIL:

  1. Show extreme passion and enthusiasm for their companies! Show that you’ve read their blog posts or their patents. If you can show that level of interest in that company, trust me, you will get that interview.

  2. WAIT! If you don’t get an email back in a day or two, don’t fret. Even if they leave you reading, I cannot stress this enough. It’s a waiting game, and people are busy! (Especially the higher up the chain you go)

Walking into companies

Here is where everyone will tell me how this is unacceptable and why you should not do this. But this got me most of my interviews, so please feel free to skip this section if you don’t like this approach.

Having spent all my adult life in the Bay, I’ve always heard about The hustle of the Bay and how it is widely respected. So I decided to go with the hustle route.

So here’s how you do it. Grab your resume, make a cover letter for the engineering manager (it could be the same as a cold email), walk inside companies and drop your letter off. THAT’S IT

Go as far as you can in the company; drop it off at the entrance desk; give it straight to the Engineer if accessible; whatever you need to do to get it to the right hands.

SECONDARY APPROACH: Mail it. Every Engineer has a mailbox at their company and will have mail delivered to them. Worst case, they open it, say a few words and trash it. Best case — They LOVE the way you approach things and decide to give you an interview.

PS: I got an Uber onsite this way; no-frills, no Hackerrank, just straight Onsite.

The list of companies I got interviews with this way is incredible.

I urge you to drop any shame and get it done. You can thank me later.

Attached is one of many responses I got from dropping my resume/mailing it. This one is from a senior director at Uber maps, where I got fast tracked to an onsite and got an offer :)

Hi Gautam, I got your letter and your resume — loved your passion and approach! My team itself doesn’t do much fullstack unfortunately (we are mostly backend), but I think you’d be a great addition to some of the Maps or Visualization teams at Uber! Happy to jump on a call and give you an overview of Maps. I can chat any time today between 1–4pm or Monday between 10–11:30am or 2–3pm. Let me know what works for you, and looking forward to the chat. Thanks,

(Name redacted)

Career Fairs

Aah, the college career fairs. The hustle-bustle of the students. Huge lines for companies for a few seconds to talk to a recruiter or Engineer and impress them enough to interview you.

Here’s the know-how:

  1. Have a resume in your hand and be ready.

  2. Have a 30-second elevator pitch: Who you are, what you do, and what you’re interested in.

  3. Have your phone in hand with the contacts open: Immediately after the conversation, ask them for their work email for a follow-up email.

  4. Know who you are talking to the Recruiter or Engineer. (Usually very easy to spot!) If you are talking to a recruiter, know your buzzwords. Mine was React, Machine-learning, TensorFlow, and MEAN stack.

  5. If you are talking to an engineer, be ready to explain your past work/projects in detail. You should be prepared at any point to talk for 30 minutes about your projects.

  6. Stay till the end. Ask if you can help out. They usually carry a ton of stuff to their cars and are tired at the end of the day. Use this time to sell yourself. [I got an interview with Plaid this way :)]

  7. Same Day Follow-up!

A Socially Unacceptable Experiment

I went to a small school in the central valley. The best company that came to my school was in&out (no shade). So I drove two hours to Berkeley, CA, and tried to attend the UC Berkeley Career Fair.

Here are two ways that you shouldn’t do it:

DO NOT ACT LIKE YOU BELONG AND TAILGATE OTHER STUDENTS INSIDE THE VENUE JUST BECAUSE THE PEOPLE WHO ARE CHECKING IDS ARE STUDENTS AND DON’T CARE

DO NOT UNDER ANY CIRCUMSTANCE ASK OTHER STUDENTS FOR THEIR IDS SO THAT YOU CAN USE THEM TO ENTER

As I said, Please DO NOT USE any of the abovementioned methods. They are not acceptable in any circumstance.

That’s it! In this section, we completed a walkthrough of How you can apply for jobs and get interviews. For the next part, we will focus on how you can prepare for those interviews. See you there!

Part 3: Applying

Have you ever failed a tech interview? Unfortunately, I have failed many interviews, from behavioral interviews to phone screens and onsite whiteboarding questions. I can remember the embarrassing situations of having massive pit stains and having to restrict raising my hand to write code.

For the most part, I was well prepared to face Interviews. But, I kept on failing interviews one after another. Finally, I needed to have a set schedule and put in more prep time, and coding experience in previous internships would help me crack these interviews. Well, coding interviews are a different beast. The test for algorithmic puzzles is very different from coding in real life, and therefore, one needs to prepare accordingly.

Interviewers want to work with candidates they like. Therefore, leaving a good impression on them improves your chances of success.

Tell me about yourself. How did you get into coding? Why was X(job-specific) a good fit for you? How do your goals align with X companies?

The elevator pitch

An elevator pitch is a short description of an idea, product, or company that explains the concept in a way such that any listener can understand it in a short period. This description typically explains who the thing is for, what it does, why it is needed, and how it will get done: imagine you are stuck in an elevator with someone to who you want to sell yourself. You have about 30 seconds to a minute to get your point across.

  • Keep it short

  • Get straight to the point

  • Grab their attention

For example, for internships, you can say your name, school, area of focus, and past internships/noteworthy projects. For full-time positions, you should mention past companies, note-worthy projects, etc.

My name is Gautam, and I’m currently a student at CSU Monterey Bay. I have previously interned at the Museum of Natural History, where I developed an application that visualizes climate change in Monterey county, which over (some number metric that sounds like traction)

Or

I became interested in the mapping space because I loved the power of spreading a message across using a Map. Since then, I have been working on learning X tools and researching X possibilities, which is when I came across Uber maps. I’d be grateful to speak with you about X opportunity.

With an interviewer, you must always ask the question: Why do they want me? Then, align yourself with the company’s values, understand what tech stack they use, read their engineering blog, and impress the interviewer.

Assumptions

The first assumption is that you know how to code. You know a language you are familiar with and (hopefully) know thoroughly.

This article covers a general tech interview blueprint: Behavioral and technical interviews. It does not cover specific questions like web development, embedded systems, etc.

Time To Prepare

Assume that to cover preparation end to end, you will need a whole month of dedication, spending 2–3 hours a day prepping. You can increase or decrease that based on your experience.

Table Of Contents

  • Cracking the behavioral interview

  • Cracking the technical interview

  • Practicing mock interviews

Now that you understand what to cover let’s dive right into it.

You’ve spent hours crafting your resume, applying to jobs, and practicing coding. Now the time is to put your skills to the test. This section will discuss how to crack the behavioral and coding interview and what type of questions you can expect.

Later, we will discuss what to do and what not to do during each interview, followed by tools we can use to help us succeed.

Cracking The Behavioral Interview

Succeeding in an interview involves more than just technical skills. Behavioral interviews are crucial, and their level of difficulty is directly proportional to how much experience you have. In addition, senior engineers are expected to lead, strategize, and mentor other engineers, so the bar of people skills is much higher.

You might be a talented SWE, but you must work well with others to be an asset to the company. There is a surplus of talent in the valley, so companies want to hire talented engineers with people skills. They don’t want to hire brilliant jerks.

The company is more than happy to find a lesser talented engineer than someone who cannot work well with others, which can cause the team to be worse off. Behavioral interviews determine if someone will be helpful to work with from a non-technical standpoint.

Every company has a behavioral interview.

All tech companies in the bay area have behavioral interviews. For example, they had three behavioral interviews when I interviewed with Salesforce. One before even the remote technical challenge and two during the onsite interviews.

Ex: What Salesforce looks for in behavioral interviews

  • Any project on your resume is fair game. Be able to talk for 30–40 minutes about it.

  • Talk about how you faced a challenge and how you overcame it.

  • Example of what you did and what it resulted in.

  • What are you looking for at Salesforce, and why is this role?

Cracking The Technical Interview

The technical interview, whether whiteboarding or remote, boils down to the same things:

  • Can you solve a problem?

  • Can you solve it efficiently?

  • Can you communicate your thought process well?

Most coding interviews boil down to Hashmaps, DFS/BFS — Nikhil Dev.

How To Approach Studying For The Coding Interview

It’s time to review the basics: Data Structures and Algorithms.

List of the essential Data Structures and Algorithms:

  • Arrays and HashMaps

  • Linked Lists

  • Graphs

  • BFS/DFS

  • Kadane’s Algorithm

  • Djikstra’s Algorithm

The important thing here is to know all the technicalities of a data structure in a language you are comfortable with. Knowing the data structure well allows you to solve questions you have yet to face.

How to solve questions: I approached solving problems by setting a time of 1 hour for each question. No Matter what, after 1 hour, I would stop, and this was to replicate an interview setting. I would try to solve a problem for 30 minutes, and if I couldn’t, I would look up the solution and code it up in the last 30 minutes.

Please take note of the question that you had to look up and try to solve it again without looking the next day and then one more time after a week. So make sure that you’re comfortable with it.

Where should I practice questions: The sources I used to practice are well-known. I practiced using Cracking The Coding Interview and using LeetCode.

I found a great source that someone created a curated list of 50 or so questions on Leetcode, and this list is by far the best out there. I have seen the same pattern of questions being repeated over and over in interviews, just in a different language.

Leetcode favorite list

How many questions should I do?: My suggestion would be to approach the Breadth of problems rather than the depth. What I mean by that is to try multiple variations of different data structures and algorithms instead of going deep into one topic (say, Arrays).

During the Coding Interview

Now, you are ready to put your skills to the test! For example, the interviewer will be given a programming question in a coding interview. You will code it in real time using an Integrated Developer Environment (IDE) or a Whiteboard(onsite). The time for a question is usually 30–45 minutes, with 10–15 minutes reserved for asking questions at the end.

Preparing for the remote interview

  • Find a quiet environment where you won’t be disturbed.

  • Use earphones or noise-canceling headphones, and avoid using inbuilt speakers.

  • If you need a laptop and need to use a phone, let the recruiter know beforehand.

  • Make sure you have a pen and paper to write the question down.

At the start of the interview

The interviewer will usually spend 5 minutes asking you to tell them about yourself. Make sure you are prepared with an elevator pitch.

The next step is receiving the question. Most candidates at this stage will jump to coding without clarifying the question. This can be a fatal mistake because the question might contain hints or aspects of the problem you must understand. Before coding, please take a deep breath and repeat the question word for word to ensure you got it right.

Try to ask questions regarding possible edge cases (discussed below) and understand the question end-to-end. Some interviewers omit details to see if you can notice that and ask questions.

Before you code, explain your high-level approach to the interviewer. First, make sure you explain the brute force solution and state its time and space complexity. Then, wait to jump into an optimized solution. Most likely, the interviewer will ask you if we can do better. Now state another solution you know, and state the time and space complexity again.

After you both have agreed upon a solution: Ask if you can code the solution.

This is what an example might look like:

Interviewer: Write an algorithm that accepts an array and a target number as inputs. Your goal is to find two numbers that add up to that number. Me: So, I’m writing a function that accepts an array and a number as arguments, and two numbers in the array add up to the number? Interviewer: Yes, that’s correct. Me: Okay, is two numbers guaranteed to add to the target? Interviewer: That’s a good question. Yes, that is guaranteed. Me: Okay, What about an empty array, infinitely large numbers, NaN target, and Infinity as inputs? Interviewer: If you get an empty array, throw an exception, and for others, assume you get accurate numbers as inputs. Me: Thanks. I have a solution in mind. I can run two-for-loops, one that points to the first number and the other that iterates from the second onwards and keeps checking if it adds to the first number and, if not, keep checking every subset until the target is reached. The time complexity would be quadratic (O(n²)), and space would be O(1). Interviewer: Great. But can we do better than quadratic time? Me: Umm, we can throw the list of numbers into a hashmap where insertion is O(1), and as we add an, keep checking if target + added number is in the hashMap until we get to a solution. The time complexity would be Linear (O(N)), and the space complexity would be O(N). Interviewer: Yeah, that sounds like a good solution! Let’s code it up.

What to do if you’re stuck during the interview

It’s completely natural to be stuck during an interview. I remember one interview where I was utterly lost, and the interviewer didn’t want to give any hints, so I just stared at him and the whiteboard for 45 minutes.

But don’t worry; this is just a part of the process, and here are something’s you can keep in mind when you are stuck:

  • Talk through what you initially thought and explain why it doesn’t work.

  • Talk about all the data structures you can use and whether they can be applied to the question.

  • Try to think of questions that relate to the question and communicate them to the interviewer.

  • In the worst case, it’s better to let the interviewer know that you don’t know the answer, and in that case, the interviewer can help you with tips or even ask a different question.

After coding

You mustn’t just announce that you are done. Always keep questioning every line of code. Ask the interviewer if it is okay if I run through a couple of test cases to see if the code is working.

Walkthrough your code and try to break it in every way you can. If the interviewer is happy with your solution, the interview ends here. But there is one last essential thing.

If there is time left, ask your interviewers questions that you have prepared. Questions specific to their work would be great, or about the company, team, etc. Questions to ask interviewers

Do’s and Don’t During A Technical Interview

  • Do: Dress nicely. This is a weird one. Most engineers don’t care how you dress, and the dress code in silicon valley is casual as already, but some (older) interviewers make a decision based on your appearance.

  • Do: Start the interview by greeting the interviewer and trying to make an excellent first impression. Be confident.

  • Do: Listen to the interviewer carefully. A lot of times, the interviewers drop hints in their questions. (Ex: The list is sorted, which means that you can do the problem in a time better than O(N log N))

  • Don’t: Do not assume anything about the question on your own. If you have a doubt, clarify it!

  • Do: Ask about edge cases! Spend at least 5 minutes clarifying all the edge cases that come to your mind (What happens if a list is empty?) ** We will discuss a list of edge cases below.

  • Do: Have a Brute force solution. Refrain from assuming it’s too simple and the interviewer doesn’t care about the brute force. The interviewer wants to see that you can come up with different solutions and iterate on them to improve them!

  • Don’t: Keep quiet during the interview. Even if you need time to think, let the interviewer know.

  • Do: Communicate what you are thinking! It is imperative to keep talking during the interview. Let the interviewer know what your approach is and what you plan to do next. I cannot iterate how vital this point is.

  • Do: Let the interviewer know if you need help solving the problem. Usually, you know within 10–15 minutes if you can solve the problem. Let the interviewer know so they can give you a hint or another question! [You might face some interviewers who want to see you struggle: screw them. A good interviewer wants to help you out, so believe that.]

  • Do: This is extremely important and cannot be stated enough. Have questions for the interviewer at the end. No Matter how you did, have questions that you have researched about them, or have great questions about the company! This really-really shows your interest. Questions to ask interviewers.

Some of these things might not be as highly ranked as solving the problem, but we want to control every aspect of the interview, including impressions, and leave nothing up to randomness.

Some Edge Cases to think about

String Questions — Empty String, If all characters are identical, upper/lower case chars, ridiculously long strings, if spacing matters, odd/even length.

Number Questions — If the number is: 0, negative, infinite, floating-point, huge values, smallest values, NaN.

Array Questions — If the list is empty, null. Can the array wrap around? Worry about Time-amortization — Dynamic Arrays take O(N) time to insert when array size has been reached; therefore, capacity must be doubled.

Other DS — Null, Head/Root does not exist.

General — How big is the range of values? Are there Duplicates? How is input stored [If given a dictionary of words, is it a list of strings or a Trie]

Practicing for the interview

Interviewing is a skill that you can get better at. The steps mentioned above can be rehearsed over and over again until you have fully internalized them, and following those steps become second nature to you. An excellent way to practice is to find a friend to partner with, and the both of you can take turns interviewing each other.

Mock interviews are the most critical aspect of interview prep. Getting used to the nerves during the interview can be challenging. It isn’t easy to go up there and start talking. It takes practice because INTERVIEWING IS A SKILL.

  • Pramp: Practice Mock Interviews with peers for free.

  • interviewing.io: Practice Anonymous interviews.

  • ME: Email me (or Buy me a coffee), and I’d be happy to help to chat about interviewing or even conducting mock interviews — In-person and Remote :)

Conclusion

Preparing for Interviews is tough. I failed dozens of interviews and prepared for seven months, day in and day out, after I graduated college before I joined Salesforce. Then, finally, I realized that Interviewing is a skill that needs to be mastered.

It’s easy to feel nervous right now, but trust me, it’s a numbers game. So keep interviewing, keep practicing, and block all other noise out. It doesn’t matter what people say, what family says: You are good enough to work here. All it takes is a lot of practice and a bit of luck.

I’d love to hear about any job updates or if I can help, so please reach out to gautamtata.blog@gmail.com.

The last part of the series covers Negotiation. See you there!

Other Resources

Part 4: Understanding Compensation and Negotiation

Congratulations on getting the offer(s)! You may think that you’ve done the heavy lifting, you’ve slogged through interviews, and the most challenging part is done. While that may be true for some, for most people, compensation is a significant factor in deciding which job they want to take.

In this article, we will discuss a compensation package breakdown and then discuss negotiation rules.

Table of Contents

  • Base Salary

  • Sign-On Bonus

  • Equity

  • Negotiation

Base Salary

The base salary is the fixed monthly amount the company gives you for coming in to work. It is a fixed number and does not depend on your or your company’s performance.

The base salary you get depends on which type of company it is: startup or established.

Startups usually give you a higher base salary because their stock doesn’t mean shit. You’re taking a gamble on your stock being profitable in the future with a company that might fail, and therefore you get a higher base.

Interns: A base salary of 4–6K can be expected in most companies.

New Grads: The 2020 base salaries start at a more competitive range of USD 120,000–150,000 annually.

It’s a common misconception to think that the higher up the chain you go, the more your base salary increases. This is not true. While your salary grows for a couple of years, after you become a senior engineer/lead/manager, you get more equity as you’re expected to lead your peers, which increases your total compensation.

Companies with more money, like Netflix, Google, Facebook, etc., can offer more if you have competing offers.

Sign-on bonus

A one-time payment that you get paid when you join the company. Most companies start with a base sign-on of 10,000 dollars, but it can go up to $50,000 (Talking about new grads and year 2020)

Most companies have a clause in the contract that if you leave before the one-year mark, you need to return prorated amount.

Another thing to remember is that bonuses are taxed on the highest bracket: Around 40–45%. Therefore, if you receive a single-sign-on bonus of $20,000, expect to earn around 13K.

Equity/Stocks

The difference between tech companies and non-tech companies is equity. Tech workers get a share in the company to motivate employees to work in the company’s best interest, which can be a massive chunk of the total compensation.

You can usually vest equity (When the whole amount is available) over four years. However, most companies have what’s called a One-Year cliff, which means that you won’t have any stocks available to you until the end of 1 year, but then you will get your shares on a prorated basis of 1 month at a time for three years.

Stocks have value when they are publicly available. If a company has an Initial Public Offering (IPO), its shares have value. Startups usually provide you with insane amounts of equity, but they don’t mean much until they IPO. So think about what you are getting into!

Stocks can be granted in any number for a new grad: 50K — 400K over four years, depending on your negotiation power.

Employee Stock Options

Employee Stock Options — ESOs are usually given to mid-sized companies. They differ from the equity we discussed above (Restricted Stock Units — RSUs), which are provided to you. Stock options are different in the sense that you have to purchase them. You are also permitted to purchase a limited number of shares, but the good news is that you can buy them at a Strike Price, which is much lower than the current valuation of 1 stock.

The most significant benefits of a stock option are realized if a company’s stock rises above the exercise price. Typically, ESOs are issued by the company and cannot be sold, unlike standard listed or exchange-traded options. When a stock’s price rises above the call option exercise price, call options are exercised, and the holder obtains the company’s shares at a discount. The holder may choose to immediately sell the stock in the open market for a profit or hold onto the stock over time.

Example: If Company X gives you the purchasing power of 2000 stocks at a strike price of 10 dollars per share at a valuation of 20 dollars per stock, you are essentially doubling your money.

Value of 2000 stocks = 2000*20 = 40,000

Value of 2000 stocks at strike price = 2000*10 = 20,000

Profit = 40000–20000 = $20,000

When you leave a company, you are given a time frame to exercise your stock options. Therefore, it’s imperative to have cash on hand to purchase these stocks.

Perks And Benefits

While these perks are not cash, they can help you save money and are also targeted at making your life easier. Some of those perks are:

  • Free Lunches/Dinner

  • 401K Matching

  • Paid Gym/Mobile Bill

  • Full Medical/Dental/Vision covered

  • Paid commute

  • Free shuttles with Wi-Fi

  • Education reimbursement plans

  • Donation matching etc

Negotiation

Most points are extracted and paraphrased from “Ten Rules for Negotiating a Job Offer,” Part 1 and Part 2 by Haseeb Qureshi.

Now that you’ve understood everything about compensation, it’s time to dive into how to negotiate your compensation. This can be base salary, equity, or even PTO.

Rule 1: Get Everything In Writing

Have everything written down, as it might be helpful later. Even if the recruiter tries to forget some of the things they’ve mentioned, you would have everything written down.

Write everything down even if it doesn’t have direct monetary value:

  • We work with Python, Spark, and Scala: Write that down!

  • We offer four weeks of PTO and one year of maternal/paternal leave: Write that down!

  • We cover your phone bill and provide 200$ for wellness: You guessed it, Write that down!

The goal is not only if the recruiter needs to remember but also for you to decide. Naturally, you will want to create pros and cons, so this list will help you decide!

Rule 2: Always Keep The Door Open

Now that you have the offer, the ball is in your court. The company has spent hundreds of hours and thousands of dollars on giving you this offer. THEY WANT YOU! So, do not give up negotiation power until you are ready to make an informed final decision.

Very often, recruiters will try to trick you into accepting an offer. They might say something along the lines of

“We’re delighted to extend you an offer! Here are the details of your compensation! What do you think? Can you give me your decision?”

“We’re thrilled to extend you an offer! Here are the details of your compensation! What do you think? This offer is the best we can do, and the hiring manager needs a decision asap to start your onboarding process.”

This is the time you shouldn’t panic. Just remember, they want you! They won’t lose you just because you asked for more time unless it’s an exploding offer.

It would help if you had some backup lines ready to push the recruiter off and make a decision later.

Rule 3: Information Is Power

Keep the mystery in the negotiation. The information you have with you is a powerful tool. Try to give out as little information as possible.

When a recruiter initially gives you an offer: do not comment on the offer; do not try to negotiate the salary or reveal which companies are currently in your pipeline. You could currently interview for a company you want to work for or have another offer in mind. Recruiters will do their best to squeeze these details out of you. They’ll try to ask what your current compensation is or what other offers you have. Be mindful of this and protect your information as much as possible.

A sample dialogue of what you can say when you are pressed for details:

“Yeah, [COMPANY_NAME] sounds excellent! I thought this was a good fit, and I’m glad you agree. Right now, I’m talking with a few other companies, so I can only speak to the specific details of the offer once I’m done with the process and get closer to making a decision. But we’ll be able to find a package that we’re both happy with because I would love to be a part of the team.

Rule 4: Have a positive attitude

Even if the offer is wrong or it’s not the company you want to work for, it is crucial to stay positive and enthusiastic about the offer you have received. Believe it or not, your excitement for the company is a valuable asset.

No matter where you are in the negotiation, make sure that the impression you give is:

  • You LOVE the company and everything they do

  • You’re excited to start working there

  • Compensation is one of many hurdles for you to work there.

You can do this by showing passion for the company’s mission, the engineering team, and the problem space.

A sample dialogue for that:

“Hey [Recruiter Name], thanks for reaching out to me. I have been interested in [Company Name] for a while and love the [Problem_Space] that the engineering team is working towards. For me, compensation is not a huge hurdle to work at your company, but I’ll need a day or two to look over the offer, and I’ll have the decision ready for you as soon as possible.”

Rule 5: Don’t Be The Decision Maker

Your friends/family might already be happy with the offer you have, or you don’t care what they think about your offer. But, by mentioning your significant other/parents/siblings, the recruiter has multiple people they need to win over. They realize there is no point in trying to trick you into making a decision. The TRUE DECISION MAKER is beyond their reach. This allows you to defuse the tension and buy more time to make an informed decision.

A sample dialogue for that:

I’ll review some of these details and discuss them with my [FAMILY/CLOSE FRIENDS*/SIGNIFICANT*OTHER]. I’ll reach out to you if I have any questions. Thanks so much for sharing the good news with me, and I’ll be in touch!

It’s much harder to pressure someone if they’re not the final decision-maker. So take advantage of that.

Rule 6: Have Alternatives

If you have multiple offers, you have leverage. The recruiters know that they are not the only people interested in you, so you can use offers to negotiate and increase compensation with all parties involved.

You should proactively reach out to the other companies in your pipeline. If you are in the initial stages of interviewing with a company, let them know that you have received an offer(s) and to expedite the interview process. If you have other offers, let them know that you have gotten a competing offer and schedule a chat with the recruiter. Build a sense of urgency. All offers have an expiration date, so take advantage of that.

Hello [PERSON], I am updating you on my process. I’ve just received an offer from [COMPANY], which is quite strong. I’m excited about [YOUR AMAZING COMPANY] and want to see if we can make it work. However, since my timeline is now compressed, can you please expedite the process?

Should I mention the name of the company from which I have an offer? That depends on which company it is. Companies want to snag you before other big companies, or competitors get their hands on you. So if it’s a Sexy name, drop it. If it’s a direct competitor, drop the name.

Ex: If you are talking to a recruiter from Uber and you have an offer from Lyft, definitely mention it. The same goes if you have an offer from Box and another from DropBox.

Even if the companies are not direct competitors but are big tech companies, mention their names. There is no point in mentioning this if it’s a no-name, small startup, etc. You have an offer from them, which is expiring on this date.

Companies know the interview process in other companies and how easy it is to weed people out. Candidates with multiple offers signal they have what it takes to pass multiple rounds of interviews and numerous companies, which works in the candidate’s favor.

Tell other companies that you’ve received offers. Give them more signals so that they know you’re a valued and compelling candidate. And understand why this changes their mind about whether to interview you.

Your goal should be to have as many offers overlapping simultaneously as possible. This will maximize your window for negotiating.

I’ve received another offer from [OTHER CORP] that’s very compelling on salary, but I love the mission of [YOUR COMPANY] and think it would be a better fit for me. I’m also considering returning to grad school and getting a Master’s degree in [something]. I’m excited about [YOUR COMPANY], though, and would love to join the team, but the package has to make sense if I’m going to forego a life of [something].

Rule 7: Have Reasons For Everything

State a reason (any reason) that makes your request feel important. It doesn’t mean that you are greedy, but it’s just that you are trying to achieve your goals.

Try to give more sympathetic reasons:

  • Medical bills

  • Student loans

  • Children to take care of.

  • Parents to take care of.

Just have a reason for everything, and the recruiter is more likely to oblige your requests.

Rule 8: Be Motivated By More Than Just Money

This might seem either obvious or hard, depending on who you are. However, remember that most offers will differentiate at most 20–30K. While this is a lot of money, this is peanuts in your long-term career in tech.

Try to prioritize the following:

  • What the company does; Are you interested in Self-driving? Then pick a company that lets you do machine learning instead of a higher-paying backend role.

  • How good is the manager? The manager will be a mentor when you are at the company, so it’s essential to be a good judge of that.

  • Do you like the company or want to join it because it’s a brand name?

If you are unhappy with the company, it’s not good for you or the company. So, it’s best to make a hard decision early on.

Rule 8: Show belief in your talent

This goes to more than giving the company that you like. (This is something you should keep doing, as discussed earlier.) More than that, you should know your worth and believe in what you can bring.

Don’t play any games. Just be straight to the point, be clear with your preferences, and keep mentioning your time.

If you are not going to work for a company, politely let them know.

Conclusion

Thank you for making it this far. I hope that there was something you could take away from this post, and if you did, please reach out and let me know!