Early last week I went through a Program Manager interview at Microsoft. I am happy to say that it went reasonably well, since I did get an offer. This has been a long time coming… Since I did a fair amount of research before going into the interview, and was helped out a lot by the written experiences of others, I want to add my own experience to the mix. Also, while Googling for information on the interview process and what to expect, I found a lot on the Dev/Test side of things, but very little about the Program Manager interviews. There were significant differences (though I have never had a Dev/Test interview, so perhaps I’m off-base here), so my hope is that I can shed a little light on the PM interviewing process itself.
Before I go into more details about the actual interviews themselves, here’s a brief overview of the entire day:
- Total number of interviews: 7 + debrief
- Total number of teams with which I interviewed: 3
- Length of day: 8:30am — 5:30pm
- Human Resources (Ron Honcoop)
- Publisher Team (Jeff Bell)
- Publisher Team (Tara Kraft)
- Content Management Server — Lunch (Dave Quick)
- Content Management Server (Dan Kogan)
- Content Management Server (Jim Masson)
- Project (Dieter — didn’t catch last name)
- Debrief (Ron Honcoop)
Being the conscientious young man that I am, I took notes on each interview and wrote down most of the questions I was asked, so I will share those. Please note that I honestly don’t know exactly what they’re looking for, but I did get an offer, so I must have done something right. I did do some preparation work for the interview.
I did a simple Google search for “Microsoft interview questions” and wound up with quite a few blogs from people that had had interviews. The search process to uncover really useful information took me a couple of days. Here’s a few of the ones that proved most helpful:
I had heard the Microsoft was fond of asking brain teaser questions, so I looked around for a few of those as well. Even though I had been told that they really no longer asked these questions, I was interested in trying to solve them anyway. They proved to be very stimulating bar conversation on my weekly Thursday-night outing to John Barleycorn’s with the guys. Also, they helped to focus my nervous energy into something mentally stimulating, and provided hours of amusement at work. Here are a couple of the sites that had a lot of interesting problems:
It should be noted that these brain-teasers provided me absolutely no useful information for my interview! I was not asked any of these questions, nor any others that were similar. Their only value was in keeping my mind off of my nervousness and making me the life of the party at Barleycorn’s.
My friend Matt’s sister had an interview with Microsoft a few months ago and got an offer (which she accepted), so Matt got us in touch and she provided me a lot of useful information. She had some tips for the actual day (scope out the location the night before, be ready for it to last the whole day, etc.), and she helped to calm me down a bit, since at that point I was pretty nervous. She did not interview for a PM position, though, so there were differences in my experience. If you know someone or can find a friend of a friend that interviewed for the specific position you’re interviewing for, it would be the most useful.
I also made a mental list of major points I wanted to be sure to mention during the interview. This basically reflected the major points I hit in my resume’s professional summary. I wanted to be sure I hit a lot about HawkTour, since my experience there directly relates to the PM position. I also wanted to stress my multi-cultural background (lots of teamwork benefits there) and communication skills. These were the things that set me apart from other people — I wanted to make sure I talked about them. I wrote out a list of questions that I wanted to ask each interviewer (things like “what are your core responsibilities?” and “how many people are on your team?”). This list gave me a baseline for every interview. I knew they would ask if I had any questions, so I always looked back and my list to make sure we’d covered everything I wanted to go over.
So with all of that background out of the way, let’s get into the guts of every interview. I will go in chronological order. Please hold your questions until the end of the lecture.
Oh, one other thing — I got four basic flavors of questions during the day:
- Questions about projects I have worked on, what my interests are, why I am interested in Microsoft, how I solved past technical problems, etc. These are pretty easy if you anything about yourself.
- These are questions where you’re given a scenario and you need to formulate ideas about usage. I got an equal number of these and design questions. This type of question seems to be all about formulating creative ideas quickly. I had some good ideas, some horrible ones for every question. The interviewer would often ask “What else?” after every idea, prompting me to frantically analyze the problem again to come up with something else. These are a lot of fun and pretty easy if you’re creative and keep a cool head.
- These were the meat of my interview. Basically, they give you a new feature or new product idea and ask you to design a solution. I was clear about any assumptions I made and tried to ask questions to really understand the goal of the product/feature before I started designing. Design can and probably should be done on the ubiquitous office whiteboard. That’s what I did. Design problems were tons of fun as well, and I had several good ideas throughout the day (and a few bad ones), which I was pretty proud of.
- These are the hardest problems for me. Luckily, I only got one or two. These questions have to do with algorithms, computer architecture, etc. These are tough for me because they require complex thinking about details and optimizations which I don’t do quickly. I am a big-picture sort of guy.
My day began at 6:30am PST. I was supposed to be at Building 19 at 8:30 to report in. I had driven out to the campus from my hotel the night before, so I knew approximately how long it was going to take me to get there. I had intended to eat some breakfast, and in retrospect I probably should have, but I just didn’t feel very hungry, so I filled up my water bottle, left the hotel about 7:15, and headed straight for Building 19.
I arrived at 7:30. Traffic was kind of bad, but it certainly wasn’t as bad as I had anticipated. The hotel was literally within walking distance of the building anyway, so leaving an hour early was not necessary by any means. I didn’t really want to sit in a lobby for an hour, so I decided to just drive around the area for awhile and listen to the radio. The area is quite hilly and very beautiful, so I drove around in circles and through some rather affluent-looking neighborhoods for awhile. This helped to clear my head and allowed me to kind of mentally prepare for the day. As is typical of me, I wasn’t nervous at this point (it always passes just before the big day), but I was a little worried because I didn’t know what to expect. I consoled myself by remembering that after that day, whether I got an offer or not, it would be over. One of the hardest things for me during this whole job-hunting process has been uncertainty. At least after the interview I would have a better idea of my plans for the next few years.
I got back to Building 19 at around 8:05. I parked and checked in with the receptionist, who gave a me a couple of forms to fill out, and pointed me to a rather nice sunlit lobby to sit and wait. I was soon joined by a Stanford sophomore who was there for a internship interview. He could not stop yawning. I inquired about how much sleep he had gotten, and he had actually gotten more than I had. And here I was, bouncing off the walls… Anyway, Rondell Honcoop, my HR contact, came to get me at about 8:45.
Ron began by explaining briefly how the day would go. I would not know the identity of my next interviewer until after each interview (I had been told this before). He also explained a little about the teams I’d be interviewing with (Authoring and CMS). He didn’t know much about CMS (indeed, no one seemed to have much info on it), but he told me that Authoring was Office-related. He asked me if there were other companies I was looking at. I told him Google and Lexmark. He asked me to rate them in order of interest, and I put Google at the top and Microsoft second. He asked me specifically what I liked about Google and what it would take to get Microsoft to the top of that list. I was very honest through this process and also made sure to let him know that I was not as far along at Lexmark or Google (I do not have interviews at either of them yet) as with Microsoft. He encouraged me to keep an open mind during the interview and try to figure out how Microsoft dealt with the things that excite me about Google.
Somehow we eventually segued into a deep discussion about HawkTour. I gave him the entire story, from the summer NSF work to the IPRO to the current state of things. I was extremely thorough and he wrote everything down. At several points I had to stop so that he could catch up. I finally realized just how complex the project is, but I think I did a good job of describing everything and specifically my role. I discussed the design process, the reasons behind our decisions, and my far-reaching responsibilities. I didn’t really focus on it, but I’m pretty sure I came across as being passionate, which I know is a huge thing for them. I did not have to fake this, though, because I really am passionate about HawkTour. Otherwise I wouldn’t have stayed on for two and a half years. They’re certainly not paying me that well.
I was pretty verbose in my discussion, so I ran over time with Ron. We stopped at 9:45 and he said he’d call over to Jeff Bell to let him know we’d gone late. I made more of an effort to trim down my discussion in future interviews, but when they kept asking questions, I kept giving answers.
Ron walked me outside and made sure I got on the recruiting shuttle to the next building. He is a really nice guy — it is easy to see why he works in recruiting. He is friendly, easy to talk to, and comes across as genuinely concerned about you. He asked me pointed questions about what I wanted and what my concerns were, and went to extra lengths to make sure the questions got answered or that my needs were met. He’s the kind of guy I could see myself chilling out with on the weekends — all in all, he’s good at his job.
I arrived at the next building and checked in with the receptionist. Jeff came to get me just before 10am.
Jeff, like all the people I met with, was very friendly. He talked to me about the basic role of the PM (manages features, not people; influence without authority), then asked me about the HawkTour project. I talked about the design architecture and our use of SOAP. He asked me about other solutions we had considered, and I mentioned XML-RPC. He asked me if there were any benefits to using it over SOAP other than it was more lightweight. He posed the question in an interesting way: “If someone else were to enter the market with a similar product, but that used XML-RPC, would they have any advantages over your product?”
He then posed my first greenlight question. He briefly talked about OneNote and what it aims to do. Then he asked me how I would extend the note-taking functionality and possibly tie it into HawkTour. I discussed location-based notes, which makes a lot of sense in a tour application, and I talked about the importance of analyzing the needs of the customer to determine additional uses that they would like. All in all, it was a pretty weak answer, but I think I made a good case, and my approach to the problem was sound.
We then switched gears and got into a design problem. He basically framed it like this (not direct quotes):
I have a large digital audio collection. It works great in my computer room, but I want to pump the music to other rooms in my house without buying a lot of expensive equipment. Design a solution.
I started by restating the problem, making sure I understood it fully. I asked a little about the customer and target price range. Then I started drawing on the board. I basically assumed that the user had a simple home network (I stated all of my assumptions — if they were invalid assumptions, then the interviewer would tell me). My solution was a simple hardware device that was networked and had a simple web-based interface for configuration. I missed quite a few things initially (like volume, a way to connect speakers, a way to start playing the music, etc.), but I caught most of them with a little prompting from Jeff. He added a network constraint as well in the form of network cards.
Lets say that my OEM can provide me with cheap network cards that only run at 10MBps. They’re slower, but they’re cheap. Is it worth it?
I asked for information about the cost difference and made a decision based on that, and also disclosed the assumption that 10 MBps would be enough bandwidth to support streaming the audio. He then changed the scenario again.
Someone has entered the market with a $60 device that does what you just described. We have research that indicates customers would be willing to pay $200 for a very full-featured solution. What features can you add that might push it into that price range and make it desirable to the target customer(s)?
At this point it became a green light question, so I talked a little about adding video capabilities to it, and possibly higher fidelity audio. Again, pretty weak stuff, but my forte is designing software, not hardware, so I didn’t let it get me down too much.
Jeff led me to a waiting room after our interview, and I continued thinking through the problems he’d posed, sketching on the whiteboard that was there in the room. Tara came and got me in a few minutes.
Tara talked to me a little about her role in the Publisher team and the overall PM position. She then asked me about HawkTour and asked for clarification when I said I was the “go-to” guy for the project. She then posed a question related directly to Publisher. It was about an email sharing feature. She treated it as a greenlight question initially, then transitioned into design after I had a few ideas. We proed and conned the solutions, then made a decision based on the simplicity of the solution. I made all my assumptions clear, as per usual. I really enjoyed this interview, even though it was kind of short, because Tara actually got up and worked on the whiteboard with me, which made it seem more teamwork oriented, rather than observational.
At this point I was kind of hungry, so I was glad that lunch was coming up. I had been told that the interviewers shared notes between meetings and stuff, but I don’t know if they did it for me, because I got a lot of questions about HawkTour, even though I went into great detail with nearly every interviewer. Perhaps they just wanted me to talk about it each time. I’m not sure. But by the end of the day, I was talking less and less about it because I was sick of defining context awareness and pervasive computing and explaining the architecture of the application.
I had to take the shuttle to a different building for the next interview, and when I arrived, the receptionist informed me I would be meeting with Dave Quick instead of Dan Kogan, who I was scheduled to meet with. Dave came down in a couple of minutes and asked if I wanted to eat in the cafeteria or go out somewhere. It really didn’t matter to me, so we went to a teriyaki place at his suggestion.
The beginning of the meeting was pretty informal, since we went to lunch. Dave talked a lot about his hobbies and interests, and we discussed technologies. He was Greek at RPI, and knew some of the Delts from the chapter there, which was cool. It was nice to talk to someone who knew about the Greek system and didn’t find it strange that I was in a fraternity. I had a good time with him and enjoyed talking about blogging, movies, photography, cars, etc.
When we got back to his office, we talked about the CMS product, since no one up to that point had really been able to tell me what it was, and he went over the PM position as it related to the CMS team. He then posed my first technical question:
You have an array of positive and negative numbers. Find the largest consecutive sum of numbers. The summation can start and end at any array index and can be of any length.
I told him I would start with the brute force approach and mapped out a dual for-loop solution that works, but is certainly the least efficient (
O(n^2)). He asked me if I knew Big-O notation, which I do, but my brain was sizzling and I couldn’t think of it. I offered to analyze the algorithm and try to optimize it, but he seemed satisfied with the solution. I’m sure if I was interviewing for a Dev/Test position my solution would not have been sufficient. But then, I knew going in that I wanted a PM position because it’s what I am best at, and I explained that to Dave as well.
He then asked me about integrating the LCS into Excel. How could we do it? What makes the most sense? This was more of a design question. I developed a customizable bar based on the auto-sum feature that Excel already provides. I tried to keep it simple. When I suggested we make the bar customizable, Dave asked me to draw the user interface on the board. This was actually a recurring theme throughout the day: “What does the UI look like?” I discovered that the PM does a lot of interface designing, even though they may not have any design training or experience.
Dave led me back down to the lobby and chatted with me a bit before heading back upstairs. Dan Kogan would be my next interviewer.
This interview was my worst, I think. Dan and I didn’t really hit it off and he mentioned that I was his third interview, so he was probably as tired as I was. I felt my brain slow down tangibly towards the end of my interview with Dave, and it pretty much stayed checked out for the entire interview with Dan. Dan asked me some questions about the HawkTour survey UI, and seemed to be checking that I knew what UI components made the most sense in certain situations.
He then drew two boxes on the board, one labeled “IIS” and the other labeled “browser.” He wanted me to tell him what happens when someone requests a website in their browser. I wasn’t really clear what he wanted, but couldn’t get any clarification from him (though I just might have been asking the wrong questions. My brain was pretty fried at this point), so I just explained the basic request-response architecture. I skipped the network architecture part of things initially, like DNS, but came back to it later when he asked more pointed questions.
Then he asked several localization questions. Things like:
I have one page that I want displayed in three different languages. How do I do it? What changes are necessary on the server and client side? What does the site administrator see when he wants to add new languages? How do we determine what language to display by default? How to we make this setting persistent if the user changes it?
I think I may have gotten a little too defensive in this interview. Dan made some good points about flaws in my solution(s), but I took it as an attack on my solution, so I immediately became defensive. Anyway, this interview could have gone better, but I suppose it could have gone worse as well.
After the interview, Dan was unsure of who I’d be meeting with next, so he took me to the lobby and said he’d check for me. A few minutes later, Jim Masson came out and led me to his office.
Jim got right down to business, I think because I was an unexpected interview for him, and he didn’t have much time. He told me a little about himself, then set up the following scenario:
My grandmother and I both have lots of digital photos. I am a conscientious computer user and I regularly back up, but my grandmother doesn’t. However, we’d both be equally heartbroken if we lost our photos because of some sort of computer failure. How do we make it easy for my grandmother to back up her photos?
I did the typical clarify the problem approach, then started writing on the board. I tried to fit it in to a format that Microsoft is fond of: the wizard. So I designed the “Photo Migration Wizard.” I divided the entire process into four major steps, then defined each step clearly. One thing I did not explain was that this was intended to be an iterative process — after the initial run of the wizard, it should be a quick and painless process to run it again and update the backup. Some highlights from the design I came up with were that it should be able to export to multiple volumes (ie, multiple CD’s), then import from just a subset of those CD’s (in case you lose one), robust import options, scheduled running, tying in with online backup service of some kind, etc. Jim asked me to go into greater detail, including the UI screen shots, of the importing process, and also asked to consider other usage options for the feature. This led to me brainstorming about photo recovery options if you accidentally delete a photo, and simple comparison functions to compare existing photos to the version in the backup archive.
I came away from the interview refreshed because I felt like I had offered a robust solution, and a couple of times I mentioned features that seemed to surprise Jim, so this served to re-energize me.
Next up was Dieter from the Project Team. I never got fully introduced to him, so I don’t know his last name. This was my final interview on-site.
My interview with Dieter consisted of a lot of questions and answers (I’d actually had a chance throughout the day to think of a couple of new ones) and a greenlight session that was interestingly related to pervasive computing:
I want to integrate a PC into a refrigerator. Brainstorm possible uses and/or features.
I went right to work. I’d actually had some experience with this particular problem because it is an application of pervasive computing. I talked about getting the information of the contents of the fridge into the computer and using it to create shopping lists, and integrating recipes into the computer to make shopping lists based on what you need and what you have. Also, I talked about providing web access using the fridge computer, then mentioned that we would probably have to redesign the browser UI specifically for a touch screen. I discussed possible ways to let the fridge know what was inside it, and went into limitations and such for each of them.
Dieter walked me to Building 19, I checked out with the receptionist, then headed back to my hotel room. I was pretty tired, but desperately needed food. I browsed the web for a bit and found a nice-looking steakhouse, and was almost ready to go when Ron gave me a call to debrief.
Ron basically wanted to go over the day and how I felt things went. He asked me if I had gotten answers for my questions, and wanted to know how Microsoft stacked up against Google post-interview. Honestly, I was pretty impressed with the whole interview process and the people I had met, so I told him honestly that they were at the front now. He encouraged me to let him know if I had questions, and I got permission from him to follow-up if I hadn’t heard anything from him by Friday (which ended up being overkill, because I got an offer the next day).
I came out of the interview pretty confident that I would get an offer. I felt that I had done a very good job during the whole process, and was excited to hear what they would say. In the end they have made a very generous offer and I am happy to say that I accepted. Anyway, I hope that the information contained here will be of some use to you as you pursue employment at Microsoft.