Are you trying to get a jump-start on your tech career while you're still in school? Have you found that perfect internship - or job - but you're not sure how to approach it? If so, this is the resource for you. Michael discusses how to craft your r\xe9sum\xe9, how to prepare for interviews, and much more.
Written by Michael Deng: https://twitter.com/themichaeldeng
Read by Abbey Rennemeyer:\xa0https://twitter.com/abbeyrenn
Original article:\xa0https://fcc.im/2BCESfo
Learn to code for free at:\xa0https://www.freecodecamp.org
Intro music by Vangough:\xa0https://fcc.im/2APOG02
Transcript:
Seven semesters ago, I started college with no programming background. The only thing I had was lofty aspirations of working in tech.
When recruiting season first rolled around, I applied to a bunch of companies. I got a few callbacks, but that\u2019s it. No follow-ups. No onsite interviews. Nothing.
I kept trying. I applied to over 150 companies. I faced dozens of interviews.
I failed way more than I succeeded. But that\u2019s all right. Because those failures made my moments of triumph all the more memorable.
Along the way, I met helpful mentors and guided ambitious mentees. These people are now working at places like Airbnb, Facebook, Google, SpaceX, and Snap.
As for me, I landed an internship at Uber last summer. And I\u2019m on track to accept a full-time job at one of my favorite companies when I graduate.
Now that I\u2019m in my final year of school, I want to share everything I\u2019ve learned over the years. This isn\u2019t meant to be the ultimate handbook. It\u2019s only a modest guide born out of my love of helping others reach their goals (and my love of Legos).
By the end of this article, you\u2019ll know everything I wish I had known when I first started sending in applications.
A few words before we begin\u2026
Don\u2019t let your struggle for the perfect job take over your life. School is a time of self-discovery and all-around personal growth. So go out there and meet people who are doing different things. Join diverse student organizations and take part in activities outside your comfort zone.
It\u2019s all too easy to associate your self-worth with how prestigious of a job you can get. But remember: there are so many more important things in life than work.
My best memories of college aren\u2019t spending weeks on end prepping for interviews or even getting offer phone calls. They\u2019re exploring San Francisco for the first time with my closest friends. They\u2019re playing volleyball with my hilarious teammates. I value these unique experiences I shared with people I love much more than any job.
To paraphrase my favorite quote by Twitter and Medium founder Ev Williams: \u201cFailure of your [work] is not failure in life. Failure in your relationships is.\u201d Don\u2019t lose sight of what\u2019s important.
It\u2019s also no coincidence that everyone I know with a strong support system eventually found success. When you fall into a slump\u200a\u2014\u200aand all of us do\u200a\u2014\u200ayou need your friends to be there for you. I would never have made it through my first year without amazing friends who kept me afloat.
Now, let\u2019s get started. You pumped? I\u2019m pumped!
Building fundamentals
Before we get to the good stuff, you need to build solid fundamentals. Seems obvious? Absolutely. But this is the hardest step of this guide, so listen up.
Now, this guide is designed for college students, so if you\u2019re in high school, scram! Just kidding. In fact, I admire your initiative. When I was in high school, I didn\u2019t have the faintest idea what I wanted to do.
Leading up to college, your top priority should be solidifying your math skills. Computer science relies heavily on mathematic concepts like probability, logic, and number theory. Without math, you\u2019re not going to get far in hard weeder classes and technical interviews.
If you\u2019re already proficient in math, keep reading. Most of this guide is just as applicable to you as it is to college students. Skip to the online classes section below and progress through the rest of this guide. Landing an internship as a high schooler is challenging, but certainly not impossible.
OK. Back to college students.
Building fundamentals starts with your intro programming classes. Pay attention and master the basics. A popular but misguided notion is \u201cGPA doesn\u2019t matter.\u201d Although it\u2019s true that most companies won\u2019t scrutinize your GPA, any gaps in your fundamental knowledge will come back to bite you later. By getting a decent GPA, you\u2019re also most likely getting a grasp of the basics.
Your classes will cover a lot of basic knowledge, but they\u2019ll barely scratch the surface of modern technology. Go explore interesting topics around the core concepts taught in class. This is how you gain a breadth of knowledge and come up with future project ideas.
If you\u2019re not studying computer science, don\u2019t worry.
I have friends who changed their minds and started CS their Junior year. They still graduated on time with great job offers, so you\u2019re not too late at all. This said, you will need to make sacrifices and take extra classes every semester.
If you\u2019re not able to take CS classes in college, there are plenty of awesome online resources to help you out.
Two of the best online intro courses are Harvard CS50x on edX and CS101 on Udacity. After this intro, you need to master data structures and algorithms. I recommend Princeton Algorithms Part 1 and Part 2 on Coursera, or CS61B by UC Berkeley.
To make sure you\u2019re on track, reference Google\u2019s Technical Development Guide.
Don\u2019t worry if you struggle at first.
A few weeks into my first semester, I was completely overwhelmed. I spent days studying concepts that took other students hours to grasp. I thought about giving up every week. \u201cHow am I ever going to catch up to those prodigies?\u201d
But if you ask me or any of my friends who made it through, we\u2019ll all tell you the same thing: Learning to program isn\u2019t about how talented you are or how early you started coding. It\u2019s about perseverance.
Building up your programming intuition takes a long time\u200a\u2014\u200amuch like learning a human language. You won\u2019t see the light at the end of the tunnel for a long time. But trust me. If you take one step at a time, you will eventually get there.
Staying motivated is difficult, but there\u2019s a secret.
Focus on mastery instead of results.
Make it your goal to get better at a skill rather than achieve a certain result. Dr. Heidi Grant Halvorson did a study where she asked two groups of people to solve various problems. The first group was told to score as high as they could. The second group was told to treat the problems as a learning opportunity.
The results were surprising. The first group got frustrated, whereas the second group persisted and solved more problems.\u200b
By focusing on mastery, you view obstacles and time pressure as things that will help you grow. In contrast, a result-oriented mindset frames problems as irritating roadblocks impeding your way.
What\u2019s more, you\u2019ll see continual progress if you concentrate on mastery. Every time you read a new paragraph or solve a new question, you\u2019re improving your skills. This kind of continuous gratification is incredibly satisfying.
So next time you\u2019re studying for class or practicing for interviews, focus on getting better instead of acing the exam or landing the offer.
You can read more about this tactic in Edmond Lau\u2019s Quora post.
Beyond basic coding skills, you need to know what\u2019s happening in the tech industry.
This goes beyond sounding smart during recruiting. By paying attention to the industry, you\u2019ll be the first to discover new opportunities to propel your career forward.\u200b
For online reading, check out TechCrunch, Techmeme, Product Hunt, and Hacker News. If you\u2019re a frequent Twitter user, follow tech news sources. On Medium and Quora, personalize your feeds to get insightful takes on the industry.
If you\u2019re into email newsletters, look into Axios Pro Rata, CB Insights, and Mattermark Daily.
To do a deep dive on a particular company, use Crunchbase and the company\u2019s blog. You can also learn about the company\u2019s culture from Glassdoor.
Finally, don\u2019t forget to actually talk to people. I learned so much about the tech world from casual conversations with friends and classmates.
Over time, you\u2019ll read about a lot of interesting companies. Begin compiling a spreadsheet of companies you\u2019re interested in from day 1. When you apply to these companies in the future, use this spreadsheet to track your progress.
Once you have the fundamentals down, it\u2019s time to apply your skills. One of the best ways to do that is by\u2026
Building projects
If you\u2019re like me, you don\u2019t have much experience to begin with, and that\u2019s OK! The first step is populating that empty resume with projects.
When I first decided to work on a project, I had decision paralysis for days. \u201cWhat should I make? What if it\u2019s not original? What if people don\u2019t like it?\u201d
Later, I realized it doesn\u2019t really matter what the project is. Learning something and finishing what you start is much more important. But this doesn\u2019t mean you can make whatever you want. If your project is too trivial, you won\u2019t impress any recruiters. If yourq project is too complex, you\u2019ll lose momentum before completing it.
Aim to do a project you think you can complete in one to two months. The project should involve data structures, algorithms, and design decisions. And do something you\u2019re interested in so you\u2019ll actually take it all the way to completion.
Here\u2019s a compilation of project ideas on Reddit for inspiration.
After coming up with an idea, take some time to plan, but don\u2019t take too long. You want to start as soon as possible. Now, you might be wondering \u201cIsn\u2019t it irresponsible to jump in prematurely?\u201d
Generally, yes. But personal projects are different from company projects. Personal projects should teach you something new and strengthen your background during recruiting. Unlike company projects, you don\u2019t need to obsess over design and code quality.
If you\u2019re feeling stuck at the beginning, write down some code\u200a\u2014\u200aany code. Building a personal project is like writing, you just start. Don\u2019t worry if it doesn\u2019t make sense. Seeing code in an editor will get your juices flowing.
Track your project with version control. If you don\u2019t know what that is, make a Github account and learn how to use Git. You need Github as it\u2019s the primary way you save and display your projects.
If you can, make your project live so recruiters can play with it. Most recruiters won\u2019t inspect your code, so a live demo is the best way to show off your project.
Aim to complete three to five projects by the time you start applying.
A terrific first project is a personal website.
You learn the basics of web development and get your own space on the internet to display your work.
Codecademy has two excellent tutorials on building websites:
Make a Website teaches you the basics of HTML, CSS, and Bootstrap.
Deploy a Website teaches you how to put your website on the internet. Step 3 of this tutorial isn\u2019t necessary, just use the free .github.io domain.
Too easy? Convert your personal website into a dynamic blog. To do this, you need to learn a web development framework like Rails or Django. Check out the Ruby on Rails Tutorial or The Django Girls Guide.
The Muse and Awwwards have examples of personal websites if you need design inspiration. Also, you have to check out this wicked personal website.
Hackathons are great for motivating yourself to do projects.
Schools and organizations around the world host hackathons, which are project-building competitions lasting several days. In this short span of time, you\u2019ll learn a lot, come up with unique ideas, and meet interesting people.
Many hackathons reimburse travel, so there\u2019s no excuse not to go. Use Hackalist or Hackevents to discover upcoming ones.
Some of the top North American hackathons I know of are PennApps, HackMIT, HackNY, MHacks, HackTech, HackIllinois, CalHacks, TreeHacks, Hack the North, YC Hacks, and Greylock Techfair.
You can also contribute to open source projects.
Working on open source is an awesome way to add value to meaningful projects. Plus, you learn a lot from seeing code written by more experienced engineers.
Jumping into open source for the first time can be intimidating. Two good entry points are Google Summer of Code and Sayan Chowdhury\u2019s article on open source for beginners. Github also just released their very own open source guide. Find a cool project and dive in. You\u2019ll get the hang of it soon enough.
Research is an alternative to projects.
If your school has a student research program, great! Apply asap. If it doesn\u2019t have one, look up what research your professors are doing. If their work seems interesting, email them and ask if you can contribute. You\u2019d be surprised at how receptive they are to eager undergrads.
In the future, you can even ask your team to refer you to cutting-edge companies. Keep in mind research belongs under Experience rather than Projects on your resume.
It can be tough balancing projects and school.
One complaint I hear frequently is \u201cI don\u2019t have time to do side projects while taking classes.\u201d I\u2019m personally guilty of saying that from time to time.
It\u2019s tough to set aside time for projects because, unlike school, you\u2019re not held accountable by deadlines and exams. After a day of studying, it\u2019s tempting to choose social media or video games over your project. But if you keep putting it off, the semester will be over before you know it.
To combat procrastination, force yourself to work on your project a little bit every day. Even if it\u2019s just 15 minutes, you\u2019ll form a habit of making continual progress.
This is also why hackathons and research projects are so great. They impose external deadlines and expectations so you can\u2019t drag your heels.
Now that you have some experience, you need to put it somewhere.
Creating a resume
Writing a resume might seem pretty straightforward, but there are lots of nuances. After all, it\u2019s the first thing recruiters will read about you. It\u2019s crucial to make a good first impression.
\u2026And you need to make that impression fast. Recruiters spend an average of six seconds reviewing a resume. You heard that right. Six seconds.
Almost all that time is spent on your name, companies, job titles, start/end dates, school, major, and project titles. Everything on your resume should be tailored towards helping recruiters find these key pieces of info as fast as possible.
Here are some important guidelines.
Easy to scan.
Stick to one page.
Keep it black and white if you\u2019re not skilled at design. Colors are noisy.
Stick to a standard format (chronological, no weird fonts, 10.5 to 12 pt font size, 0.5 to 1 inch margins). Standard formats are more readable by resume-parsing programs and easier to skim by recruiters.
Keep it concise. Text walls discourage readers.
Highlight the key points
Make your name big.
Highlight company names, job titles, start/end dates, school name, major, and project titles.
Important content should be higher up. For a student, the order of importance is usually Education > Experience > Projects > Skills.
Cut the fat.
Objective and Summary are unnecessary.
Descriptions should say something tangible. \u201cExceptional team player\u201d doesn\u2019t work. \u201cIncreased user conversion rates by 20%\u201d does.
People without technical background will be reading your resume, so get rid of convoluted details.
Don\u2019t neglect the details:
Include the higher of your cumulative GPA and your major GPA. If they\u2019re both less than 3.0, leave it off.
Include links to a live demo or Github repo for each project.
Don\u2019t include anything you wouldn\u2019t be comfortable answering questions about. Most people make this mistake when listing their skills.
After finishing your resume, have your peers review it. Ask them to be honest and harsh. My first draft was awful compared to my tenth draft.
Use online resume builders if you\u2019re short on time.
Standard Resume and CakeResume are two outstanding tools that make it a breeze to generate a handsome resume.
If you don\u2019t have a LinkedIn profile, create one.
LinkedIn enables recruiters to find you and helps you maintain your professional network. Plus, you need it for the cold-emailing recruiters later.
With a few projects under your belt and resume in hand, you\u2019re ready to begin preparing for interviews.
Getting battle-ready for interviews
Interview problems can be separated into two buckets, behavioral questions and technical questions. You need to start practicing both at least two months before applying. Since recruiting season kicks off in August/September, summer break is a good time to begin.
Behavioral questions
The purpose of behavioral questions are to find out more about your background and if you actually did what you said on your resume. Don\u2019t take the behavioral interview lightly. A poor performance can sink your chances of getting the offer.
To ace behavioral questions, you need a strong answer to \u201cTell me about yourself\u201d and three stories to handle all other questions.
\u201cTell me about yourself\u201d is the most common behavioral question you\u2019ll get and you need to crush it.
Don\u2019t make the cardinal mistake of regurgitating your resume. Instead, tell a story.
Capture the attention of the interviewer with a strong introduction. Then, transition into a commentary about your key projects and experiences. Don\u2019t prattle on about the details\u200a\u2014\u200akeep it simple and emphasize the outcomes. Finally, explain why you\u2019re interested in the position.
It\u2019s tempting to talk about every single thing you did, but you\u2019ll lose your interviewer. Keep it concise. Your answer should be one to two minutes long.
Prepare three stories you can tell in response to all other behavioral questions.
Typically, you\u2019ll be asked to give examples of leadership, overcoming a challenge, or failure. Each of your three stories should show at least one of these themes.
A story needs an initial summary, a problem, three to five action steps, and a final outcome. Here\u2019s an example.
Summary: Lead an unmotivated team to complete CS project
Problem: Two team members didn\u2019t do their work and wanted to drop CS
Action 1: Talked to them one-on-one to understand why they\u2019re studying CS Action 2: Told them although it\u2019s tough now, they can succeed if they work hard
Action 3: Emphasized that they\u2019re invaluable to the rest of the team
Action 4: Used google calendar to plan meetings and Trello to track progress
Action 5: Held social events to bring the team closer
Outcome: Finished the project and all got at least A-
This story can be used to answer any question about leadership or overcoming a challenge. Now go think of your own!
Not all your stories have to be about tech. For example, I always talk about how I helped my volleyball team overcome defeat.
With this, you should be able to pass any behavioral interview. To learn more, read the Behavioral Questions section in Cracking the Coding Interview.
Technical questions
Technical questions are the essence of the tech interviewing process. Here\u2019s a list of topics you need to know to pass technical interviews. To master these topics, use the following four resources:
Cracking the Coding Interview (~2 months before applying)
LeetCode (~1 month before applying)
Mock interviews (~2 weeks before applying)
Glassdoor (~2 days before interviewing)
Cracking the Coding Interview is one of the best resources out there.
Gayle Laakmann McDowell\u2019s Cracking the Coding Interview is the quintessential tech recruiting manual. First, read the Technical Questions section. Take notes to help you remember the main ideas.
As for practice questions, concentrate on the Arrays and Strings, Linked Lists, Stacks and Queues, Trees and Graphs, Objected-Oriented Design, Recursion, and Sorting sections.
Also, familiarize yourself with the Bit Manipulation, Scalability, Databases, and Threads and Locks sections.
If you\u2019re having trouble with any of the topics, study the first couple pages of that section. They contain a short and sweet explanation of the topic.
Attempt each question for at least 30 minutes before looking at the solution. After reading the solution, you should still implement it and test it on your own. Otherwise, you won\u2019t fully understand the logic.
Finishing CtCI should take three to four weeks of dedicated effort.
LeetCode is the second resource you should tackle.
It has a huge list of problems ranked by difficulty. Each problem has its own tests, time complexity requirements, and solutions.
Aim to complete 30 to 50 questions and be comfortable with medium level questions before you start applying. If you do just three a day, you can finish 42 in two weeks.
It\u2019s easy to get frustrated by Leetcode at first. In the beginning, I couldn\u2019t solve a single easy problem. I improved over time, but I still get stuck frequently on medium and hard level problems. The good thing is interviews are different from Leetcode. In an interview, you get hints if you\u2019re stuck. Plus, deducing the correct logic is more important than writing runnable code.
Although Leetcode isn\u2019t the best simulation of real interviews, it\u2019s phenomenal for building problem solving intuition.
Mock interviews are highly effective if you do them right.
The trick is emulating a real interview as closely as possible.
If you\u2019re the interviewee, be professional, ask questions, and talk out loud. If you\u2019re the interviewer, time the interview, engage in the conversation, and write down feedback.
I suggest booking a private room on campus and grinding through back-to-back interviews. Make sure the room has a big whiteboard to draw on.
Take turns interviewing and being interviewed by a friend who\u2019s also recruiting. Being able to understand the interviewer\u2019s perspective will improve your own interviewing skills.
Glassdoor is an invaluable resource for company-specific info.
In most cases, you don\u2019t need Glassdoor until a few days before your interview. Unless the company is very large, Glassdoor won\u2019t have many specific interview questions.
Glassdoor is better for learning about the company\u2019s general interview process. Navigate to the Interviews section and filter by the position you\u2019re applying for. Sometimes there are different labels for the same job, so look through all of them.
Read candidates\u2019 experiences and think through the interview questions they posted. You likely won\u2019t get the same questions, but working through them will give you an idea of what to expect.
Making your application stand out
It\u2019s finally time to send out applications and start seeing your hard work pay off! Recruiting season begins in August/September, but you can reach out a month or two earlier. For off-season jobs, apply at least 6 months before.
First, you need a list of companies to apply to.
If you\u2019ve been following the tech industry, you should already have some companies in mind.
To add to your list, check out The Breakout List, Wealthfront\u2019s Career-Launching Companies List, and the CrunchBase Unicorn Leaderboard.
For more ideas, here\u2019s a list of 163 companies I looked at when I was recruiting.
Don\u2019t be picky about which companies to apply to. If you think the product is interesting or you\u2019ve heard good things about the company, then apply. Worry about choosing after you get a few offers.
The application process
I recommend first applying and interviewing for companies you\u2019re less interested in. This is a good way to train for future interviews of companies you want more. But don\u2019t do too many\u200a\u2014\u200ayou don\u2019t want to burn out.
When I recruit, I try to keep the process under 3 months and not do more than 10 onsite interviews. Anything more than that, I run out of steam and my performance suffers.
When you\u2019re scheduling your interviews, spread them out. Interviews are mentally draining, so you need time to rest in between. Companies won\u2019t mind if you ask for a week or two before starting their process.
Once you\u2019re ready to apply, use a 5-pronged approach:
Referrals
Emailing recruiters
Career fairs
Online applications
This list is ordered by success rate and time commitment. For example, referrals have the highest success rate but require the most time.
Referrals are the single best way to land interviews.
When an employee refers someone, that\u2019s the golden endorsement. Referrals make up for less than 10% of applications, but 20-50% of eventual hires.
Ask your friends or older students to refer you. You can also ask employees for a phone chat or coffee to learn more about the company and request a referral at the end. Don\u2019t be shy about this. If you get hired, the employee who referred you gets a bonus\u200a\u2014\u200ait\u2019s win-win for both of you.
Cold-emailing recruiters is the next best thing to referrals.
For smaller companies without a formal recruiting pipeline, reach out to an Engineering Manager instead. For even smaller companies, just email the CEO or CTO.
The easiest way to get email addresses is asking your network for recruiter contacts.
You need a LinkedIn account to find email addresses. Look up the companies you want to apply to on LinkedIn and filter their employees by recruiters. Next, install Hunter or Slik, which lets you get the email address from a LinkedIn profile.
Hunter doesn\u2019t like it if you try to sign up using a personal email, so use your school email.
Your emails should be concise. State your interest in a position and include a summary of your background. Remember to attach your resume. To save time, make a template. You just have to change the name of the recruiter, the name of the company, and your statement of interest.
If you don\u2019t get a reply in a week, follow up. If you don\u2019t get a reply in another week, follow up again.
Career fairs get you face time with recruiters and engineers.
For career fairs, check which companies are attending beforehand. Jot down the ones you\u2019re most interested in because you might not have time to talk to all of them. Print out 10 to 20 copies of your resume to pass to recruiters. Be ready to answer questions about your experiences and projects.
I recommend going early\u200a\u2014\u200amiss class if you have to. You\u2019ll avoid the lines and catch recruiters before they\u2019re exhausted from chatting nonstop.
Don\u2019t feel pressured to ask recruiters questions if you don\u2019t have any. You won\u2019t offend anyone if you get straight to the point and ask if they have openings.
After your conversation, make sure to get their emails so you can follow up later. Oh yeah, and actually follow up! Don\u2019t let those business cards gather dust with the free t-shirts and drawstring bags.
For hackathons, you\u2019ll be targeting one company you really like instead of 10 to 20. Company sponsors will set up shop at the venue. This is your in.
Before the hackathon, find the sponsoring company you want to target. When you arrive, introduce yourself to its engineers and recruiters. Use their API in your project and interact with them throughout the hackathon.
On the last day, go show them your project. Then, ask about job/internship opportunities. At this point, they\u2019ve already seen your work ethic, creativity, and interest in their company. You\u2019re pretty much guaranteed an interview.
Hackathons can function as indirect career fairs also. I know people who\u2019ve landed interviews through talking to engineers and recruiters from sponsoring companies at hackathons. For more advice on this strategy, read Ryan Norton\u2019s article.
Online applications are the easiest way to apply.
Use a shotgun approach. Most applications only ask for your resume, so it\u2019s easy to apply to a lot of companies in one go.
Intern Supply, the Easy Application List, and your school\u2019s career website are essential for finding open positions.
Most of the time, you don\u2019t need a cover letter. But if the company makes the cover letter mandatory or asks for a short answer response, be careful. In this case, the company really cares about fit, so craft a meticulous response.
I\u2019ve been burned many times by disregarding mandatory cover letters and short answers. Take your time when writing\u200a\u2014\u200aa hurried response will show.
For applying online, I also recommend TripleByte. You first complete a coding quiz. Then, TripleByte matches you with top companies and fast-tracks you through their hiring processes. Bear in mind this resource only works for finding full-time jobs.
Conquering the interview
For many people, this is the most nerve-wracking part of the process, but there\u2019s no need to be anxious. The interviewer is on your side (even if it doesn\u2019t seem like it).
Before we go any further, there\u2019s one thing you have to keep in mind.
Show enthusiasm!
Enthusiasm plays a huge role in whether you get an offer. Companies these days love to talk about how much they value culture fit. What they basically mean is they want someone who\u2019s enthusiastic about their mission and product.
The truth is most candidates aren\u2019t good at being enthusiastic. The best way to ensure you do it is preparing a list of things you like about the company in advance. When answering behavioral questions or asking questions, bring up the items on your list. Use the company\u2019s blog and its Crunchbase profile to find things you can talk about.
Now, let\u2019s go over some best practices for technical interviews.
When you first hear the problem, write it down. Then, clarify with your interviewer what you think the question is asking. Don\u2019t assume you understood the question the first time you heard it.
Next, write down a few example inputs and outputs and verify they\u2019re correct. This gives you time to think of a solution and provides tests you can run later.
If you need more time to think, don\u2019t be afraid ask for a minute to brainstorm. It shouldn\u2019t be too hard to devise a brute-force solution. Talk through it with your interviewer while thinking of ways you can improve it.
Continue bouncing ideas off your interviewer until you come up with a better solution. Explain it to your interviewer and only start coding after they\u2019re satisfied.
While you\u2019re working through the problem, continuously communicate your thought process. How you think is more important than the actual answer. Be outspoken, but don\u2019t blab on endlessly. Take pauses to think and let the interviewer make suggestions.
Don\u2019t space out or look distant. You should direct your full attention towards the interviewer to engage them. If they\u2019re engaged, they\u2019ll give you positive signals if you\u2019re on track and hints if you\u2019re not. What\u2019s more, they\u2019ll be emotionally invested in you and want you to succeed.
At the end of the interview, you\u2019ll get time to ask questions. Remember an interview is two-way. Don\u2019t just ask questions you think the interviewer will like to hear. Ask questions you actually want to know the answers to. I suggest asking about personal experiences to get more authentic answers.
Remember these tips and you\u2019ll be ready to ace technical interviews.
The average interview process looks like this:
Coding challenge > Recruiter chat > Phone interview > Onsite interview
The process varies by company. Sometimes the recruiter chat will be first. Sometimes you won\u2019t have a coding challenge. But the general structure is similar.
The coding challenge is a straightforward test.
It\u2019s usually hosted on Hackerrank. I suggest doing a couple of questions on it ahead of time to get familiar with the format.
There\u2019s no trick to the coding challenge. Pass as many tests as you can. With enough practice on Leetcode, this should be a walk in the park.
The recruiter chat is an informal conversation.
It\u2019s usually for setting up the phone interview and answering any questions you have. You might get one or two behavioral questions. Once in a while, you might get trivia-esque technical questions like \u201cExplain how a hashmap works.\u201d
Candidates rarely get rejected at this stage (although I\u2019ve managed to do just that a few times). Treat this as a chance to learn more about the company. Ask high-level questions\u200a\u2014\u200arecruiters generally don\u2019t know technical details.
Make sure to ask about the format of the rest of the interview process so you aren\u2019t caught off guard by anything.
The phone interview stage is one to two rounds of technical interviews.
Sometimes you\u2019ll do a video chat instead of a phone call. You\u2019ll typically code out the answer in a shared editor like Collabedit.
If the connection is bad or you\u2019re having trouble understanding the interviewer, speak up. You\u2019re not going to get docked points, so don\u2019t try to tough it through.
The onsite interview is three to six rounds of interviews with a lunch in between.
A day of back-to-back interviews is exhausting\u200a\u2014\u200aget enough sleep beforehand! Onsite interviews are mostly technical, but some companies mix in behavioral and design rounds. The lunch is for you to learn more about the company, so relax a little.
During the interview, use the whiteboard to your advantage. Leave plenty of space on the right side and between the lines so you have room to make edits.
After the interview, don\u2019t dwell on it. Thinking about it isn\u2019t going to change the final result. Treat it as if you were rejected and continue applying and practicing.
Evaluating the offer
Congratulations! You got an offer! Give yourself a big pat on the back\u200a\u2014\u200ayou earned it.
But your work isn\u2019t done yet. First, thank your recruiter and re-express your enthusiasm for the company. Then, ask for your offer in writing.
It\u2019s time to negotiate.
A job offer isn\u2019t an act of generosity\u200a\u2014\u200ait\u2019s a proposal to strike a deal. Naturally, a deal involves negotiation.
I\u2019m not going to elaborate too much on negotiation tactics. Just read Haseeb Qureshi\u2019s killer guide on negotiation.
Bear in mind some offers are non-negotiable, but it never hurts to try.
Avoid unpaid jobs. In 90% of cases, it\u2019s not worth it. I\u2019m all for prioritizing learning over pay, but at least work for a company that values you enough to pay you.
If you have more than one offer, congrats! You\u2019re awesome. But now you have to make a decision.
Choosing which offer to accept is a nice problem to have. The best offer depends on the specific candidate, but here\u2019s one universal suggestion I hope serves you well.
Make a list of 10 professional and personal goals you want to achieve in the next 10 years.
It could be anything, like paying off student loans, founding a startup, or mastering a new hobby. Choose the job that brings you closest to these goals.
Here are a couple more tips to remember:
Your future manager is vital to your career growth. Find a great mentor who will double as your champion.
Do internships at different companies to gain broader experiences. You\u2019ll learn more and expand professional network.
Optimize for learning and growth over pay, unless the pay is really bad.
Work at one brand name company. It\u2019ll make recruiting in the future easier, but know that it\u2019s not the end of the world if you don\u2019t have one.
Choice of programming language doesn\u2019t matter. What matters is learning good engineering practices and how to work in a team.
Choose an engineering-first company with a software/hardware product.
Don\u2019t forget about passion. It\u2019s an amazing feeling building a product you believe in.
Conclusion
This brings us to the end of this guide. I hope that with this, you\u2019ll be much better prepared than I was when starting a career in tech.
In the beginning, getting an offer might seem impossible, but the key is treating it as a series of milestones rather than one enormous task. If you make a little bit of progress every day, you\u2019ll be there before you know it!
When you do get that dream job, don\u2019t forget to give back. Share your experiences and extend referrals. Pass on the love, and we\u2019ll all fly higher.