Tech Internships & New Grad “Get the bread” Handbook

A simple compilation of my experience, process, and opinions for securing tech internships/co-ops. New grad follows a similar process. Some parts of the process are applicable to non-technical positions.

Ben Cheung
World of Cultivation

--

Last updated: June 14, 2023 — 🎉

The FAANGs — Facebook, Amazon, Apple, Netflix, and Google parent Alphabet. FORBES

As a second-degree student that completed a degree in biochemistry and transitioned into computer science, there are numerous guides, videos, and handbooks out there addressing this topic already. However, I felt that putting my own process into words and sharing it with any wanderer of the Internet may perhaps help someone out! Using this process, I was able to secure internships at TD Bank, Riot Games, and Coinbase! So here we go!

Note: This process also would apply to the new grad job hunt! New grad typically would be the same interview loops with extra rounds (usually system design at the onsite portion).

What does this article cover?

  • Getting the first internship/co-op position
  • Preparation & Process
  • Networking and Referrals

Getting the first internship/co-op position

The first internship is the most difficult one to get.

The timeline for applying to jobs is typically the following:

  • Apply for Summer positions (Start Date: May. End Date: Aug) 4 months before. This means you apply and send applications in Jan-Apr before.
  • Apply for Fall (Start Date: Sep. End Date: Dec) in the summer before. So, apply and send resume/apps in May-Aug.
  • *For larger companies like Google, Facebook, Amazon, Uber, etc/ and US internship, you apply much earlier. Some you apply 8 months before the start date. So if you want to get a summer internship, then you need to apply around Aug-Nov (Typically, they start posting the job postings Aug-Sep and interview Nov-Dec).

Where do I find internships to apply for?

Finding internships can be annoying, but there are a few key locations to simplify your search!

  • LinkedIn — search for job postings and set alerts via LinkedIn. More on this is covered below.
  • GitHub — search for compilations of internships community contributed by the student community. You can find these on the first page of google with a search query of “Canadian Tech Internships for Summer 2023” or “github summer internships 2023” for example. Usually, organizations like pittcsc are really good about compiling these internships: https://github.com/pittcsc/Summer2023-Internships
  • Discord communities — You can also join Discord communities which regularly track applications like cscareers.dev, csMajors
  • Glassdoor / Indeed / other websites.
  • Work at Startuphttps://www.workatastartup.com/conversations/

Is it hard to get the first internship?

The first internship/co-op position will be the hardest to get. To increase your chances, I would recommend you start doing projects early on and do self-learning as recommended above. I would cover the following concepts to ensure you are ready and have an edge over other students:

  • Learn a frontend development stack (Recommended (one of): React / Vue / Angular, etc.)
  • Learn a backend development stack (Express.js / Firebase / PHP / Golang, etc.)
  • Learn how to create an API and how to use them.
  • Learn what a database is and how to set one up (MongoDB (for NoSQL), MySQL/Postgres (for SQL)).
  • Learn how to use GitHub and version control with git.
  • Learn some of the common methodologies used in the industry (Agile/Scrum).

For interviews / interview prep:

Once again, I would recommend individuals to follow this MERN stack tutorial. https://medium.com/@beaucarnes/learn-the-mern-stack-by-building-an-exercise-tracker-mern-tutorial-59c13c1237a1

Do not be discouraged if you are having a hard time finding the first co-op.

First Co-op

When I was searching for my first one (the term where I landed at Checkfront), I had sent out 160+ Apps. For this first job search, I applied to EVERY position that was a software development position. The response rate was terrible. Within those 160+ apps, I only had 5 interviews before I got an offer. These interviews were also from smaller companies. To give you an idea, they mostly were <100 people in total (Checkfront, FISPAN, Pattern Labs). Larger companies that had invited me for an interview would include Neurio (aka Generac) and BlackBerry. Very disappointing stats, but then again, at that time COVID had shut the world down and companies had frozen hiring and were hesitant to take on interns.

Second Co-op

After landing the first co-op, it is so much easier to get interviews. For my second job search cycle where I landed TD. I had sent out probably 70+ applications. However, this time, I was extremely picky and only applied to large well-known companies or companies that I liked. I was flooded with interviews. I had 12 interviews and numerous other coding challenges (I grouped the numerous interview stages as a single interview for the ones that had multiple rounds.). For 1.5 months, I had at least 1–5 interviews per week. To provide some information on these companies, they were Bloomberg, SAP, Axiom Zen, Blackberry, Electronic Arts, WorkDay, TD, FISPAN. As you can tell, this is a HUGE level up from the first job search cycle. So no worries — it gets better! Land the first one, and then you should be golden for the next.

Third Co-op

This section is a relatively recent addition. I did another job hunt cycle where interviews were flooding in and I found myself drowning in online assessments and requests for interviews. I sent out ~65 applications this round, got around 5–8 interviews, and numerous online assessments. Happy to say that I secured Riot Games for the summer of 2022.

Fourth Co-op

With so much prior internship experience, getting some callbacks and online assessments was much simpler this time around. I accepted an offer for Coinbase for Fall 2022.

Additional advice for securing internships

Some additional advice I usually provide to those that ask would be the following:

  • The pandemic is still here. Everyone is stuck inside. It is the best time to network. Attend hackathons, talks, and events, or connect to individuals you are interested to speak with on LinkedIn and ask to schedule a call. You might be surprised who you might meet.
  • Build, build, build. Make sure you are active and still developing.
  • It’s important to keep your interviewing skills sharp. Review behavioral interviews (ie. Be able to go over your resume and explain each aspect of it such as past work experience / what you built etc.)
  • Do LeetCode for obvious reasons as companies would most likely ask some sort of technical LeetCode-like question. Buy LeetCode premium.
  • Online assessments are hard. Just have to keep doing them and keep doing LeetCode to get better.
  • Don’t get discouraged. As with any job search, it is a grind. Fail and learn from it. Use the failure to become better prepped for the next one. Bad interview? gg next.
  • If you get invited for an interview, read the job posting and google “Top 100 interview questions for _____” for every language or concept listed in the job posting. ie. If it says Java, google and go over the “Top 100 interview questions for Java.” Surprisingly, I had so many of these trivia-style interviews where this was the alternative to LeetCode Algo-styled questions.
  • A small addition to advice would be to make use of your network. Ask for referrals. They do help depending on the company. It is typically better to ask a full-time employee over an intern, but having a referral is better than none.

Preparation & Process

The preparation process is incredibly important! In this section, I’ll detail what type of preparation is needed as well as my workflow which I go through every application cycle!

Let’s dive into it.

Interview Preparation [The most grindy part]

For interview preparation, there are numerous types of interviews that you must be prepared for. Specifically, a typical hiring process for internships and some new grads looks like this:

  1. The applicant applies through the website or gets referred via referral/connection. (Check out the guide to networking!)
  2. Resume Screen.
  3. Online Assessment (OAs).
  4. Phone Screen.
  5. Maybe a Behavioural / Cultural fit interview.
  6. Technical Interview.
  7. Offer / Negotiation

This means that as an applicant, you need to be prepared for each stage. Tedious.

*Note: Some smaller companies / mid-sized companies usually have a shorter interview process. (Resume Screen + Phone screen + Technical or only Resume screen+ one Technical round). For example, for TD Bank, was pass the resume screen and get a single technical interview.

Resume Screen

So, of course, the most important part is to first get the actual callback/invitation to complete the online assessment or even get a phone screen. This means that you need to have a resume that stands out. This is typically the harder part when just initially starting out because you will have no work experience.

To fill that gap, technical projects showcasing your knowledge of industry tools and languages are incredibly important.

As recommended in the previous section and I’ll repeat it here, these are some recommended concepts and languages to learn and make yourself more competitive.

  • Learn a frontend development stack (Recommended (one of): React / Vue / Angular, etc.)
  • Learn a backend development stack (Express.js / Firebase / PHP / Golang, etc.)
  • Learn how to create an API and how to use them.
  • Learn what a database is and how to set one up (MongoDB (for NoSQL), MySQL/Postgres (for SQL)).
  • Learn how to use GitHub and version control with git.
  • Learn some of the common methodologies used in the industry (Agile/Scrum).

Once again, I would recommend individuals to follow this MERN stack tutorial. https://medium.com/@beaucarnes/learn-the-mern-stack-by-building-an-exercise-tracker-mern-tutorial-59c13c1237a1

It is also important to always get feedback on your resume by asking friends and peers that are currently interning as well or current employees of companies that you would like to work for. Make sure to reach out and get a feel of how your resume would be ranked as well as if it is ATS friendly. (Resume parser friendly).

I’ll link my resume here as an example: https://bencheung.me/resume.pdf

Online Assessment (OAs).

The online assessment is typically the first screen to get rid of any unqualified applicants. It is usually conducted through a third-party website like HackerRank, CodeSignal, etc. These websites usually ask LeetCode style questions, so to prepare — unfortunately, you will need to grind questions in order to understand the patterns and types of questions you might get asked as well as have the proper toolset to tackle the questions.

The only way to get better is to continue to practice and learn from mistakes. Numerous resources that are free are out there so I won’t dive into this too much!

Phone Screen.

Congrats, you passed the OA, now it’s the phone screen. Typically, the phone screen is for the recruiter to see if you might be a good fit to move forward. Sometimes phone screens can be technical in which you will call via phone a software engineer (for swe positions) and code live, others are just behavioral. So, it is important to still prepare for these by first researching what type of questions will be asked (cultural/behavioral vs technical screen) and preparing accordingly.

Cultural / Behavioural: Use the STAR method.
Technical: Hope your leetcode skills are good and pray for a good question.

Maybe a Behavioural / Cultural fit interview.

The behavioral / culture fit interview tackles how well you vibe with the interviewers as well as how you can communicate. The interviewers are interested in learning about the challenges you faced, your values, your problem-solving process, and about you!

Technical Interview.

This section is usually purely technical with follow-up questions about your solution. There are four types of interviews that would fall into this category:

  • Leetcode style questions where you solve a question, explain runtime and complexities as well as optimization.
  • Trivia style questions: ie. what is the difference between == and === in Javascript? What is the difference between a prop and a state in React? What is React DOM? What is the difference between an abstract class and an interface? So yeah, you need to brush up on the languages that you listed on your resume and were mentioned in the job posting!
  • Application styled questions where you would code a small part of an application. ie. Code a small frontend using React given a gif.
  • System Design where you will have to ask questions and dig deeper to clarify requirements/specifications and expectations. Usually, you would discuss how you would approach building an application, system, process, etc. Some internship interview loops would have a system design round but it isn’t that common. As a new grad, it is very common to have a system design round.

Offer / Negotiation.

If you have succeeded and have been offered the role, this is where a potential negotiation step appears. You could take the offer, or if you have competing offers — negotiate. There are a lot of resources out there to help you prep for this, but it’s important to do market research to determine if you are being compensated fairly. Usually as an intern, you won’t have as many opportunities to negotiate, but as a new grad role / any other role — you probably should do this!

Use the following resources to check:

For the actual negotiation part, I recommend the following resources.

Now that we have gone through what a typical interview process looks like and how generally we prepare them, I’ll discuss my process and approach below.

Process and approach for each job hunt cycle.

In this section, I’ll go over my personal job hunt process!

  1. Update resume and LinkedIn. Join Discord communities like cscareersdev or r/csMajors and drop your resume there. Anonymize it and take into account the community feedback.
  2. Use an Autofill Extension. Set up Simplify (Autofill apps with your info) — https://simplify.jobs/?invite=61182f75b3b&utm_source=referral
  3. Specific LinkedIn Targeted Search Queries. Search for jobs via LinkedIn and using LinkedIn filters. I use the LinkedIn filters every day to check new postings, you can also sign up for alerts for specific search queries where they send you emails and updates on new postings! Specifically, I search key terms like “software intern”, and “software coop”. Filter by “Canada / United States” as well as the Date Posted “by Past Week” or “by Past 24 hours”.
  4. Application Tracking. Apply for jobs quickly with the Simplify tool. Use referrals if you have them! Make sure to track the statuses of your applications!
  5. Application Tracking. Start doing Blind 75 Leetcode questions and coming up with some answers to behavioral questions. Create a Notion to keep track of interview statuses, solved Leetcode questions, and your personal answers to some common behavioral questions like “Tell me about yourself?” etc.
  6. Repeat 1–5 until you can pass an online assessment.
  7. Once you reached the phone screen / technical/final rounds, more in-depth research about the company you are interviewing for is necessary.
  8. Behavioral and Company Values Research. Create a new Notion page titled with the company you are interviewing with. Fill in the following after researching the company: What are the company’s vision/mission/values? What do you know about <insert company>? Why work at <insert company>? / Why are you interested in interning there? * Tell me about yourself? Do you have any questions?
  9. Job Posting Extraction. Next, go through the job posting and ensure you are familiar with the requirements. I would encourage the same advice as previously mentioned — look through the job posting and google “Top 100 interview questions for _____” for every language or concept listed in the job posting. ie. If it says Java, google and go over the “Top 100 interview questions for Java.”
  10. Research. Research. Research! Join the following Discord channels and use the search feature to see if anyone else has shared their interview experience/process. From this research, you will be able to determine if a phone screen is technical or behavioral or if final rounds are trivia styled or Leetcode, etc. This is super important! cscareers.dev (https://discord.gg/y958ZSgbKq), CS Majors (https://discord.gg/HsfEDdBwWJ), Design Buddies (For Designers/UI/UX) (https://discord.com/invite/designbuddies), BobaTalks for mentorship/career advice (https://discord.com/invite/bobatalks)
  11. The last part is to just keep preparing and grinding. With some luck and proper preparation, you should be able to increase your pass rate and secure the offer!
  12. Good luck!

That would be a really quick summary of my job hunt process! Let’s get into some specifics now! I’ll dive deeper into the bolded steps outlined above.

Use an Autofill Extension

Why do we do this? To streamline our application process and save time. We don’t want to waste time typing and adding your education, job experience, and basic information like name, location, etc. every time. So use an autofill application tool! I recommend Simplify. It is a simple chrome extension where you fill out your job profile in the extension and it will autofill the information for sites that support it. Save the time for actual interview preparation of networking! I dropped my referral link here: https://simplify.jobs/?invite=61182f75b3b&utm_source=referral

Fill in your profile using the extension.
For some job apps, we can directly click the Let’s Do It button and autofill our information.

Application Tracking.

Keep track of your progress for each job hunt cycle. Track the stages you are in and record your experience at each stage. I once again recommend Notion for this. Create a table view of your applications with whatever columns you seem fit. Update each status accordingly and add your experience after each stage (ie. phone screen, technical screen, final, online assessment, etc. )

This is a great way to look back and see what mistakes you made and how you can better prep / resolve them!

An example of my Summer 2022 Application Tracking Table

Specific LinkedIn Targeted Search Queries.

Some jobs are posted at random times of the day and once the threshold for the number of applications accepted has been met, they no longer receive applications. An example would be Coinbase’s internship application. It was open for two days and then quickly closed. Missing this window of time to apply means you cannot even submit your application. This means you missed out on a potential internship. This means that as soon as you start your job search you need to be consistently checking postings!

Most use LinkedIn, but are you sure that you are using it effectively? This is why I recommend using the specific search filters on LinkedIn. I recommend going to the jobs tab (https://www.linkedin.com/jobs/), start typing in your query for example “software intern”, set the location to Canada or the United States (or wherever you are interested in), and press search. Use the drop-down tool for Date Posted and choose either Past Week or Past 24 hours to only look at recent postings and not waste time on postings that were posted > 1 month.

Also, be sure to turn on your alert if you wish to have LinkedIn notify you via email of new postings related to your search query and parameters! I recommend checking this at least once a day so you won't miss out!

Save time with refined search filters on LinkedIn.

Behavioral and Company Values Research.

This research is incredibly important to prepare you for your interview. You need to have done research on the company you are interviewing with.

  • Create a Notion account where you can track your interview process/statuses / current resources, answers to any questions you have, as well as company-specific pages. Example:
Example of some interview preparation.
  • Create a specific company page, here is a template that I use. https://mrbenc88.notion.site/Company-Research-Template-1d3672b033364ddb9f6b71cc9a05d1c5
  • Don’t be lazy and not do this research. You need to word your answers so that they align with the overall mission and values of the company you are interviewing for. Creating this cheat sheet will allow you to ace the behavioral interview.
  • Fill in the information to the best of your ability and browse around the company website, media featured by the company, as well as reports that are released by the company. The more you research, the better position you are in to show that you know and are familiar with the company.
Screenshot of some of my Coinbase research.

Job Posting Extraction.

The job posting is there as a guide for you to understand what types of skills and experience an ideal candidate could have. It is not a requirement! However, this also gives you a hint on what to prepare for. ie. Frontend vs backend role vs security vs devops.

Look at the job posting, for every language or concept listed, make sure you have a general understanding. If you want a surface level understanding quick, I recommend googling the top 100 interview questions for ____. Record both the question and solution to yet another Notion page. Lots of work but you only do it once.

Once you come across the same concept or language in a future posting, you already have your notes and can use reference it / study it!

An example of the numerous notes for languages I am familiar with and have listed on my resume.
A React Notes Example

Research. Research. Research!

Join the following Discord channels / browse the discussion part of Leetcode and GlassDoor Reviews. Use the search feature to see if anyone else has shared their interview experience/process.

Research is super important. Information can steer your interview prep in the right direction. With no information, if you have a technical interview — it is great to be informed about what sort of interview it would be. You can also exchange with others who have already taken the interview and have them share their experience! Research is incredibly underrated and important.

So how to do it?

Join the two Discord channels, go to the appropriate channels and start searching. There is usually a channel for the process where individuals post their current progress through the interview process. This channel is great to see which applications are currently open! Check at least once a day!

You can naturally also DM individuals and ask them how it went. It is a great resource for information exchange and to better prepare you to ace your interview!

View the status of some other applicants.

Next, search up possible previous interview questions using Leetcode Discussion forum and GlassDoor! You should also at this point be familiar with the type of interview you will be doing!

Networking and Referrals

Networking is super important! I recommend going through your schools’ alumni network or current department networks! You can also naturally network through your CS program, etc., or through LinkedIn.

Interact with some LinkedIn posts and send an invitation to connect. Upon being connected on Linkedin, if you are super interested, go ask to schedule a coffee chat.

You might be surprised who you might meet and it could develop into new friendships, new mentor relationships, or a referral! Maybe you'll find out that the work-life balance at your dream company is absolutely terrible!

In any case, I highly encourage the following platforms to meet new individuals!

  • LinkedIn: Go through your alumni network and search for fellow interns or full-time for the companies you are interested who have gone to the same university as you! Send an invitation to connect and you might have a higher chance to get a reply!
  • Lunchclub- https://lunchclub.com/?invite_code=benjaminc12 This is great for being matched randomly with random users in selected areas up to 3 times a week. Eye opener and free :)
  • University network / clubs , etc.

What about referrals?

Referrals could be useful in some companies or not useful at all. Always better to have one than to not have one. I would try to get one but not too important in my opinion!

I would recommend trying to schedule coffee chats before attempting for a referral.

Concluding Thoughts

The job search can be daunting at first, but with a process and a consistent search, it becomes second nature and easier to crack! Be sure to take breaks and not burn out!

I will be updating this periodically with more ideas and relevant content. You can see the last updated version at the very top of the article.

Please reach out if you have any suggestions or additions! Would love to include them!

Got Questions or Looking for Extra Help? 💡

If you’re curious or need some quick advice, feel free to reach out — I’m always ready for a chat! For broader queries, our Tech Career North Discord community is an excellent resource, filled with knowledgeable folks ready to answer your questions!

Need More In-Depth Assistance? 💡

With my experience as the author of several guides popular early career/tech career transition resources and having conducted hundreds of Statement of Purpose (SOPs) and resume reviews, I’m excited to offer specialized deep dive sessions. These sessions are perfect for those seeking thorough reviews and personalized advice on applications and resumes.

👉 https://topmate.io/bencheung

Let’s get in touch!

Hi! You reached the end! Congrats on making it through this guide. I hope that it has provided some insight and can better inform your decision!

I’m looking forward to seeing more of your success stories!

LinkedIn: https://www.linkedin.com/in/mrbenc88/

Website: http://bencheung.me/

--

--