Preparing for Technical Positions at MS: part 1: college campus route

Matt asked about how to prepare for a technical position at Microsoft. Since there are two separate recruiting engines at Microsoft, I’m going to break my comments up into college candidates and industry candidates to match the paths that people typically enter the company.


College Campus Candidates

I interview a lot of people at college campuses as well as during full interview loops at Microsoft since I took my current position 2 years ago. I’ve visited 7 college campuses and two foreign countries (Bulgaria and Romania) and interviewed around 200 candidates during those trips, and I have had about 20 or so campus candidates interview for positions during that same period. Obviously, a BS or MS in CS at a school with a good CS program is probably the best way to prepare yourself technically for any technical position at Microsoft. It probably goes without saying, but I’l say it anyway: regardless of your degree or your GPA or your class rank, not just getting the grade, but developing a deep understanding of the curriculum is what will best serve you. That GPA on the resume that’s reviewed by a screener at a recruiting fair, or seen by the schools recruiter, may get you 30 minutes with me, but you’ll never get back to Redmond for a full loop if I see that you came out of school with a degree in CS and have gaping holes in your fundamental knowledge.


So back to how to prepare yourself. Here’s some of the things I see in the best candidates:


  1. They are involved in coding activities outside school projects. Coding competitions, cross engineering projects like robotics with a mechanical engineer and electrical engineer, interns writing code for a company, highly involved in local programming user groups, teachers aide for coding classes so that you see a lot of other peoples code, freeware/shareware projects to learn about a new technology – perhaps building an app for a pocket pc to understand how it works, etc.
  2. They keep up with today’s technology, are passionate about it, and can form opinions on where it is headed. A couple common interview questions are

    1. “If I gave you $5000 to spend on any technology related items, what would you spend it on?” Be prepared to talk about all the hardware components in a PC if you want to buy one, what software and why you’d buy, and the advantages of your printer or camera of choice over others in the market.
    2. “Given $10,000,000 dollars to invest in the tech sector, what would you invest it in?” Wireless, 3d graphics, display technology, what trends do you see, or breakthroughs are you dying for that you think would have a broad appeal?

  3. I’m not sure how you go about changing who you are, but I’ll tell you that the best candidates I see are hardworking and fundamentally smart. I see a lot of 3.8+ GPA folks, and they work really hard to get the high GPA.  But too many of them seem to be so focused on getting the grades that they failed to get an education, or they just aren’t that fundamentally smart (or it was a bad day; it happens to everyone), because in my interviews many don’t do too well. I’ve talked to other recruiters for other companies, and this is a major difference between Microsoft and other companies. They tell me that the GPA will tell them that they know their stuff and can get things done. Well, for me, that’s half of it. I want that, sure, and I want to hire the person who will actually make us better as a company with their ideas in addition to their energy and effort.


What I look for when someone applies for STE

I mostly look for fundamentally smart people with a real passion for technology who can generate test cases and understand enough about how computers work to understand what code is doing. I also look for determination and inquisitiveness. Then I look at if this person can grow their coding skills. OK, they’ve never done any OOP, but can they code functionally? When I am making the decision for my team as the Hiring Manager, every STE I hire I believe that they have the coding skills to eventually move to SDET/SDE. Hey, I am in developer tools, I want every person I hire to be an expert on our product, and so I look for the potential to become an expert, which would mean being a developer. That is not the bar across the entire company, so when I am interviewing for Microsoft on campus, I look for the first part (fundamentally smart, real passion, understands computers at a moderate to high level), never gives up, and an inquisitive nature. I generally ask some testing questions, but because there are really few classes that teach how to test software, I am looking for aptitude, not ability. Red Flags: when I see someone come through with a degree in IS rather than CS, I drill very hard on their technical skills. Most seem to make that move because they aren’t enjoying or just don’t get the coding aspects. If this is the case, you will have a tougher time with me in making the STE bar. Not impossible, but it is more difficult.


What I look for when someone applies for PM

The best PM candidates have a MS/Phd in CS, excellent oral and written communication skills, understand the underlying technology, can build prototypes for proof of concept work, and are great negotiators. Pretty much, the best pm’s could be in Dev or QA if they wanted to be, but they have plus communication skills and a strong customer focus that they would rather focus on tying all the features together at a higher level rather than drilling into one area of technology. Warning signs: When I see someone with a BS in CS, then masters in business, and they want to be a PM.  While I think that I understand the logic of this course, it rarely pans out well for candidates. They’ve lost any tech edge they may have had (they haven’t taken a technical course in 2 years), and can’t talk about fundamental coding or design concepts any more. The other red flag: when people haven’t done the leg work to understand what the PM role is. You mean I can immediately manage people out of college? Wow, I want that job! PM’s manage features and process, are not people managers (lead PM’s would do both). Customer focus isn’t enough in this role as well (I see many BS in IS trying for the PM role); you have to know your technical stuff too.


What I look for when someone applies for SDE/SDET

These people love to write code, live it, breath it, bring their laptop to the interview and are probably coding while their waiting for me to be done with the person in front of them in the interview queue. OK, that might be a slight exaggeration, but really, the best way to  get technically proficient at a SDE/SDET core competency of writing code is to, well, write code. Lots of it. All the time. Candidates don’t need to have perfect syntax, I’m not expecting that, but do they have a firm grasp on the concepts? Do their eyes light up as we talk about optimizations on a simple but elegant solution to a coding problem? Do I see that passion? For SDET, the bar goes up slightly in that I am looking for an additional skill. I look to see if they can test their own code. Sure, everyone tests their own code, right? It’s just part of the development process, right? Well, not exactly. Can they step back from the fact that they wrote the code, and look with a critical eye on their implementation? There are 4 types of developers from a QA perspective. 


1.       Can write code, can’t test other people’s code, can’t test his own code.

2.       Can write code, can test other peoples code, can’t test his own code.

3.       Can write code, can test other people code, can test his own code.

4.       Can write code, can’t test other people’s code, can test his own code.


#1s don’t last too long at Microsoft. I characterize them in a very general way as either not enough experience or smarts to go beyond just writing code, or that they have such a huge ego that they believe that they never have bugs in their own code, and anything else being written doesn’t deserve their time. #2, they enjoy poking holes in other peoples designs, but have too big an ego to believe that there are holes in their own code. Ideally, we want to hire all #3 types for SDE or SDET, but we really need them in SDET roles. Why? Well, for test code, there is no additional organization that test’s the test code to ensure that it is working correctly, so these people are the last line of defense between the bugs in their code that cause test code to not uncover flaws in the shipping code. #4s are ok as SDE as well, they can test their own code, they just don’t help their peers that much via code reviews. Mostly, these people see one solution to a problem, and when people throw a different algorithm at them to solve a problem, they struggle grasping it, so reviewing someone else’s implementation is challenging for them.


 I’ll talk more about the industry recruiting route next time around.

Comments (17)

  1. Sushant Bhatia says:

    May I just say that this is one of the most articulated articles on "What a recruiter really looks for?" Kudos to you on quantifying your ideas in such a simple manner and thank you.

  2. gretchen says:

    Great post, Adam! Can’t wait to read Part 2!

  3. Max Battcher says:

    You said: >> I see a lot of 3.8+ GPA folks, and they work really hard to get the high GPA. But too many of them seem to be so focused on getting the grades that they failed to get an education, or they just aren’t that fundamentally smart (or it was a bad day; it happens to everyone), because in my interviews many don’t do too well. I’ve talked to other recruiters for other companies, and this is a major difference between Microsoft and other companies. They tell me that the GPA will tell them that they know their stuff and can get things done. Well, for me, that’s half of it. I want that, sure, and I want to hire the person who will actually make us better as a company with their ideas in addition to their energy and effort. <<

    This really struck something of a chord.

    I’m trying to find a coop job for the Fall (my school’s degree program requires three semesters of cooperative education), and feel like I’m partly not even being considered for jobs because people look at the GPA on my resume and stop right there. It irks me. There is much more depth to me than my GPA, and although I’m not exactly proud of where my GPA is at I know I can work hard if given the chance. Personally, I can’t understand how people can even think about comparing GPAs from disparate Universities and degree programs.

    I’ll cut this comment short, as I’ve once before vented my frustrations:

  4. Adam says:

    Max, I understand your frustration, but in business, results do count, and most people equate a GPA to results. I do think a high GPA is a good thing, don’t get me wrong, I just don’t rely on it to judge someone’s technical ability.

  5. I hear your pain Max. I know a lot of ppl, myself included, who have low GPA’s. But thats cause we dont go to class, dont bother doing the hwks and dont like being treated like little kids in a graduate class. I had a class last semester about Software, Process and Quality Management where the professor literally gave us lists to memorize for exams. No projects, no papers, nothing but exams and stupid little hwks. I got so frustrated with this I stopped going to class or doing the hwks or even showing up for the exam. I believe I learn better by applying knowledge than by regurgitating irrelevant information. I’d rather get a low GPA and spend time learning new technology and developing new apps than learn lists. I plan on taking it again next semester and getting an A just to prove my point, to myself and to anyone looking at my transcripts. One benifit of not going to class is that I learnt so much about working with Directshow, installshield, Win2000/XP DDK, Print Processors, Print Monitors and a lot of very very cool stuff. So to anyone reading this, i’ll say this, dont do what I do, cause not everyone can get away with this. 🙂 But thats just my ravings & rantings.

  6. Lawson says:


    I wrote to you earlier and asking your advice about my situation.

    Well this time I need a suggestion which is valid for larger audiance. How should one prepare himself for the interview at MS. You mentioned that person should be expert in coding.Do you have any suggetion how to develop or sharpen the progarming skills. You mentioned about doing projects in free time. Could you please give an example. I think to become a good developer one should know few basic stuff and I need your opinion if I am right or not.One should have good data structure knowledge,a conceptual understanding of UML and patterns. Finally one should know in and outs of language like C++. Do you think this path is correct.

    Please let all of know very specifically how should we prepare ourself for a position at MS.


  7. Adam says:

    doing projects in your free time: Have you ever built a game? or a data bound web app? 3d graphics? Do something that expands your knowledge base. You should find a gap in your knowledge and work to fill it.

    Data Structures are intimately tied to specific algorithms. Yes, a broad knowledge of data structures will help you, but understanding why you’d use a breadth first or depth first search when comparing two binary trees with various characteristics is more important. When would you used recursion to solve a problem? With which specific data structures.

    UML and patterns: great stuff to learn, it may help you as you design, but I’ve never seen it used in practical applications as a team wide required tool.

    Re: C++: Should you know your tools? Absolutely. When I ask a person what their favorite language is, my favorite answer is ‘it depends on the problem’! Yes, know your tools, but if you only have one tool in the drawer, there is a larger problem. As the saying goes, "If you only have a hammer, everything looks like a nail." I don’t expect campus candidates to have tons of experience here, but if you’ve only written in one language (Java or C or C++), and you’ve never given perl a shot when you wanted some server scripting, but instead built a c++ app, or you had a need for a quick and dirty tool, and you never gave vb or c# a try, or you needed to automate some process of data manipulation in excel, and have never tried to write VBA code, then you are missing some tools in your drawer.

  8. Lawson says:

    Thanks for your comment,

    What i underrstand is that UML, Data Str, Patterns are not The Essential stuff to know. But what is needed is broad set of exposure to the different language.

    Please let me know if it is required to have mastery in one language. If yes then what should one emphasize on (Script, C++,VB etc).


  9. Adam says:

    You are looking for a sure fire formula, and there simply isn’t one that will guarantee you a job. I will give you general guidance that I think is appropriate.

    I think mastery of general CS concepts with either a broad knowledge base of problems and tools or phd type knowledge in one area is key.

    Tools are tools, and if you have had enough time using a specific tool, you should be an expert on it’s use. Certainly C++ is a good a choice because of it’s flexibility of application, but it is not the right tool in all cases.