Courtney Thurston is a junior majoring in Computer Science at Embry-Riddle Aeronautical University – Daytona Beach, FL. She had the opportunity to intern with Microsoft the last two summers. She also did an interview for Melinda Gate’s blog which can be found here: https://www.gatesnotes.com/Education/Computers-Are-For-Girls-Too
How did you find your summer internship with Microsoft?
In high school, I won a few awards from the National Center for Women and Information Technology; as part of those awards, the organization mentored us. It soon became clear from that mentoring that the three best internships for freshman and sophomores in computer science and software engineering are Microsoft Explore, Google Engineering Practicum, and Facebook University. I applied very early on to the first two–the last one only opens in January–and completed the interview process for both. Microsoft offered the better package, and was my top choice from the start, so I accepted quickly once I got my offer as they won’t negotiate intern salaries anyways.
What were your responsibilities? How would you describe the company culture?
I’ve been at Microsoft for the past two summers (after freshman year as a Microsoft Explore Intern and after sophomore year as a Software Engineering Intern) and I’ll be returning again next summer, again as a Software Engineering Intern. In my first summer, I was in the Explorer program: you’re paired up with 2-3 other students to work on projects together. Because of how rigorous Microsoft interviews are–they require working data structures and algorithm knowledge even of freshman–the networking value of that internship was really great: I was super impressed by how smart and creative my co-Explorer team was–3 other women from Harvard, the University of Michigan, and UT Dallas. I worked across multiple teams with these women as a software engineer and technical project manager to develop a metrics dashboard for the COSMOS Scope team, the Microsoft Azure team that focuses on the reliability of jobs running our on big data computing infrastructure. We also developed a ‘playground’ test page for new customers of Azure Stream Analytics, a real-time big-data-analytics platform within the suite of Microsoft Azure projects.
Last summer, I returned to the Azure Stream Analytics team as a full Software Engineering Intern. In that internship, I was responsible for designing, implementing, testing, and rolling out a new compression feature to Azure Stream Analytics clusters worldwide. The feature allowed customers to send compressed streams to three different input hubs, serialize it in CSV/Avro/JSON, and export that data and their query results to a number of different output hubs. During my time there, I wrote 2 different design docs that were fully reviewed and approved by over ten full time software engineers at Microsoft, including high-level managers of multiple teams, and achieved sign-off on six different code reviews. I wrote the documentation that is now publicly available on Azure Docs through GitHub and the official Microsoft site, and the feature has now been deployed to every Azure cluster in the world.
Company culture at Microsoft is really supportive, which is why I’ve chosen to continue to return there over comparable offers. Their internship compensation is top-of-the-line, which can be important if you’re trying to put yourself through college; I also think it’s important because it proves women at the company–especially technical women–are compensated fairly. At Microsoft, women make $1 for every $1 men make, at all levels and in all positions (base salary is standardized across levels at the company). Their offer made it clear that they were the best choice for undergraduate internships, and their ongoing support and mentorship has been amazing. I had an extremely intelligent, on-top-of-it manager this summer: she’s worked at the company since about 2001, and holds six patents now across some of Microsoft’s flagship teams like SQL Server and various Azure teams like Stream Analytics. She is just one example of all the amazing role models at Microsoft.
How did your education at ERAU prepare you for this experience?
I applied as a freshman, only a few days after starting college–because of the level of rigor found in the interviews, that first year I did have to prep a lot on my own to get started: Data Structures and Algorithms (CS315) is typically a junior course here, but Microsoft and comparable companies require working knowledge of that material in freshman fall, when I first applied to Microsoft. Although I prepped on my own for my interviews, ERAU has supported me a lot as I continue to return to Microsoft and learn & grow. Dr. Keith Garfield’s classes are always super helpful: I think he’s one of the most knowledgeable, helpful, and engaging computer science professors, and every one of his classes (Discrete Structures CS222, Computer Science II CS225, and Organization of Programming Languages CS332) has been industry-relevant. Dr. Shafagh Jafer’s Software Engineering Practices (SE300) class was also helpful–now I TA it.
What advice do you have for other students who want to work at a software company?
Microsoft interviews–and interviews at other comparable companies–are nothing like the interviews most students have come to expect. You’ll typically do 1-2 phone screens where you read code aloud and explain it and its time complexity, explain how you can optimize it, and answer a few smaller coding questions where you have to produce and optimize a solution in real-time in a Google Doc or other sharing site. If you make it through those rounds, companies will usually do a fly-out round where you spend an entire day doing 3-5 interviews, all of which are even more technical than before. You interview with one or more engineers at a time, who ask harder questions requiring you to write code, debug it without a compiler, and optimize/explain your solution on a whiteboard or a piece of paper–no computers allowed. It’s expected that you not only produce an answer, but often required that you produce the most efficient solution (this can be quantified in computer science, as studied in CS222 and CS315).
Riddle students who are interested in interning at a company like Microsoft should pick up “Cracking the Coding Interview” and make sure they can solve medium-level problems on the website Leetcode. Here are some examples of other good practice problems, that have been used in real Microsoft interviews in the past:
— Given two integers m and n, loop repeatedly through an array of m and remove each nth element. Return the last element left. (If m = 7 and n = 4, then begin with the array 1 2 3 4 5 6 7 and remove, in order, 4 1 6 5 2 7 and return 3.)
— Given an array of 0’s and 1’s, move all of the 0’s to the beginning of the array and all of the 1’s to the end of the array.
— Write a function that accepts an m x n matrix (array) of random numbers, and use the functions row (times) 2 and column-1 to set the entire array to 0.
I wrote an article to help students ace the recruiting process at Microsoft, and that can be found here: https://github.com/CourtneyThurston/microsoft-internships/blob/master/README.md