Interviewing for PM at Microsoft

I am being asked time and again by friends to describe my role as Program Manager at Microsoft, what the interview process is like and what is considered a good candidate for the role. I have written atleast 10 emails and spoken to a dozen people in the last month on this subject. Thinking I might as well write it up in a blog and send it across for future reference.

So, what exactly is the role of a Program Manager at Micosoft?

This is one of the most confusing profile in MSFT because every ORG and every team treats it differently. From what I have been observing, each PM defines how he/she wants to approach that role themselves. You could be very technical and actually work on code, debug, help triage etc., But primarily you are expected to manage and own features in a product – be the voice of the customer of that feature, envision how it is going to be used in the market and drive its development and testing efforts. Steven Sinofsky’s blog about this profile is probably the best explanation I could think of. I read it before my interview and I think it is a fairly good summary of the profile in general and being a PM in MSFT in particular. A lot of what he describes is quite generic, but it articulates the foundations for what the profile is about quite clearly.

Who is a good candidate for this profile?

  1. Someone who is quite passionate about technology (not necessarily limited to products and services from MSFT). If the inside world of creating products that are used by millions of people all over the world and fostering the developer ecosystem from inside is something that excites you – you are a candidate for any job in MSFT.
  2. Although a PM is not expected to be thorough on Data structures and circular linked lists, the job is still quite technical. Basically – you wont be a developer at MSFT, so your technical skills wont be judged at THAT level (which is quite high). BUT, it is a tech company, and you are expected to understand what your feature crew is making and understand it so well that you are able to champion it instead of just being a part of it. That’s kind of what I am trying to say in a nutshell.
  3. As I was saying before, one of the primary duties of a PM is to be the voice of the customer within the company. As a candidate, you should be able to show that you are able to wear the hat of different consumers of an MSFT product and you are able to conceive of features, design them in such a way that it makes sense in the developer ecosystem and that you are able to defend your choices.
  4. Excellent communication skills, ability to engage in intelligent conversation and be an active contributor in geek land. Ability to be a liaison across various teams inside the behemoth that is Microsoft. The wide range of products that are interdependent and the completely different release cycles across partner products makes the planning process for each phase in a product’s life cycle extremely difficult. It is the job of the PM to work across teams, collaborate and ensure clear communication of expectations, dependencies, issues and potential concerns in order to have a smooth development process.
  5. Depending on the product that you will be working on, being active in the developer community (forums etc.,) is a plus. The PM is required to represent the feature the triad owns, presenting in conferences, answering customer questions and channeling important feedback to the feature team in order to improve products are all part of the profile.
  6. You will also be required to possess project management skills. By that I mean –
    1. Act as a liaison between developers, testers and the upper management. The triad of Dev, Test and PM are together responsible for shipping features in any MSFT product.
    2. Ensuring feature crews are working in alignment to what the vision for the product is at the upper management level. It is the PM’s duty to ensure your feature is being championed according to the vision of the product as whole.
    3. Resource management in terms of prioritizing what gets done and what gets cut depending on your team capacity is one of the key things a PM will be doing in consultation with Dev and Test leads.

How to prepare for the interview?

I wrote something a while back that touched upon my MSFT PM interview albeit very digressively. Check it out for some context on what to expect and how you are expected to answer.

  1. Structure your thoughts around the fact that any product you are involved in with MSFT has two types of customers – the end consumer who uses the product literally (like your mom and dad who use IE to browse the internet) and developers who build applications with the products. So any problem given to you has to be approached from both sides and you have to ensure that you think of it as conducive to both customers.
  2. Prepare with the approach of a case study. In the interview, more often than not, you will be given a generic problem and you will have to solve it – logically first and then technical details will start cropping up. What is important is your approach to solve a problem rather than the solution itself.
  3. You won’t be asked to code in any specific language. However, you will be asked to write algorithms and quasi-code (at a very high level). Prepare for solving problems through algorithms.
  4. You will be expected to know what API’s are and how to expose them. Once you have drilled down to a highly technical level of your solution, an interviewer will most likely ask you to write API’s that will expose the functionality of your solution so that developers can use it and make applications. Writing API’s are a daily job as a PM and this is something you can count on to be tested.

What to expect at the interview?

Here is what my interview was like. From what I have observed, there is no standard template that is being followed, there are some basic things that are evaluated (see list above) but the M.O on how they are evaluated is entirely up to the team.

  1. Phone interview -I : This was quite behavioral. The hiring manager (typically one level above who your position will be reporting to) called to understand and gauge basic stuff – my communication skills, whether I was worth their time to interview me at all etc.,. I was asked to describe my projects and was asked a couple of behavioral questions.
  2. Phone interview -II : A highly detailed design interview. There were a couple of initial questions to set the mode for PM role (to check off from the list above – whether I had the approach for all that) and there was one big design question. I was asked to come up with my approach, strategy and vision for the product, base features, fun add-ons, important back-end features that will enable developers etc., We discussed the design of a particular product for over an hour. Examples from my experience:
    1. Design the ideal media player (refer blog for more insight)
    2. Design a restaurant picking application
  3. On -site interviews: There are multiple rounds on-site. The rule of thumb followed here is – each candidate will be allotted ATLEAST 2-3 interviews. The better your perform, the more likely chance that you will have more than 3. If you get to your 5th-6th interview – it will most likely be with your hiring manager and you will be discussing pay package. So, you will be getting feedback as and when you keep interviewing through the day. Some of the questions I was asked in each of these rounds:
    1. Design a digital cookbook
    2. The Mayor of Seattle wants you to come up with an efficient parking system for downtown Seattle. You can make any assumptions that any technical feature you want is doable. For example – if you say teleporting is one of the features, assume it is doable and give me what you will do with that.
    3. Design an alarm clock – this was a tricky one since it was so basic. The trick here is to unlearn everything you know about alarm clocks and just focus on what the requirements are and come up with something that will solve the basic problem.
    4. Design the backend software for an Elevator – this was an API question.
    5. Come up with an application for the Microsoft Surface product – this followed the same pattern as item #2 – any assumptions etc.,
    6. How will you calculate the time based on the angle between the minute and hour hand of a clock? – this was a coding question.

All of what I have tried to summarize here is based on my experience and my point of view. Hope it helps and good luck!