I decided to share with you my internship interviewing experience as a Software Engineering Intern at Microsoft and Google:
How I got through the CV stage (CV tips)
What I did right and wrong during my in-person and on-call interviews
Some advices and thoughts from a perspective of someone who is an interviewer now
It's all written from a perspective of quite a few years in the industry (Software Engineering) both as a candidate and as an interviewer (currently as an Android and Frontend interviewer at Canva).
I think looking back I can see how the choices I made influenced my current career and hopefully I'll be able to pass some of those finding on your guys so you can make more informed decisions when picking internships and participating in the interviews. I will also link to my YouTube videos about those topics :)
Let's start with some facts!
I studied Computer Science at University of Warsaw (Poland): bachelor's (2012-2015) and master's (2015-2017). I've been coding since I was 11 but that is definitely not necessary to get a job in tech / as a programmer. It's important for the backstory as it just shows how obvious of a choice CS was for me. Having a CS/SE degree definitely helps with getting an internship especially in the phase of submitting a CV and getting your first call back. Some of the companies even require you to be currently enrolled in one of the tech degrees to be able to apply.
My uni was very maths / algo centric with a lot of theory but also quite some practice. You can check the respective links above to see my overview + review of each programme and what courses/experiences I found useful in the future.
I first applied for internships at Microsoft and Google during my second year at uni. The first difficult part is to get your submitted CV noticed. There were 2 factors contributing to me getting a call back from both of those companies:
studying at Uni of Warsaw which has a good reputation in Europe and generally most CS students get a call back
crafting my CV to showcase all of my projects and previous experiences in a nice 1 page view
It's probably worth noting that at this point I already had a part-time job and had a couple of live projects: both web and Android apps. In 2013 when I was applying for the internships I focused on my Android experience because that was the niche I wanted to specialise in and at that point in time it wasn't really a popular skillset. The good thing about that was that, first, it caught the attention of whoever reviewed my CV and second, it gave me a topic to talk about during the less formal part of the actual interviews.
[advice] Translating it to 2021 - pick your niche, create a couple of projects and make them live (you can often host your small-scale projects for free on different platforms: google cloud, heroku etc.), definitely put them on your CV or even create a portfolio website and link to all of them there. Pick your niche based on what interests you vs what you think will bring the most money / the best career progression as following what you like will be much easier and more enjoyable.
After the CV stage I got a call back from both MS and Google and got invited for the first round of interviews. Those are usually short (30-45 minutes) relatively easy whiteboard coding / algo interviews.
BTW if you'd rather listen to me talk about it than read here are two videos about what I'm about to say:
So, coming back to the first round of interviews: for the MS one I got invited to the Warsaw office where I met the interviewer who was also one of the principal engineers at the office I was interviewing to (Oslo, Norway). The interview was in English and the first problem was Given a sentence reverse each word in this sentence. I first wrote a function which given a word reverses that word and returns it and then another one that iterates over the words in a sentence and uses that function to complete the task. Important note: you can only use basic data structures, statements and loops so for example you have to implement word-detection and extraction yourself (all you have is an array of chars).
What I did right during that interview:
split the complex task into small subtasks and tackle them one by one
consider edge cases
talk about the solution before starting to write pseudo-code
The second problem was How would you tackle gestures if MS Excel was ported to touch-screen devices (yes kids, 2013, spreadsheets didn't work with touch 😂). I started with asking clarifying questions, trying to understand what would differ if we introduced gestures and that was pretty much what the interviewer was looking for - approach to solving problems, not the solution itself.
I got a call back soon after saying I'm invited to the final round of interviews on-site! In Oslo, Norway. Flight and accomodation for the night paid by MS 🎉 For a kid like me who didn't travel abroad before that was amazing!
In the meantime I failed my first Google interview. It was a phone call interview with code written in google docs. Couple of things that went wrong was:
My English vocabulary was not sufficient so I had to translate a lot of the words the interviewer said and he took my typing as a sign of looking for an answer on StackOverflow :( From the current perspective I know I should have asked him to explain the word to me instead.
Difficulty talking on a phone in foreign language.
Lack of ability to read/use body language to explain what I had in mind (I believe I talk more with my hands than my actual voice when going thru solution ideas).
I don't blame my skills or ability to solve the problem at this point. It was just an unlucky set of circumstances and I proved I could do it a year later when I actually got the internship offer from Google (and rejected it, more details why in the video linked above 😉). However, it's ok to fail an interview just because you simply don't know how to solve a problem. It just means you have to practice more and there are heaps of platforms that let you do just that (leetcode, katawars etc). I'm not saying I agree with heavy-algo-based interviews, just that there are methods to practice it.
Coming back to Microsoft and my final stage of internship interviews...
I flew to Oslo the day before my interviews. On the day I was expecting to go through 3 or 4 50-minutes interviews of problem solving in both algorithmics and system design areas. I ended up needing to only do 3 of them as the interviewers were already happy with my performance at this point. That was the second time that my personal projects got in handy when after solving one of the problems faster than expected the interviewer scanned through my CV and started asking questions about my Android apps and we ended up having a nice exchange of our past projects and ideas :)
That's a part of the interview process people often dismiss and not mention - the interviewing engineers will often be your direct peers and presenting yourself as a likeable human being and not just a coding machine can really help your chances (it's called cultural fit). A lot depends on your interviewer and if they actually give you a chance to do so.
[rant] I've experienced a lot of interviews both as a candidate, as a leading interviewer and as a shadow (observer) and TBH I believe that a lot of people shouldn't be interviewers as they lack the interpersonal skills of making the candidate feel comfortable, make the process clear, help along the way etc. Obviously, the process is extremely stressful especially for people just entering the workforce like interns (but veterans get stressed during interviews too, it's just such a weird situation to be in) and it's our job to allow them to reach their full potential during the interview. So, if you find yourself in a situation where you feel like your interviewer is against you - I'm really deeply sorry. It will happen. It happens all the time. At companies of all shapes and sizes. Just don't get discouraged, please, and keep going. The chance of getting a nice one vs a bad one is actually much higher so sooner or later you will be sitting in an interview that will let you be yourself and show all your skills and abilities 🤗
Anyways, I got the response around an hour after completing the interviews. There was around 5 other people interviewing at the same time, for the same positions so we were just chilling together in one of the meeting rooms, eating snacks and waiting for results. I got it and I was extremely happy! The funny part was, I was more happy I managed to do it in English than that I solved the problems 🤣Later, one of the employees walked me back to the train taking me to the airport :)
I would love to write about the whole experience itself but I feel like this post will be waaaaaay too long then, so I will just redirect you to my video about it for now and if you guys are interested I can just write another post about it! - My Microsoft Internship experience as a Software Engineer
I also ended up getting a full-time offer from Microsoft after 2 internships I did with them (I didn't interview for the second one, they just invited me automatically after the first successful one). And I initially accepted it (with a start date faaar away in the future so I managed to get quite a lot of diverse work experiences in the meantime) but then ended up going with Canva 🙈Here's another video with a proper breakdown of all the reasons why I did that including:
total compensation (salary, stocks, bonuses etc)
I hope this was in any way helpful, let me know if you have any questions and I will try to answer them all!
Good luck to all of you applying for your internships this year 🎉 🤗