I interviewed onsite at Microsoft this week. Here’s an assortment of thoughts and lessons learned, in roughly chronological order.
I flew in early on Monday and left late on Wednesday so I could spend some time exploring Seattle. This was a good move.
Day One: Arrival and Exploring Seattle
Microsoft provided a rental car that I picked up at Sea-Tac airport. At the rental desk I met and rapidly befriended another MS candidate who was interviewing for a SDET position. We both got Nissan Versas—a fun, small car with good kick and very tight brakes.
I drove straight to the hotel. First lesson, to be observed again and again over the next couple days: Seattle’s road signage is out to get you. It is actually malicious. I am imagining some angry, bitter and crazed road sign designer cackling in a basement, carefully crafting terrible navigational design. I know I’m not the only who thinks this.
Microsoft put me up at the Hilton in Bellevue. It’s a gorgeous place, and unlike some pricey hotels I’ve stayed at, the staff were actually friendly and helpful. The guy at the desk loaded me up with exploration recommendations, maps, and coupons. In the hotel, I met another Microsoft candidate who was hoping to join the Bing team.
We three candidates drove downtown to grab lunch at Etta in Pike Place market. Tasty, warm and cozy food with a wonderful server. The other two returned to the hotel, and I went to catch a boat tour of the harbor. Unfortunately the Argosy boat tours only run once a day in the winter, and I had missed the day’s trip. I wandered around downtown, saw a nice sunset, and went back to the hotel.
I was determined to have some pacific coast seafood, so I met up with one my new friends and we went to Sea Star in Bellevue. Bellevue doesn’t seem to have any nightlife, but it’s got good restaurants. The hotel gave us as coupon for a free appetizer. Lesson: Tell the hotel your plans, they might have good suggestions or freebies.
One thing I should mention: Microsoft provided a food budget of around $75 a day (15/20/40). I thought it was extravagant at first, but once I started eating around the area I realized that the restaurant costs in the area made it just reasonable. Stuff is just expensive out there…
Day Two: Microsoft
I had an overpriced breakfast at the hotel and then headed out to the Microsoft campus in Redmond for the day.
Lesson one: The traffic is awful on the way from Bellevue to Redmond. Google Maps and Bing both measured the trip at 8 minutes. It took me over 30. If I end up at Microsoft, I’m going to have to be very careful about where I live because I do not want to deal with that every day.
Lesson two: I needed to find my way to Building 111, where the Microsoft recruiters live. It turns out that Building 111 was bought from Honeywell, and it’s near a bunch of other Honeywell buildings, which confused this poor guy who was looking for signs that said “Microsoft.”
The lobby of Building 111 is tricked out. You’d think you’d just walked into a 23rd century spaceship. Multicolored modern furniture; a few new HP TouchSmart computers; young, jovial, smiling receptionists and a concierge; a Starbucks coffee machine.
I met my recruiter, who told me I’d be interviewing in the Windows division. It also turned out that GMail had spam-filtered an email she had sent me. (Eeeek!)
The Microsoft campus is enormous. I can’t communicate the scale of it. It’s a city. You can’t just walk from building to building—they have a fleet of Toyota Priuses to chauffeur people from place to place. (The brakes worked fine, thankyouverymuch.) My recruiter ordered a ride to send me to my interview-building for the day.
The first interview was straight-out technical. “Split a linked list into elements above and below the average of the list.” I did a simple two-pass solution, and we spent most of the time talking about coding practices and API design. I used an assert to crash if the linked-list was NULL, and my interviewer explained why it would be better not to fail in this case.
My second interview was a lunch interview. We walked over to a building that had a cafe—Good food, but nothing to compete with Facebook’s. After lunch, we came back to sketch an algorithm: Print the numbers 1..n^2 in a spiral, with 1 in the center and going outward.
My third interview was a “soft skills” interview. We talked about passions, tools, programming languages, some past experiences and that sort of thing.
My fourth interview was mostly technical. After a few “soft” questions we talked about an efficient algorithm to find the common ancestor of two nodes in a binary search tree.
My fifth interview felt like I was meeting the End Boss. It was with the manager of the team—a guy who had more than twenty years of experience at Microsoft. The problem was to print the permutations of a C string. I’ve been doing all sorts of functional programming lately, so I sketched an immutable-string recursive version in Haskell, with the intention of translating to C afterward. This was a brutally bad idea, because 1) String manipulation is a pain in C and 2) Of course the way to do it in C takes advantage of mutability. So I started off in a completely-wrong mindset.
One lesson across the interviews: Say what you want about language-independent interview questions, these guys wanted C.
I returned to Building 111, chatted a bit with the recruiter to debrief the day, and went back to the hotel.
I was happy that they didn’t waste any time telling me “pitching” Microsoft. At least one other large company treated me like I lived in a cave and felt it necessary to go over the breadth and depth of their businesses. Microsoft clearly respected my intelligence enough to know that I know about them. Also, thankfully there was no hint at any point of their brutally-condescending “Hey Genius” recruiting marketing materials. That was a relief.
For dinner I went to Flo in Bellevue for (phenomenal) sushi. I met a friend-of-a-friend there… a guy my age who has been at Microsoft for a couple years. It’s very refreshing to get an unbiased, straight-dope opinion from an insider about the good and bad. I can’t speak highly enough about chatting with someone like this in a casual setting. It made me feel much more informed and comfortable. Interviewers and recruiters seem to think it’s helpful not to talk about negatives, but since I know there must be negatives, instead it just leaves me feeling like I’m in for some nasty surprises. So hearing about some negatives counterintuitively lets me feel better about a place.
Day Three: Explorations Part Two
Another day of exploration, this time with planning:
- Washington Park Arboretum, Japanese Tea Garden. The gardens were closed for the winter, unfortunately.
- Seattle Public Library. Colossal, gorgeous library, well worth a short visit.
- My first Mocha Diablo: Coffee with cayenne—a warming, delicious idea.
- Argosy cruise. Some fun facts:
- Seattle gets less rain volume than most other coastal cities, but it’s spread out over nine months of overcast, drizzly days.
- Seattle has one boat per ten residents.
- “Seattle” is the name of the Native chief who helped the settlers figure out where to build the port city.
- The giant orange cranes in the harbor can load or unload one 150-ton shipping container every sixty to ninety seconds.
- Wandering around the ritzy Queen Anne neighbourhood and stellar views from Kerry park. Had a Mocha Sevilla: Coffee with chocolate and orange rinds.
Lesson: Toronto’s coffee is easily as good as Seattle’s.
I went back to the airport in the evening, hopped to Vancouver and then took the red-eye back to Toronto. Lesson learned: No more red-eyes. I couldn’t sleep a wink, and made up for it with a 14-hour sleep last night.
All in all it was a good trip. I was impressed at every turn with Microsoft’s environment, professionalism and friendliness. I have to give it to them, they’re good at this stuff.