Ok, perhaps the title is a bit misleading…this post isn’t really going to be about how to interview for Microsoft, I just feel the need to recap the past 3 months of interviews I’ve had with them.
First a little background on Microsoft and their Product Support Services division (which handles all support requests…everything from “my internet explorer isn’t working” to “we have 100,000 emails queued up in Exchange and that rack has smoke coming out of it” in which case MS would probably fly a small team of engineers onsite to help out (if you’re a premier customer at least)). Charlotte is fortunate enough to have one of the 3 PSS hubs in the country; another being in Dallas (Las Colinas actually), and of course the other one is in Seattle (Isaquah/Sammamish). It’s also worth mentioning (and is a well known fact at this point) that the only support groups left at these 3 campuses handle enterprise-level related requests…most consumer level stuff is routed outside of the country, then escalated back in-house if need be.
Within PSS, there are 2 main divisions: Platforms (which is Windows (meaning AD/DNS/DHCP/etc), Exchange, SMS, MOM, ISA…all segmented into highly specialized teams that handle very specific requests), and Developer Support (which is pretty much everything else including SQL Server/IIS/BizTalk and all languages/tools/etc…most of these teams also have subteams that handle different aspects of whatever tool they support; i.e. for .Net the teams are split up based on namespaces…with each team owning just a couple of namespaces, again highly specialized in their respective areas; SQL Server has 2 teams, one for admin related issues, and another that deals more with programmability). Within PSS/DS, it’s pretty well known that the SQL team is the most hardcore as it relates to servers, and from a programming perspective there’s a Base Services team who own Kernel32/User32/etc…most of the guys on that team worked in DevDiv on Windows at some point in their career and are extremely bright…the issues they get usually can only be tackled by someone with an intimate knowledge of the kernel codebase.
Of the 3 campuses, the Charlotte one is the smallest with ~2,000 employees (probably about 2/3 of those are technical, the rest being administrative or management); if you’d like to see a picture of the campus, click here. There are 3 (I think…it’s been a while since I worked there, someone correct me if I’m wrong) divisions that have offices at this location: PSS (both platforms and DS), MCS (consulting services), and Premiere (enterprise level support management for fortune 500 companies); the south building houses PSS, while the north building houses the latter two.
Because the Charlotte campus is the smallest, there’s been a bit of a push as of late to make it a little more specialized in the PSS realm, the ultimate goal is to make it an escalation only center (of course by escalation, I mean the issues that no one else can figure out…escalation engineers are highly highly highly specialized folks, and get to tackle all the really fun stuff, just ask Tristan (an Aussie engineer who specializes in ISA). Needless to say, they’re hiring like crazy lately which is a great thing.
My first interview was a few months ago…I got a call from a recruiter saying there was an open position on the SQL team here in Charlotte, did a quick HR screen with her, and then had the first semi-technical screen later on that afternoon. I did well, got some great feedback on things to brush up on, went out and bought a ton of books, locked myself in my apartment for 2 weeks and studied my ass off for the face to face. For those of you not familiar with the MS interview process, I recommend reading Chris Sell’s page devoted to it (granted the process is a little different between DevDiv and PSS); it’s a grueling ordeal not to be taken lightly. And grueling it was…the process for me consisted of 3 technical screens, and then an informal roundtable with the group manager. The first 2 tech screens went well (an hour each, panel style), mostly concerning core SQL Server functionality such as explaining isolation modes, how transactions work, admin type stuff like backup/restores, tons of whiteboarding (data models/T-SQL coding), dbcc commands, etc…all the stuff we as developers work with on a daily basis. The 3rd screen was with the technical lead of the group, and that’s where things unfortunately fell apart. As an escalation engineer, these guys spend a lot of their time actually digging through the SQL Server source code to make fixes (I’m sure we’re all familiar with QFE/hotfixes)…and of course a lot of the code deals with Windows on an extremely low level (I found out the majority of SQL Server is actually written in C); given my somewhat limited scope of Win32 programming I just wasn’t equipped with the knowledge to answer quite a few of the questions…the guy was extremely nice about the whole thing; I managed to fumble my way through most of the questions and did pretty good from the feedback I got afterwards…but they’re really looking for someone who’s just as good a Win32 programmer as in everything else SQL Server related. Given that the SQL2k5 launch was just around the corner, they were looking for someone to hit the ground running and didn’t have time to train someone on the Win32 aspect. The managerial roundtable was more a formality at that point, and he was equally as pleasant and very candid in his answers to the questions I had about the team (which of course I can’t discuss…but it was extremely interesting to say the least). My number one tip if you make it that far is ask tons of questions; you’re interviewing them just as much as they’re interviewing you. Don’t be afraid to ask things such as:
- Why would I want to work for this team?
- What’s the biggest problem your team faces on a daily basis?
- What’s the future of the team look like (i.e. chances for advancement/etc)?
- What’s the state of the workload on the team at this point?
- What are you customer satisfaction numbers?
These are the kind of questions managers love to eat up; it gives them a chance to shine and in essence, show off their team to the candidate. We wrapped it up by him asking me if I was married to the whole SQL Server group, or if I’d be interested in other groups at MS. Of course I said I would consider other opportunites. We left the conference room, and one other really cool thing he did was show me some of the cool toys (meaning hardware) that his group gets to play around with to resolve issues, met a couple of other team members briefly, and that was that.
I got a call from my recruiter a few days later telling me the inevitable, but that there was another team at Microsoft that was interested in screening me (the SQL manager gave me a referral…COOL!), in this case it was the team that owns the System.Data namespace (along with legacy stuff like DAO/RDO/ADO); internally they’re known as the WebData team and work on anything and everything related to data connectivity from applications. Given my broader experience in this area, it actually seemed like a better fit (though I have to admit working on the SQL team would have been a pretty amazing prospect given the scope of issues they work on). The format was basically the same, except this time there was only 2 face to faces, 1 tech and one management since there is a bit of overlap between the webdata team and the SQL team; in essence I got fast tracked. I won’t get into specifics other than to say this interview was much more code-centric with tons of whiteboarding (tough to do without intellisense…but here’s a hint, just use psuedo-code, they won’t mind as they realize doing it off the top of your head + the stress of the interview == errors). Overall I felt much more comfortable with this screen. Unfortunately I didn’t get this position either, but not because of anything skill related…the group ended up having a “resource reallocation issue”, meaning funding dried up somewhere along the way and the position simply ceased to exist. Bummer, but it happens sometimes.
So where am I in the whole MS process now? I was contacted about another position in Charlotte, this time on the IIS team (which is also a pretty hardcore group of folks); what’s interesting about IIS is that it’s just as much of a developer tool as it is a platforms tool (meaning that equal (high level) knowledge of stuff relating to networking/clustering/DNS/TCP-IP is needed as much as say, HTTP/COM+ (IIS runs as a COM+ app)/web programming)…those guys cover a lot of stuff, but the good news is that there are other teams devoted to those areas if they get stuck in a bind. They also own the big bad world of ISAPI/HttpHandlers/HttpModules, which are strongpoints of mine. Regardless, it’s back to the books for me yet again…I’m tackling the 1200+ page IIS6.0 Resource Kit behemoth this week. Three times a charm, right? Confidence is high.
I know it’s been done to death on the web, but sometime in the near future (if I get the position), I’ll hack together Jayson’s definitive guide to interviewing for Microsoft. Hell, even if I don’t get the position perhaps I’ll share more what it’s like to screen there.
Posted
Dec 19 2005, 05:45 PM
by
Jayson Knight