Goodbye, Microsoft

Posted September 3, 2007

As of Friday, August 31st, my internship with Microsoft is over.

It’s certainly been an interesting twelve weeks. I’ve learned a lot about what happens at a real software company (at least, at one real software company), and a fair bit about various technologies I probably wouldn’t have been exposed to otherwise.

Unfortunately, I can’t really talk about what I’ve been working on. I can say that it’s under the auspices of Office Shared Services, which as I understand it encompases everything Office-related that’s not an acutal office app. I can also say that I actually worked on several different projects while I was there.

Some of these projects were behind-the-scenes stuff that you’ll never see. Others will eventually be visible; I’ll try to remember to point them out when they are.

So what does happen at a real software company (or at least at Microsoft)? Well, a lot of it was surprisingly similar to hacking at some project at home. When you come right down to it, no matter where you program or what sorts of tools you use, there’s always that fundamental aspect of programming that remains the same.

That said, I certainly did a lot less programming at Microsoft than I do at home. Maybe not in absolute terms. I’m not sure. But I felt like I was being far less productive there than I am when I just sit down and hack.

The reason for that is that when I’m at home and I want to program, I just program. There’s not much more to it. I’ll look at what emails I have flagged as bug reports or go through the TODO file until I find something that looks fun or that I’ve been putting off, and I’ll sit down and code away.

At Microsoft, it didn’t work the same way. There was always something I was waiting for. I had to get some information on an undocumented feature from someone. I was waiting on the spec from someone else.

Yep, specs. Microsoft is all about the “waterfall”http://en.wikipedia.org/wiki/Waterfall_model. I still don’t really have enough experience with software design and management to be able to judge whether that’s a good or bad thing. But it certainly gave me a lot of time to read Reddit.

I’m not being entirely fair. Not all of the time I spent waiting was due to Microsoft procedure. A lot of it was also spent waiting for builds and, most annoyingly, dealing with build errors.

After using Ruby for so long, having to deal with complex interdependencies and crazy header and linker errors was a somewhat harrowing experience. Trying to figure out the identity of that one obscure header that I needed to include took up a huge amount of time and nearly drove me insane.

Once I got stuff building, though, doing the actual programming was fun. I got to work on interesting projects. All the people there were very nice, even if the culture was deeply Microsoft-centric. All in all, I have to say I’m glad I interned there.

I don’t think I’ll be going back next summer, though.

Make your comments snazzy with Textile!