
Takeaways after ~90% response rate to my SWE applications
In early October, I accepted an offer to join Microsoft as a summer 2020 Software engineer intern. The whole process went so fast that there was only just over a month between when I submitted my application and when I received the offer. This was my second time applying to Microsoft with my previous application ending just after the first technical interview. In this recruitment cycle, I applied to and had final round interviews with several other great companies. But in the end, I decided to go with Microsoft. Given my experience from last year and this year, I thought I should share some of the takeaways that I gained. For obvious reasons, I won’t share the specifics of any of my interviews. With that said, these are the things that I thought would be helpful to anyone who is considering applying to software engineering internships:
start preparing early
If you are planning to apply for a Software Engineering internship with a company like Microsoft, you will not only have to be good but you also have to show that you are one of the best they can get. Distinguishing yourself from everyone else is really hard, but it can be made so easy if you have enough interest. Some of the ways I found useful in doing this are:
→ get comfortable with data structures and algorithms: This goes without saying. Data Structures and algorithms question are the backbones of programming interviews. Taking a class in DS/A is the first step. But just taking the class won’t help you, after all every CS/SWE student takes the class. Take time to understand all(I mean all) major data structures and algorithms, their implementations, the complexity of the operations on them and be ready to code them by yourself. I find books like cracking the coding interview and Algorithm design really useful. There are also a ton of tutorials online that you can follow.
→ find out what you are interested in and build a personal project(s) around that: Side projects are not just a way to improve your resume and impress recruiters, they are also the most effective way of learning a new language and/or framework.
→ look for an open-source project that you are interested in and contribute to it: you will be surprised by how small the number of CS/SWE students who contribute to open source is. For a company like Microsoft that just acquired Github and has big open source projects like VS code and Typescript, having an open-source presence sets you apart from most of the applicants.
→ try getting a position where you can use your CS fundamentals out of class, like a research position or another tech internship: Unless you are applying for a program like Explore, you will need a previous internship to show. Otherwise, your personal project should better be really huge.
Get your resume screened:
This year I applied to 9 companies and got a response from 8 of them with final round interviews with 4 of them. That’s a response rate of almost 90%. I didn’t have this response rate last year. One of the reasons I think my response rate increased is how much time I spent working on my resume. I spent time talking to recruiters and asking them what sort of things they expect to see on a resume. I also spoke to a lot of my friends who had been through the process before and asked them to critique my resume. I did this way before I even started applying for positions.
Do research on the position you are applying for:
There are a lot of tech positions that you can apply to for an SWE internship. But you will most likely want to apply to a position that aligns well with your interests and skills. Even after narrowing down to say, one position, you will want to do as much research as possible in that specific position. Not only does that t let you know if it really is the kind of position that you would like to fill, but you also get to know what kind of candidate the hiring manager is looking for and how to align yourself to those requirements.
Apply early:
This is almost a cliche for all application processes. It goes without saying though that most people still don’t follow it. In fact, I did the exact opposite last year. I didn’t start applying until early October. Applying early puts you at an advantage in my experience. Not only does your resume get to recruiter early(they encourage you to apply early), but it also gives you a good shot at the position. This is particularly true for a position like there one I was applying to this year that takes less than 30 Software Engineer interns every summer. Given that CS and SWE students from universities all over the country will most likely apply for the positions, these 30 spots will fill up really fast and applying late won’t do you any good.
Practice interviews:
In programming interviews, you will be expected to write code on the board. This means that all the autocompletion and compiling benefits that you get when using an IDE won’t be available. The best way to be ready for this kind of experience is to simulate one of your own throughout the preparation process. I find writing your code on a piece of paper and making sure it is as clean as possible before typing it into an IDE helpful. Another thing to keep in mind is that, when writing code on a whiteboard, you have to make sure that you are explaining your thought process clearly. The interviewer will need to follow how you are arriving at your solutions. Just writing code won’t help you. You will have to convince your interviewer that you know why the solution you arrived at makes sense. One better way of preparing for this I found was speaking through your code when you write it on a paper. I know this will be weird if your roommates hear you speaking to yourself in your room, but you will have to do what you gotta do.
You can’t do it by yourself:
If you are applying to an SWE position, then you most likely have bumped into one of “The TechLead” videos. In one of the videos, he talks about this. No matter how good you may be, you will need people around you to have any chance of succeeding. You will need people to critiques your resume, people to refer you, people to do mock interviews with and above all, people to keep you going. Preparing for programming interviews is hard and stressful and unless you have a good company, it is easy to give up.
Programming interviews are very hard to land. But what is even harder, are the interviews themselves. There is an element of luck to passing these interviews, but above all the preparation that you put into the whole process is what decides your fate.

