Archive for the 'Meta' Category

Braindump after interviews at Microsoft

February 12, 2010

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.


Thesis Way Forward

May 29, 2009

I’m back from ICSE, mostly recovered from jet lag and overcoming my caffeine withdrawal symptoms. It’s time to plot my Master’s thesis:

  1. Research
    1. Emulate Marc Eisenstadt’s “Tales of Debugging from The Front Lines” to try to draw in some DSL debugging stories.
    2. Get out to Toronto tech companies using DSLs (leaning heavily on Greg’s network) to interview and observe as an exploratory study so I can plot my case study.
    3. Informed by the above explorations, perform a case study of DSL debugging in practice.
  2. Learning
    1. Learn how to perform a great case study.
    2. Read more background papers in the area. I’ve got about twenty in the queue.
  3. Writing
    1. Write the background/introductory sections as I read background papers.
    2. Write the rest of the thesis as I get work done.

Planning a Thesis

March 30, 2009

The second semester is winding down. In a few weeks, I’m meant to hit full speed on thesis work. 

What’s going on right now?

  • An illness halved my productivity today. Hope to be better tomorrow.
  • I suspected my thesis idea had already been done. I just confirmed that news.
  • In compilers, I have to finish off a final assignment, do a chapter of reading, and prepare for the final examination.
  • In the project course, I have to get my share of the project to a proud state.
  • My teaching assistantship boss has effectively saved most of my hours until now. Now he’s spending them.
  • I’m a minor contributor to an ITICSE paper. Reviewer comments are back and I need to help revise. Mostly that means digging up and reviewing more literature.
  • I’m traveling for family reasons this weekend. The week following I’m volunteering for Mesh and then I’m away again for Easter.
  • It’s tax season and it looks like I’m going to have to work hard to get the forms I need.

What’s next?

  • I want to read Jorge’s thesis as well as a few of the top ACM theses.  
  • I want to get caught up on the last few years of the top SE and ESE papers.
  • I want to get through more of the ESP proceedings and ideally catch up on PPIG too.

I hope by completing the above I’ll get a sense of what’s going on in the field and how I can join in.

Of course, all of that excludes my non-academic interests, like finishing off jQuery in Action, Beautiful Code, SICP, Real World Haskell, or building things, or going to the gym, or seeing human beings…

Holiday Reading 2008

January 5, 2009

The Definitive Guide to Django, Adrian Holovaty and Jacob Kaplan-Moss

Available free online!

I wanted to learn Django, a Python web development framework. This book was the direct introduction I needed.

The online documentation for Django is a necessary supplement. Thanks to Agile Web Development With Rails, I have high expectations of a book introducing a web framework, and The Definitive Guide had holes. The book doesn’t say anything about testing Django sites, for example.

Outliers, Malcolm Gladwell

Malcolm Gladwell has knack for telling me things I already know and making me enjoy it. Outliers covers the role of practice and circumstance in the creation of extraordinary achievers. The 10,000-hour rule and other topics are old news to a former cognitive science student like me but the stories made an enjoyable read. My political side is intrigued by Gladwell’s emphasis of the real-world consequences of cultural values. It’s a tightrope topic to talk about because culture correlates with race but he does a great job of staying politically correct while making his point.

JavaScript: The Good Parts, Douglas Crockford

A concise introduction to JavaScript.

Crockford develops a library of useful JavaScript tools and presents arguments against the use of many language features.

The best summary I can come up with is “Use JSLint.”

Pro JavaScript Techniques, John Resig

Resig is a young (low twenties) JavaScript expert who has earned gobs of credibility thanks to jQuery. I can’t touch his JavaScript hackery but his book doesn’t live up to its title. The topics choices feel haphazard. There is some coverage of JavaScript events, a bit about CSS, some extended examples, and an appendix with a JavaScript reference. 

He builds up a library that is similar to jQuery. Frustratingly it isn’t, so I still needed to go learn jQuery separately. Some of the extended examples contained errors. To top it off, the book is badly edited: 

“The result is rather interesting and, albeit, quite complex.”


The book is saved by its excellent selection of external links. Resig is plugged in to the JavaScript world, so there were great reading recommendations throughout the book.


To learn Python, JavaScript, Django and jQuery by doing, I built Profrank, an idea I had early last semester. Next step: Demos and iterations. 

Not Quite Done Yet…

Stop Reading This Blog

December 4, 2008

You’re still here. Well, stick around, I’ll keep it interesting.

I know some people read this blog. You might have a blog of your own. You might have been hurt when you found out that, unless you’re my thesis supervisor, I don’t read your blog or any other blog for that matter: I quit Google Reader many months ago and I get the Third Bit via email.

Courtesy of Hacker News, I just found a great write-up of my reasons for this: “Real Advice Hurts.” Go read it.

It’s great when someone smarter than you says something you’ve been wanting to say.

This really doesn’t make sense unless you read the link.

I’ve been groggily waking up to my ambitions’ need for more do less learn. It’s why I sought out a mentor who gets things done. It’s part of why I joined a ferociously pragmatic organization founded by a ferociously pragmatic old friend. Real Advice Hurts hit hard. I love to learn—really, truly, deeply love—and it’s a trap and it’s killing me.

But! Blogging about this won’t help me. Your blog reader won’t help you. So! Go away. If you come back, guard your time. Stop reading this blog.

Midterm TA Evaluation Results

October 23, 2008

I TA CSC 290. Today I asked the students to evaluate me using a form I created.

I asked seven questions with Likert scales and also solicited free-form comments.

CSC 290 Midterm TA Evaluation Form

CSC 290 Midterm TA Evaluation Form

I received 21 responses. The class has 24 students.

Full results below.


TA Evaluation Results Chart & Graph

TA Evaluation Results Table and Graphs

A dedication

September 15, 2008

This blog is hereby dedicated to Greg Wilson.