The Microsoft recruiter for the University of Michigan recently asked me for a list of PM interview tips that she could send to PM candidates in advance of their interviews. I did a quick search, and found that there really wasn't that much already out there on the subject, and figured I'd post my response here for other web searches to benefit from. Here goes...
1. Do your research and understand the role of a PM at Microsoft. The job description of a Program Manager can be a bit harder to grasp at first than those of their Dev and Test counterparts. Beyond the description on the Microsoft career web site, you can scour the web for useful tidbits of information – like this post by Steven Sinofsky (http://blogs.msdn.com/techtalk/archive/2005/12/16/504872.aspx). If you have friends who have worked/interned at Microsoft, ask them about the role too. Bonus: Quite a few PM interviewees have made blog posts about their PM interview experiences – seek them out!
2. Focus on passion and potential – not brain teasers. We care much more about your passion and potential (especially coming right out of college) than about your ability to deduct why manhole covers are round. Brain teasers and puzzle questions can elicit critical thinking skills and even probe how you handle under pressure, but they’ll rarely make or break your day of interviews. When preparing for your PM interview, focus on being able to answer questions showing a strong interest, passion, and understanding of software and technology. Be able to tell the interviewer about a project you’ve worked on that would make her say “wow”. Be ready to tell us about a product or technology you love (or hate) – and why – and how you might change or improve it.
3. Use the whiteboard. Great communication skills can be key to being a great Program Manager. Don’t be afraid to use the whiteboard when answering questions (even if not explicitly handed a marker). Don’t feel that you need to be well-versed in UML to start sketching a design, a timeline, or a list on a whiteboard as you answer a creative, design, or technical question. Practice this before your interview if you don’t already do it day-to-day. PMs do a lot of writing, presenting, and convincing – show you’re up to the task.
4. Design for the customer. A Program Manager is the voice of the customer. Ask and understand who the customer is before answering a question that begins with “How would you design a …” or “How would you improve …”. Often, there are multiple customers – for example, the web developer is as much a customer of Internet Explorer as the person doing the browsing. Brainstorm a bit, but then also talk about how you might otherwise go about getting more information directly from customers. Prioritize (and whiteboard!) requirements and features before you design anything!
5. Make informed tradeoffs. One of the hardest, most important, and least scientific parts of a PM’s job is to balance customer requirements, competitive offerings, constrained resources, and make tradeoffs where necessary. You have 3 months of time left on a project that will take 5 months to complete. What do you do? This is a theme that has been extensively explored in software engineering books like The Mythical Man-Month. Do you cut features? Slip the date? Hire more people? Hint: The latter rarely works. Be creative and intelligent with your answers, but also don’t be afraid to cut (or postpone) the right features if that’s what it comes down to.
6. Be comfortable and confident, but not cocky. A big part of a PM’s job is influencing others without having any authority over those individuals. You might be posed a hypothetical situation and asked what you would do, or you might be asked about real challenges you’ve faced in the past and how you’ve resolved them (or what you would do differently if given the chance). Use specific examples to show that you can empathize with the positions of others who disagree with you, and that you can convince those who disagree to resolve their differences and work together towards a common goal. You want the interviewer to perceive you (both from your examples and generally from the way you interact) as somebody who is confident and smart, but also as someone who is humble and willing to cave when necessary. Sidenote: Some of the best PMs at Microsoft are the ones who are willing to cut or postpone their own features out of a release when they believe it’s the best thing for the product and team.
7. Be prepared to code. While programming isn’t necessarily part of the daily regimen for all Program Managers at Microsoft, they’re still expected to have technical understanding and experience. You may be asked to write code to demonstrate your understanding of algorithms, architecture, programming languages, and/or other technical areas. Make sure you understand the question and can define the problem before beginning to formulate an answer. Always ask clarifying questions. Jot down your proposed algorithm in very high level steps or pseudocode before attempting to express it in a programming language. Before you decide to stick with an answer, think (always out loud!) about its algorithmic complexity (Big-O notation) in terms of time and space and consider any alternatives or optimizations you could make. Pick the programming language that you’re most comfortable with, and ask the interviewer if she is okay with you using it (and explain why) to express your answer. Finally, suggest some test cases for your code and run through them to find bugs. The problem solving process you follow here is arguably as or more important than the syntactic correctness of your final answer. Tip: There are plenty of books and web sites with programming interview questions. Set up a mock interview and have a friend quiz you before you attempt the real thing. Don’t attempt to memorize answers, but get comfortable performing under pressure and do familiarize yourself with arrays, linked lists, trees, searching/sorting, and string manipulation strategies – they’re favorites and well-suited for an interview time window.
8. What counts is all in your head. Remember you’re being interviewed for what’s in your head, not what you wear. Dress comfortably – personally, I wore a short-sleeved shirt – but if you happen to be more comfortable problem solving and whiteboarding in a suit (and don’t mind some “interviewee” glances throughout the day), then that’s perfectly acceptable too! Also remember we’re not interviewing you based on your extensive work experience when you’re coming right out of college. Instead, show the people you meet with that you’re creative, innovative, entrepreneurial, and that you have a strong interest in and passion for technology – and applying it to real life challenges faced by nearly a billion people who use Microsoft products worldwide.