In this blog I wanted to talk about my recent interview with Microsoft. I want to give some insight into the entire process and also share my thoughts on the entire process.
Disclaimer!
As a disclaimer, I want to state that this is not a definitive guide on how to “crack” the Microsoft interview, nor will I disclose any detailed interview questions or code I wrote for the code challenge. I am writing this blog to offer a high level view of the Microsoft interview process for those who are considering applying for a position at Microsoft.
Background!
The very first time I interviewed with Microsoft was when they came to my college campus for interviews. I personally thought the interview was unfair, I thought they asked a lot of questions that a soon to be college grad wouldn’t know and quite frankly, I thought the interviewers were extremely arrogant. The college campus interview has shaped my opinion of Microsoft ever since and I have never really tried to interview there again because I felt the results would be the same.
Fast-forward to 2017, I was contacted by Microsoft for a position that they thought I would be a good fit for. I had an interview with a Recruiter first to determine interest and eventually moved on to the 2nd round. When I interviewed with the individual who was in charge of the team I would be on, the first thing he told me (and I quote) “I am looking for someone who has 15 years in Technology and 15 years in at least 3 out of 5 specific industries and I want them to be an expert in both Technology and in those industries. I know I am looking for a unicorn and this person will be hard to find but that is what I am looking for”.
I was fairly certain that I wasn’t a unicorn so we both agreed to end the interview early and not waste each other’s time.
In mid-2018, me and a co-worker joined the DFW Azure User Group. This meetup is hosted at the Microsoft Las Colinas Campus in Irving, TX once a month. One of the organizers posted on the meetup.com forum that Microsoft was looking for people for their Commercial Software Engineering Team (CSE) that they are building in Dallas. After doing some research on what this team would be doing, I felt that the opportunity was right up my alley. The name and email of the Microsoft contact was provided and so I submitted my resume.
First Contact!
The next day I was contacted by an individual at Microsoft via email and he had some basic questions for me, one of them being would I be willing to go into the office a few days a week as I have been remote 100% for about 4 years or so. He also sent me a link to the official job posting on Microsoft’s website and asked me to submit my application to get into the pipeline.
First Interview!
My very first interview was with the same person I had first submitted my resume too and he was the person who was responsible for building and running the new team in Dallas. The first interview was all about cultural fit, getting to know me, finding out my interest and also for me to get to know him (he would be my boss if I got the job) and Microsoft as a whole. The interview lasted I believe an hour and also, this individual was in Germany visiting family, so there was a massive time difference, so I wanted to be very considerate of his time.
After the the interviewer felt that I was worthy of a second interview, he scheduled the second interview, which I believe was a week later.
Second Interview!
The second interview was with the same interviewer as the first but this was far more technical in nature and went a little deeper into the technical details to determine my current level of expertise. He chose specific projects on my resume and asked me questions about the technology, why we used it and what I would do differently. He also said something that was surprising. On my resume, I have about 6 links to Github repos, blogs, talks etc etc and he told me that in his opinion, those links were more important then everything else on the resume.
Also, he chose one of my open source projects and gave me a certain scenario and asked me how I would design the software differently, given this new scenario.
After the interview was over, he expressed interest in bringing me onsite to do the final round of interviews. So I am thinking to myself, okay, so the onsite interview will be in Las Colinas and he quickly told me the onsite interviews would be in Seattle and that he wanted to bring me out there in 3 days. He told me that he has a list of people he would prefer to do the interviews but the only time they would be together is in 3 days in Seattle and if not then, it would be another 3 weeks before they are together again.
It turned out that 3 days was a little tight to get me out to Seattle, so I ended up waiting until I believe 3 weeks to get to the final round of interviews.
Code Challenge!
About a week before I had to do onsite interviews, I was given a Code Challenge to complete. The interviewer explained that I shouldn’t take too much time to complete the assignment but “try to impress us”. He said one of the interviews would be a Code Review and you will be asked about the code you have written. While doing my Code Challenge, I emphasized good naming conventions, code design, unit testing and documentation.
While Waiting!
While waiting for the onsite interviews, I started to get a lot of emails from Microsoft as they started to setup my travel. I was asked to log into their Action Center and input the times I would be available to travel, if I had any disabilities, sign a Non-Disclosure Agreement and understand how the expense reimbursement policy worked. The Action Center was also where I found out that I would be going to New York instead of Seattle for the onsite interviews.
Eventually, I was given my flight and hotel information, where Microsoft’s Manhattan Office is located, which is where the interviews would take place and who would be doing the 5 Round Interviews. The schedule was going to be pretty tight as my flight would leave Dallas at 5:40 PM on a Monday, I would be onsite for about 6 hours on Tuesday and my flight back to Dallas would leave the same day at 6:40 PM.
Also, while I was waiting to hear about when my onsite interview would take place, I was contacted by a Microsoft Recruiter in Seattle about a similar position. I thought she was taking over the interview process but eventually I found out that this job was different and would require me to move to Seattle.
Cold Feet!
I felt pretty relaxed about going to New York for the first time in my life and possibly getting slaughtered again like I did on campus so many years ago. However, about 3 hours before I was suppose to Uber to the Airport, I kind of got cold feet. As stated in previous blogs, I suffer from Impostor Syndrome and all the little demons were out basically telling me that it was a waste of time to go out to NYC only to be completely embarrassed.
I had read that if one of the interviewers didn’t like you or you did bad on one of the interviews then they will just tell you your day is over. So one of the ways I was able to gain more confidence was to actually look up things to do in Manhattan just in case my first or second interview went so bad that I was dismissed and had a bunch of free time on my hand. Honestly, to temper expectation, one of my goals was to just make it to the 3rd interview and if I did, it would have been worth it.
Onsite Interview - Round 1!
My first interview was to start at 9 AM. I was told to ask for a certain person when I arrived but when I did, I was just told to go to a floor in the building and wait. Also, there were a few other people waiting to interview as well.
My first interview was with the individual who I had already interviewed with and who be my boss if I got the job. Per the schedule, this was supposed to be the Code Review interview but he told me the 4th interviewer would do that. This interview was a Whiteboard Session. He gave me some specific details and asked me how I would design the system to comply with these constraints. One interesting thing about it was if you didn’t know certain things, you were allowed to look them up on the computer. I thought I did fairly well on this interview but I did need some “coaching” and some of the specifics around some of the Azure Assets I would use to design this system.
There was no hint of arrogance, he seemed to really like when I asked questions and as I coach people all the time, he had no issue with me saying I didn’t know something. After the whiteboard session was over, I asked him some questions and then it was time for the next interview.
Onsite Interview - Round 2!
The next interview was with the first interviewer’s boss and I would say this was more of a Cultural Interview. The individual asked me a lot of about my experience, since I am a SCRUM Master, she asked me my thoughts on Agile and how I have seen it implemented at the many clients I have served. Overall, she was really trying to figure out if my personality would fit the Microsoft Culture. She told me that they are extremely picky when looking at candidates. She told me that in the past, they wanted you to be an expert on everything but now, we want people with broad knowledge but an expert in a few areas.
I really enjoyed this interview as she was able to provide me with a lot of insight into what I would be doing, Microsoft’s Culture and what her idea of a good work environment should be. It was very interesting because me and her were on the same page on just about all of that ie preferred Consulting Work, Remote Work and how clients should be treated. We actually went over a bit on this interview because we were chatting so much and was interrupted by the 3rd interviewer.
Onsite Interview - Round 3!
The next interview was a mix of Technical and Whiteboarding. The interviewer wanted to dig even deeper into certain technologies on my resume and ask me questions about it. This is the reason why you never ever lie on your resume because somebody will ask you about it :). For the Whiteboard Session, he gave me a set of parameters and asked me how I would design a system to meet these requirements. I liked this interview because he actually gave me some tips that I feel were very innovative and things I would not have thought about.
Again, I am still surprised because none of these people have been arrogant or condescending. Actually, the 3rd interviewer asked me if I thought the Whiteboard Session was fair and I told him absolutely it was fair. I just told him that many people (at least people I know) would not have come up with some of his design ideas (invoking Azure Storage, JavaScript and CDNs).
Also, this was the interview where I asked about being dismissed early and the interviewer told me that they didn’t do that anymore because they found that it introduced bias and it gave any particular interviewer saying “no” early too much “influence” over the process.
Lunch Time!
Me and the 3rd Interviewer ended up talking about personal things like things to do in NYC, where he was from and his background. He was just a nice guy and I think he genuinely wanted people to do well but knew it was his job to make sure Microsoft was bringing in the right people. We ended up getting interrupted by the 2nd Interviewer who brought lunch and I just ate in the room.
I read online that you would go eat lunch in their cafeteria but maybe they don’t have one in the NYC office and I also heard that someone may sit with you while you eat to learn a little more about you and that didn’t happen either.
Onsite Interview - Round 4!
The fourth interview was a Skype Interview and it was with an individual who was actually in Dallas and one of the members of the team they were building in Dallas. After getting to know each other, he asked me to give an overview of myself and then he dove into the code. I was pretty impressed because I felt my code was air-tight and would be hard to find fault with but he managed to do it.
He wanted me to explain why I did certain things the way I did and asked me to explain certain concepts related to the technology I was using. He also had questions regarding my documentation and also showed me that I had made an assumption but didn’t document it.
However, again, there was no arrogance and he was very complimentary and told me that my code was extremely good and that he had already let the others know his opinion. He even admitted that when you do a Code Review, there are always little things you can find but overall, he felt my code was pretty good.
Onsite Interview - Round 5!
When the 5th interviewer came in, he was pretty much all about business. He told me that his interview would be divided up into 4 parts, the last being another code challenge.
This interview was a mix of Consulting Skills, Technical Skills, Design Skills and Cultural Fit. I was asked how I would sell a Client on certain technologies, I was asked to give very detailed information on how a certain technology works and eventually, we did the code challenge but it was on the Whiteboard.
Also, what I noticed is as I got to know the interviewer, he started to lighten up and even make a joke that people tell him he is mean. He went to the Whiteboard and explained the situation, gave me an output and told me to write a function that would transform the input to something else. What was cool about this interview is that he understood that people wouldn’t know certain things off the top of their head, so he allowed you to look it up or if he knew it off the top of his head, he would provide the answer.
As I was writing out my solution, he would ask me, okay, how would you test this and what would you be looking for, so I had to demonstrate the ability to write testable code. He also asked me how would I design things if certain constraints changed over time. I was actually proud of myself because we were about done and I said, “Hey, there is one scenario we may have missed”. And when I showed him, he said, “Hmm, I have been asking this question for a long time in interviews and that is something I never thought of”.
And of course I immediately thought to myself that I need to keep my mouth shut because he then asked me okay, how would modify the code to account for this and how would you test it, which I was able to do.
After the interview was over, he told me to stay put and that he was going to go get the person I was told to ask for when I arrived. About 5 minutes later, he came back and said, no everything is done and you are good to go. To be honest, I kind of felt that since this person didn’t come to talk to me that I didn’t do very well but ultimately, I was happy that I flew out to interview because it was a positive experience.
Thoughts!
Overall, I thought it was a very positive experience. Here are the things I really liked about the interview process:
None of the interviews were “Stump the Chump” interviews. They never asked me really weird and strange questions to see if they could stump me. All of the questions were relevant to what I would be doing or what I had done in the past.
As I stated in prior blogs, if you are going to have a Code Challenge, I am a big fan of letting the interviewer do it in the comfort of their home. There are many ways to find out if they cheated, so this should not prevent you from allowing this. Also, the Code Challenge was not to solve some cryptic puzzle, it was something that you could get assigned on the job.
I was also impressed with the lack of arrogance and condescension. At some of these big tech or consulting companies, there is a lot of arrogance because oh we’re Microsoft, Apple or Google and you should be proud that we even took the time to interview you. As stated, I kind of felt this in the past with Microsoft but based on my research, Satya Nadella has really changed the culture of Microsoft and I believe it is bearing fruit duing the interview process.
I thought the Expense Reimbursement process was very easy and wasn’t an absolute beating. You literally just uploaded your receipt and filled in fields on a screen to indicate what the purchases were and you were done. I was afraid that this process would be cumbersome to the point that I would just eat the cost via my LLC.
Honestly, the only negative I have is that the schedule is very tight. However, I understand that it is very expensive to bring people out, so it is a little unreasonable for you to expect to be in NYC for a few days.
Tips!
Here are tips for anyone that would like to work for Microsoft:
Work on building your personal brand. Microsoft Culture seems to be big on giving back to the community via Open Source, Blogging and giving talks.
Don’t be arrogant and always accept feedback. I kind of got a sense that if I was very argumentative about my Code Review feedback or some of the Whiteboard Sessions and failed to see their point of view, that it probably would have been a problem.
For the Code Challenge, do not assume anything and always document any assumptions that you have made. They actually tell you that when they give you the Code Challenge but on one crucial detail I completely missed this. Also, whatever code you write be absolutely ready to defend it and explain why you did it.
Last, do try to impress them. I implemented Lamar IoC, I used design patterns, I did TDD, I had quite a bit of Unit Tests and just tried my best to write Production-Level code. My goal was to also deploy it using Azure DevOps but they stressed to not go over a certain amount of time, so I opted not to go that far.