Internship and Job roadmap 2022–2023 (A complete guide)

Aryan Singh
BlockTrain
Published in
20 min readAug 2, 2022

Let’s see the EXACT way we can get an internship or a job this season. Don’t be lazy and starting taking action today after reading this guide.

Topics

  • Writing a computer science resume
  • Finding coding projects
  • Learn a new skill
  • Apply for internships
  • Take a technical interview
  • Everything about internships

Writing your computer science resume

Templates

Action words

Work experience

  • Ideally 3–4 experiences with 2–3 points each.
  • Make sure the dates are accurate and consistent in style. Include the year and the month or season.
  • Common headings: software engineer, web developer, mobile developer, intern etc.
  • Add a line at the end for Tools: Angular, Flutter, Dart, Testing, etc.
  • Don’t add things like: using VSCode, Vim, etc. No one wants to know your code editor preferences.
  • You CAN add experiences outside of coding/computer science if you learned something new and have space for it. It’s better to show real experiences than nothing!
  • Examples
  • Added some features using frontend technologies, which eventually went into production.
  • Worked on something which brought the revenue up by some %.
  • Implemented login functionality with authentication service using Firebase and Node JS.

Projects

  • Ideally 3–4 projects with 1–2 points each.
  • Use school projects if you don’t have any personal projects (start working ☺).
  • Mention the skills you learned or used. Eg: HTML, CSS, JS, Git.
  • It’s fine to add other projects as well — maybe you did marketing for someone and helped them increase their numbers!
  • Examples
  • Created a landing page for the website to generate initial traffic before launch.
  • Worked as a freelancer to create 3 pages using something, something.

Education

  • A lot of people argue that education should come before work / projects. That’s a myth.
  • Add your degree, courses, clubs, activities, experiences, projects, etc. You can mention jobs you did at your university.
  • Eg:
  • B.S. in Computer Science, 2020.
  • GPA: doesn’t matter.

Skills

  • Add programming languages, tech stacks you’ve used / are learning.
  • Languages: Python; Java; Dart; JavaScript; Typescript.
  • Technology: Android; Flutter; React Native.
  • It’s fine to fake-it-till-you-make-it when submitting your resume, but make sure you know it before your interviews.
  • You can also add soft skills — they can help the resume parse through the ATS software. Eg: communication, leadership etc.

Summary

  • Don’t add a summary section unless you have space for it. Most resumes pass through an ATS software before being viewed by someone, so don’t waste time on a summary.
  • Generic things can be avoided most of the time. Everyone is a ‘hardworking software engineer with excellent skills’, don’t add it here. Instead, add it in the skills section (if you have space).

Links

  • Add links to your Github, linkedin, Angel list, Twitter profiles.
  • A lot of times. managers and recruiters who look at these profiles will directly contact you, so it’s nice-to-have.
  • Github: Add school projects (with permission) if you don’t have any personal ones, or just fork other repositories that you like. Keep exploring!

Harsh reality

  • Only a limited number of people look at your resume!
  • Recruiters or managers screen it after you’ve cleared your first round of online coding interviews.
  • Even then, they will ask you to explain most things — ‘what’s your favorite project’, or ‘which tech stack are you most comfortable in’ — they want you to explain it.
  • Don’t put in a lot of time.
  • It’s fine to have a decent resume, but preparing for interviews or actually making projects is far more important.
  • Apply to a limited number of companies, prepare for those, and focus on clearing the interviews you get. Prepare well!
  • Getting a first round interview from a hundred companies <<<< Getting an offer from 1 company after applying to 10.
  • Don’t pay someone to do a resume review.
  • Ask your friends.
  • Ask someone in your university — consultants, advisors, professors, etc.
  • Lookout for free resources like this one.
  • Your resume is only looked at for 5–6 seconds.
  • Make sure to keep that in mind when displaying your skills. Use actionable items like numbers, percentages, etc.

Don’t follow this blindly

  • This comes from our personal experiences, so don’t take it too seriously, and feel free to make tweaks according to what you think is the best. Everything doesn’t work for everyone, so experiment along the way.

Good luck

  • Your resume doesn’t define you, you’re worth much more than that.

How to find coding projects + people

Hackathons

GitHub + Open source

  • Code Together · GitHub
  • Clone and fork every repository you find useful. If you’re interested in the project, track its progress or extend some features on it. For instance, there’s a portfolio template -> extend it into something more centric to a topic. Try different things and keep exploring!
  • Follow people who regularly add content. It’s nice to see interesting tech on the Github feed. Once you follow people who post regularly, you’ll see how so many amazing things exist in the tech world.
  • Be active overall
  • Start with small projects.
  • Upload and maintain your projects on GitHub.
  • Add documentation wherever you can. Often, if someone is looking at your project, they’ll only focus on the Readme. Not a lot of people will dig deep and find something in the code, but a lot of people are interested in what the project is about. So, it’s important to add screenshots, write some about the project, and maybe explain the journey of how you made it.
  • Improve Git practices: Git is something that every company uses, and it’s a great way to manage and collaborate on projects — definitely an essential part!
  • The open source community is huge and it’s great to follow these projects.
  • A simple Google search of “beginner project in react” will land you at hundreds of repositories. Take advantage of this, clone the repos, and start learning from there.
  • There’s an awesome list for every framework out there — simply Google “awesome list react” and you’ll see projects related to that. enaqx/awesome-react: A collection of awesome things regarding React ecosystem
  • There are public repositories that bigger companies consistently manage — you can watch them and find an opportunity to contribute.
  • Programs like Gsoc are absolutely amazing. Apply and try to get in — discuss with students who already had that experience.

Linkedin

  • Tons of people post their projects on LinkedIn. Make sure to like and comment on their posts and message them about their journey.
  • Post your project progress, ask for feedback, and connect with people who could work with you on it.
  • Identify people who are generally active on Linkedin and reach out to them, learn more about what they’re doing, and seek their advice. It’s likely they’ll help you or guide you to the right resources.
  • LinkedIn Learning also offers some great project related learning: add a new skill set and take it from there.

Product Hunt

  • Product Hunt — The best new products in tech.
  • Product hunt has tons of professional products posted every day. Reach out to the founders and ask if they want to collaborate.
  • You’ll probably need skills relevant to that product, so make sure to do research and read about the product beforehand.

Simple projects

  • Learn a framework, make simple projects, and work your way to something bigger. Start with popular frontend frameworks like React, Angular, and Django, then move to whatever you like more.
  • There’s tons of documentation out there. Google search or go on YouTube to learn the basics and create something small today. Add quick features, iterate it over time, and eventually make it big enough for others to join.
  • Find problems around you and see if there is a simple solution. Top 10 Coding Projects for Beginners
  • Find people once you have something mid-size. Ask for collaborations in a post on Linkedin, Reddit, Discord etc to find people.
  • Look for other simple projects on GitHub, Reddit, Discord and ask if you can contribute. Open source is the way to go. We will make a separate guide on this.

Chrome extensions

University

  • Find other students who are in your classes. Tons of students are working on side projects. Just ask!
  • Choose classes where you can make projects -> take the projects seriously and make them actually good. Continue to update them after the class is over.
  • Clubs, events, and other small gatherings at your university may offer opportunities to make projects or work on ideas. Collaborate, network, and build something cool.

Upskill yourself

Upskill yourself -> At the end of the day, people love working with skillful developers.

How to learn a skill from scratch?

This document is mostly focused on frontend frameworks like React.

https://lh6.googleusercontent.com/TG2nJ4UxPcODHRVA3kgtpSDAtu6LB9AjN_fTUYiM5_o0CBNQfgRbQ89hadDyaoPtxch3CBmq6frDxn4WGYc7oZPpzhgVcP0fI1GBkkhdasPioOvpsXi6p3Hyd12KmqNisX_ZSTd5Qwg-KgLK5g

Introduction

  • First few days of learning are an investment and will determine whether you stay with it or not. Most people leave right after the first few minutes or when they don’t get their setup right!
  • Read about what the framework is actually about — what problems it solves, how it is better than others, and how you can use it to the fullest. Read for a basic understanding.

Setup

  • This is probably the most important step. It can sometimes be painful and annoying to set a path, install things, and finally get started with a basic app, but all of it is necessary.
  • Things work out eventually. Watch a YouTube video if you’re stuck, Google search the errors, and try to solve them. Don’t stop before you get it right.
  • You can also start with platforms like Stackblitz which we’ve discussed below.

Stackblitz

  • DON’T set this up unless you’re actually familiar with the framework. How can you become familiar with it? By simply going to StackBlitz: The online code editor for web apps. Powered by Visual Studio Code.
  • Go to Stack Blitz, create a simple app, see how files are structured, and play around with it. Create some things and see the new changes. Add routing, make new pages, and create super small projectl.
  • Google ‘table example stack blitz’ — you’ll get hundreds of links of other people’s Stack Blitz who have implemented those changes. This is super simple + effective. You can make even bigger things here. Although, creating something locally and then uploading to Github + Netlify has a better feel overall.

Learn the basics

  • Start with the basics. Learn the building steps — how to add a button, how to change the text, etc. Try bigger things later.
  • Read the documentation: there are multiple ways to implement a single thing and it’s important to be aware of this. Reading the documentation is generally an important thing and will help you when building future projects.
  • For example: Angular
  • HTML, CSS, Components
  • Input, output, different pages
  • Routing, transitions, passing data
  • Simple TODO app, couple pages

Tutorial hell

  • Don’t fall in the trap of just taking courses, watching tutorials, and copying code. Instead, be curious about problems and try to solve them yourself.
  • Think about a new feature, Google how to do it, and then TRY it, instead of looking for courses/tutorials.
  • Think of different implementations for the same thing. What can you do with firebase? What all can you do with a button and some URL redirection?
  • One good approach is to find similar projects related to your problem. So, for instance, you want to make a page that has a card component and you want to replace it with something on a button click. Search how to make a quiz app. You’ll find a similar approach that you can follow.
  • Don’t make a social media app. If you are following a tutorial which tells you to make one, close it, think of an idea similar to it, and try to make it by using what you learned in the course. Don’t just blindly follow the same things that others are doing.
  • https://www.youtube.com/watch?v=_3sPBX9TpyA&ab_channel=ChrisSean

Make a simple project

  • Think of simple ideas, problems, and how you can solve them. Maybe you always wanted to make your portfolio website or something. Make it. Whatever you want to build: Make it. Start small and then go big.
  • For example:
  • A website that allows you to find lost items
  • A landing page that displays products
  • Clicking inside a product to see more details
  • Extra: Add more features once you’ve completed the first ones
  • Add another page, smaller features
  • Add multiple users, authentication

Games

  • Games are a great way to learn how complex things work. They’re also a great way to understand OOPS. Most gaming classes will have gameOver(), start(), find(), and similar methods which help you write better code and understand how to avoid duplication.
  • Most games also have a tricky gameOver() logic. For example Tic tac toe — you need 3 of the same things in the same line (in any direction). So, it’s a good challenge to think about the logic before implementing the method.
  • It’s also exciting to see how frontend and logic work together when you’re making games.

Bigger project

  • Go to hackathons, find people, make connections, and work with someone. Working alone on a big project is the easiest path to not completing it. Therefore, you should find like-minded people, share your ideas with them, and finish a project together..
  • Keep in mind your audience. It is good to make something that people might actually end up using! It could be anything from a lost-and-found website to something in education, travel, Chrome extensions, work life balance etc. There are tons of problems these days, so choose something and start building.

Don’t make something for your resume — it won’t last long.

How to apply for Internships and Jobs

Cold emails

  • Cold email == emailing someone you don’t know. It’s the best proven way to get in front of someone’s eyes directly and be instantly noticed.
  • An example of this is sending emails to hiring managers or recruiters, telling them something about yourself and discussing a position/referral.

Selling point

  • They get thousands of emails every day, so it’s important to highlight what’s unique about you! It doesn’t have to be too fancy, but something that you feel strongly about.
  • Your unique ‘selling point’ can be anything — github profile, work experiences, projects, hackathons, projects, grades, certificates, courses, etc.

Template

Cold email Flow

  • Find the relevant person on linkedin — recruiter, hiring manager
  • Send them a message on LinkedIn
  • Hey recruiter, I’m interested in the xyz position at your company! My past experience at abc would make me a strong candidate for this position, I’ve attached my resume and look forward to your response!
  • More examples in the cold email blog here: Cold Emailing, the right way
  • Find their email
  • Use LeadLeaper.com, ContactOut.com, PIPILEADS.com
  • Ask your friends, teachers, or relatives if they know people at these companies and email their contacts.
  • Ask your Linkedin connections if they’re connected with someone you’re not. Sometimes people put their emails there.
  • Github: A lot of software engineers and managers put their email there.
  • Prepare a template -> unique to you with points you feel strongly about.
  • Schedule an email for 8–9am in their timezone (mon-fri), and wait for their reply. Make sure to follow up with a small ‘thank you’ message.
  • This can be a game changer for 1st round interviews. Give it a try, see what all works for you, and experiment along the way! There’s no one who is fit for all — different things will work for different people.

University career fairs (Offline)

  • All universities have career fairs once or twice a year which can be useful for making good connections with representatives from various companies. You’ll usually meet software engineers and recruiters from those companies, so it’s always a great way to put your best step forward.
  • General tips: check out the companies coming, do your homework on them, prepare for simple coding questions, and be confident. Make genuine connections with people there, and have a fun time. Be real. Talk like a friend, ask smart questions, give them your resume, and sound interested even if you’re not!
  • Imagine yourself in their position — they’re talking to hundreds of potential candidates, so how can you make yourself stand out? Prepare a background story, sound excited and interested (smiling helps), and have a normal conversation. Don’t say things like “I’m a confident leader who would be great for the job”.
  • Eg: Career Fair Schedule | For Students | Career Development & Professional Connections

Online Career Fairs

  • There are events happening across the globe where companies hire developers — another great networking opportunity.
  • Some amazing examples:
  • GreyLock
  • Startup Fair
  • There’s an application process => apply, get in, and follow their process. It’s a great way to get access to multiple companies and meet lots of amazing people.

LinkedIn job portal

  • https://www.linkedin.com/jobs/
  • It’s important to have a good online presence. Linkedin is one of the more important online platforms, so make sure you have a nice, complete profile.
  • Add relevant experiences and projects, a small bio, and some relevant posts about what you’re doing these days.
  • No one is staring at your profile for hours so don’t spend too much time on it 😛
  • Add projects, get endorsed for skills, add strong headings and summaries. In general, most recruiters don’t look at your summaries/bio/projects but it’s helpful when you’re applying through Linkedin.
  • You can use the ‘easy apply’ feature on Linkedin and share your profile through that — make sure your profile is complete if you’re looking to apply through this feature.
  • We don’t recommend it, because most people will apply through this — add some value by messaging a recruiter or an employee instead of applying randomly.

Referrals

  • Referrals can get you a step ahead of others, leading you to a quicker first round interview (or even skipping the first round sometimes). Most big companies do this. This does not mean direct access to something, just that you’ll get a response faster or lessen the amount of interviews you’ll take.
  • Developers working at companies often get incentives if someone joins the company from their referral, so there’s nothing to feel shy about. Every engineer and manager likes a good candidate and it’s a win-win situation for all.
  • Flow: Send a simple 1–2 line message asking for the referral (with a selling point). Remember, be prepared before asking. The other person needs to actually like your profile because there’s no obligation on their end to get involved. So make sure to add some skills, your online profiles, or a portfolio of projects.

Networking

  • Connect with people from different websites, send them a message and try to see if they have anything to offer. This is a great way to meet founders/co-founders and ask if they’re looking for new talent. They’re always on a lookout for developers to join!
  • “Hey person, hope you’re doing well. It was great talking to you the other day about xyz. I would love to further connect with you on LinkedIn and discuss abc”.
  • “Hey person, hope you’re doing well. I was impressed by your website/company/project and would love to talk to you regarding some collaborations/career opportunities/inputs. Thank you” — Works great, everyone likes to meet nice people.

Events

  • Tons of events happen across the year where companies directly hire developers. Look out for those through your university portal, Linkedin, or other websites. Eg: Grace Hopper
  • There are career fairs as well, where company representatives gather and look for talents. Don’t miss out on those if you’re eligible to attend. It’s always nice to meet new people and get informed about local opportunities.
  • Hackathons
  • I love hackathons — free food, awesome projects, amazing people, and wonderful ideas. Work on a project for 24–36 hrs straight and present your idea to win prizes. Meet like minded people and network with different company representatives who host booths there.
  • http://hackathonsnear.me/
  • https://mlh.io/

Discord, reddit

  • Discord has amazing communities for skills, eg: You know Angular. Search for an Angular community on Google and join it. Help people, ask for projects, work for free, and make strong connections. Leverage these through your resume and mention it during interviews!
  • There’s also a job/contract/careers section where people are constantly looking for new contract developers. Message random people, get to know their projects/startups, and start working. Remote work has become popular and people are always looking for people to fill these roles.
  • Eg: Angular Community on Discord

Online — careers website

  • Companies have direct links to the job openings and it’s usually under the ‘careers’ section on their site. So, just like Facebook (https://www.facebook.com/careers/) most companies have a designated page for their jobs.
  • This is my least favorite way of applying and it should be the same for you. There are other better ways, mentioned below, which have a higher interview rate than this one.
  • As an international student (in the USA), you should probably only do this as a last resort — most of the applications go through a screening process and it’s harder to be noticed.

Remember

  • You don’t have to apply for 100’s of positions to get an offer. Be PREPARED -> solve coding problems, make projects, and have fun. The ideal scenario should be to interview at 10–15 companies and, from this, get 2–3 offers. Work hard, but also enjoy the process. It is a long and tiring journey — make sure you take that in consideration. It’s a marathon, not a sprint.
  • If you’re looking for a job/internship right now, you should understand one simple thing. It takes time. Be consistent and enjoy the process -> learn something new from this -> prepare for coding interviews -> and when you do get a job (which you will) -> give back to the community! You got this. We know you’re gonna kill it, keep going! Good luck.

How to take a technical phone interview

Couple of days before your interview

  • Go through a lot of easy questions to gain confidence on topics you’re not-so confident about.
  • Stop solving/preparing/studying for interviews, take a chill pill for 1–2 days. Understanding the concepts is fundamentally better than solving a couple of questions.
  • Explore more about the company — teams, projects, languages, locations. You can do this on the company website, glassdoor, github, etc.
  • Look at the interviewer’s profile on linkedin. It can be useful to know where the person comes from and what their background is like. You can start by finding common ground, it’s always nice to meet people with similar interests.
  • Read solutions!
  • Reading questions or solutions doesn’t mean just ‘reading’ them. It means understanding the core concepts used and considering how it is applicable to other problems. So if you’re reading a lot of DFS problems, then you’ll start getting a sense of things whenever you see a new DFS problem. Also, you’ll be confident + comfortable writing that!

Right before your interview

  • Listen to music and pump yourself up! Relax, you got this. There are hundreds, if not thousands, of opportunities waiting for you if you don’t get it. Don’t stress yourself.
  • Check your internet connection, keep your phone, copy, pen, pencil, and any other things you might need during the interview near you.
  • Prepare a greeting + introduction message. This can be a compressed form of your past experience + projects + hobbies. It doesn’t have to be long, but it should be something that will give the interviewer a sense of who you are and what you like.
  • Prepare questions to ask at the end, in case the interviewer gives you time at the end. Examples:
  • What are the core company values?
  • How does a team function / how does your team work?
  • What kind of projects do you work on?
  • How has your time been there so far?
  • What would be some of my projects?

During your interview

Remember, you’re going to talk to a human and be hired by a human, so it’s better to have a conversation rather than robotic Q&A. Explaining the approach is much more important than writing the code. Writing code correctly is important, but its explanation must complement it. It’s very very important to talk throughout the interview. There are multiple reasons for this, the most important being -> if you’re stuck or going in the wrong direction -> the interviewer can help you! Here are some general tips that will help you more:

  • DON’T code right away. Discuss the question with the interviewer. They are there to explain it to you, not fight or argue about something.
  • Think, think, think, and speak-out-loud before starting to code. It’s very important the interviewer knows what you’re thinking so that they can help you! They can’t help if they don’t know.
  • They’re not looking at how fast you write code. Take it easy, type in slowly, speak while you’re talking, and make sure they understand your overall solution.
  • The interviewer will always try to help you with hints, lookout for those. Think about their reaction — positive or negative, and the move in that direction.
  • There are 45–60 minutes. You CAN and SHOULD think for the first 5–10 minutes. Don’t dive right into code and mess it up. Take your time and think out loud.
  • Think of the time and space complexity when writing code, they’ll always ask that after the question is done. If you don’t know it or are confused, repeat the same drill — think out loud.
  • Always come up with TEST cases when you finish writing code — “let’s test this with some edge cases”

After your interview

  • Follow up, even if the interview was bad. Write a simple email back saying how you enjoyed it and look forward to the next steps. It shows interest and everyone likes that. If the recruiter or manager replies, that’s well and good. If they don’t, you have nothing to lose.
  • Make sure to check in after a week or two. A lot of times, recruiters forget to follow up so it’s fine to send a friendly ping.

You’re going to get what you’re aiming for, very very soon! Keep working hard, you got this!

Everything about a tech internship

“An internship is a period of work experience offered by an organization for a limited period of time.” It’s a 10–14 week long part time job where you work full time, learn new things, and implement those new things to add new features!

Almost every company offers internship opportunities and it’s an absolutely amazing experience working on cool projects. Also, it’s a great opportunity to meet new people, make some extra $, and gain a lot of knowledge.

You may learn a new programming language, framework, or something totally different, but the overall experience will leave you with tons of new things. If you want to know how to apply and get one — see the other blog. This will cover how to ace it and have a great overall experience!

Network

Most people will mention this but never tell you how to do it. Here are some simple ways to get started:

  • Common ground
  • Tons of people at tech companies play cricket and that was a great starting point. I made my initial connections through that, went to play games with them, and eventually became good friends.
  • Events
  • There are tons of events which you can find on meet.com and other websites.
  • Every company has tons of events, make sure to join those and meet new people.
  • Meet new people, make new friends, explore different things, and enjoy.
  • Lunchclub
  • This is a platform where you meet random people for your professional network.
  • Most newbies find it difficult to start because there’s not a lot of value addition which you can provide as a beginner.
  • Now that you have an internship, you might have some more things to discuss on lunchclub
  • Team
  • This is the easiest way to meet new people and make strong connections
  • Most of your teammates will meet you sometime in a week or something
  • Make sure to leave a good impression, see what value you can bring to the table, and ask whatever questions you have.

Work

  • You’ll probably learn something new — language/framework, so that’ll be great fun!
  • Learn the new things, make smaller projects, work on the team project, and eventually add that to your skillset
  • Update your manager/mentor with all the things you’re doing every week/day and seek regular feedback
  • If there are any opportunities of presenting what you made, take that up and present in front of other people.

Learning

  • A lot of companies have other smaller projects going on — for other interns or early grads. Keep a check on that and maybe see if you can add value to those
  • Learn things which you don’t know — testing, frontend, etc and master things which you already know.
  • Companies have partnerships with other companies like Linkedin, Github to provide free tutorials on multiple skill sets.
  • There are live classes, smaller events where someone shares or teaches something — don’t miss those out.

Converting

  • A great advantage which every internship offers is a chance to convert that into a full time or another internship offer
  • If it’s a project which can be continued, talk to your manager, and begin the conversation early.
  • Most companies do have a formal process for the conversion to full time, so keep a check on that.

Ask tons of questions.

No question is dumb, ask whatever you want to. You’re just an intern — ask questions, learn new things, meet awesome people, travel around if possible, work hard, and enjoy your time.

--

--