All about Google STEP Application & Interview Experience
Dec 1, 2022
3 mins read
💼 Software Engineer Intern
⏳ May 2021 — Aug 2021
📍 Mountain View,
✅ CPT (F1 Student Visa)
📍 Mountain View,
👥 10,001+ employees
Like many computer science students and programming lovers, working at Google was a dream for me. After watching the movie "Internship" in 2012, I promised myself that one day I would work in that environment. So, in the fall of 2019, my first year of uni, I applied to Google STEP for the first time and received a rejection a few months later. But it was not a surprise to me as I studied in a humanities-focused high school and didn't have much experience or projects to showcase. But that rejection didn't stop me but only increased my desire to get an offer from Google one day. Over the next few months, I strengthened my technical skills and built some technical projects. So, in the fall of 2020, during my 2nd year of uni, my application was successful, I got an interview invitation for the Google STEP internship, passed the interview and got a job offer!
About STEP internship
STEP (Student Training in Engineering Program), formerly known as Engineering Practicum, is a 12-week internship for first and second-year undergraduate students with a passion for computer science. The internship program focuses on providing development opportunities to students from historically underrepresented backgrounds in tech through technical training and professional development. During 12 weeks, you are placed within one of Google's product teams and given a project to complete with another intern.
Benefits/ Cost/ Salary
As an international student studying in Azerbijanj or anywhere else, you might wonder how to get into those companies. The answer is very straightforward: you apply to them! If you get selected for the internship, Google will sponsor your visa to the country you are interested in. So it doesn't matter where you study; you can apply to intern in any EU or UK, sometimes even US, office, and Google will sponsor your visa to join their internships.
You might wonder if there is any compensation or how much it would cost to participate in this internship.
You WON'T pay anything but will be PAID a lot. Google will pay you a biweekly/monthly salary for 12 weeks. They will also give you relocation money to help cover flight/accommodation costs (this is a significant amount, so you won't even use your salary to cover flights/living expenses). Lastly, they will sponsor your visa and any related fees.
So, you won't lose any money on this internship but will gain a lot of experience and money.
How To Apply
You can apply for the program from Google's career page. To increase your chances of getting noticed by recruiters, you can ask current Google workers to refer you. However, I didn't have any referrals and still got interviews. So, focus on making your resume strong, and you can land internships without referrals.
Round 0: Resume Screening
The first stage is to get a resume shortlisted. You need to have a decent resume with at least 1 or 2 good projects and some technical skills. It is best if you have some prior internship experience as a 2nd-year student, but as freshmen, they expect some personal projects. It would be best if you showed a passion for computer science and tech. Some ways to do it:
Participating in coding competitions, e.g. Kick Start. You do not need to end in the first place. This shows that coding is something you enjoy and that you are willing to improve your skills constantly.
Participating in a hackathon: Many hackathons are booming each year in Baku. Participate in them and document the work you do there. If you win, great! If not, you will have a ready project to put on your resume and discuss during your interviews.
Personal projects: literally with any technology you are interested in. Build a webpage, make a game, write a web app. Anything that shows you continuously develop your skills outside of the classroom. Host them on GitHub and add the links to your CV. It can make all the difference.
Community building: Join local computer science clubs, like ACM, or tutor at your university/ some tutoring centres. This will show that you are an actual human being and not just sitting behind a screen all day. Non-tech-related hobbies or activities can also serve to show how you contribute to society as an individual, which is something that employers do value a lot.
Contributing to Open Source: While it may seem daunting at first, contributing to open source projects is extremely easy, thanks to platforms such as GitHub. It can be a gratifying experience. You can start by just adding some translations to the documentation. Add Azerbiajni documentation to frequently used open-source products, which will help you gain open-source experience and also help the Azerbaijani tech community. Then you can slowly move to continue to technical improvements of the libraries/languages you often use. You can search what suggestions are proposed for those libraries/languages and see if you can implement them. Or find an area you want to see improved and propose a suggestion.
My resume had the following experiences:
Programming peer tutor at my university
Full Stack Engineer intern at a small company
Hackathon organizer (community building here!) for my university
A few hackathon projects
Data analyst work I did for one of my professors
As you can see, my resume didn't have any insane experiences. I wasn't an informatics olympiad kid or participated in coding competitions. But I tried to get any tech experience I could at my university and find internships at small companies to build expertise to apply later for big companies.
Round 1: Two rounds of Algorithmic Phone Interviews
If your resume is selected, you will be invited to two 45-minute technical interviews based on Data Structures and Algorithms. They usually give you 2-4 weeks to prepare and schedule your interviews. Those interviews are conducted on the same day back-to-back.
You will solve several problems concerning algorithms and data structures during the interviews, such as on leetcode. Without going into details, since we are not allowed to discuss the actual problems we are given, I will say that the interview is well calibrated to the level students have after 1 or 2 years of computer science at the university level. But it is really up to you to put the practice and dedication to ace the interviews with the resources mentioned above. To prepare for the interviews, I used the following sources:
Read Cracking the Coding Interview Book to understand the structure of the interviews, what big tech vs startup companies expect from interviews, and the topics you need to cover.
Start by going over the basics of algorithms & data structures. You can watch courses such as MIT 6.006 or YouTube videos, such as Data Structures Easy to Advanced Course - Full Tutorial from a Google Engineer.
Also, learn about time and space complexity! They will ask about the complexity of your code and how you can potentially improve it in each interview.
Read over the 14 Patterns to Ace Any Coding Interview Question article to learn common patterns to solve the algorithmic questions.
Head to the Exponent YouTube channel and watch some mock algorithmic interviews!
(Paid) One of the best courses I have used for prepping is Grokking the Coding Interview: Patterns for Coding Questions on educative.io, which goes in-depth over the patterns to solve algorithmic problems and provides example solutions to the common problems.
Go to leetcode and start their Top Interview Questions prep series. Those series cover the topics mainly used in interviews and give example problems for each topic. Try to solve 50-100 (or however you need before you feel comfortable with them) medium problems before your interviews.
As I said, aside from the technical preparation, there are several things you can do before and during the interview to increase your chances.
Practice solving problems out loud: It is essential not only to solve the problem but also to communicate how you solved it. It can be hard to think and talk in English while solving those problems, so practice your thinking process as much as possible. You can use websites such as Pram or get a friend and practice with each other. Alums of your university can also help you out a lot on this, especially if they have gone through interviews and have experience in the process.
Talk to your interviewer: You can solve the problem perfectly. But if you cannot connect with your interviewer and communicate your thought process to them, you will still flunk the interview. The interviewer tests you on more than just your ability to solve a random problem in 45 minutes. So, build a conversation with your interviewer so that in case you are on the wrong path, they can help to get you back to the right solution. It is not a one-way interview; you communicate together!
Round 2: Team/Host Matching!
If you made it to this stage, you already have an offer! The final step is to be assigned to a host team and project. You do this by doing small non-technical interviews with different teams according to your preferences. While it is still technically possible not to be matched to a team, this is rare and depends a lot on you and how open you are to trying out teams that you might not have heard about or were not initially interested in.
I was matched on my first interview with the Google Ads team as my previous project, and the internship technical stack matched well with the team's stack. I suggest being open to any team and not limiting your choices and chances.
Overall, this is a long process of prep and interview, but worth it! I advise every 1st and 2nd-year student to apply for a STEP internship as it will open many more opportunities for future internships and employment. If you perform well during an internship, you will get a return offer to a Software Engineering internship, and after that SWE internship, you can get a full-time offer with Google. So, do not hesitate to apply to the internship while it is open, as applying takes just a few minutes to submit your resume :)