What it's like to be a Program Manager at Microsoft...

I got a big kick out of this thread on Joel Spolsky's forum, such as the part about how PMs manipulate developers. I have to admit, I've played the “Oh what a smart idea you just had, Mr./Ms. Developer!” card more than once, but that's usually because I was being honest, and I think it's a good idea to let others know when I think they have good ideas (the golden rule and all that). I make no claims of being a good (or mediocre) software developer, so I leave that to the folks who are best at it.

Also see: PMs as Therapists (or “Moles in the development team“ according to one of the comments), or PMs as the honeybucket.

I think the real truth, for me at least, is a mixture of all of the above. Part releasy, part businessy, party techy, part therapisty, part honeybuckety... When I've been in a “component PM role” (some examples of components in Exchange are transport, store, OWA, etc), I spent most of my time un-blocking developers and testers. At the end of the day, the developers and testers are the most important people at Microsoft, and I need to move %$!& out of their way so they can do their job. That might mean writing/updating the spec, routing bugs through other people/teams/processes, investigating cross-component issues with the appropriate people and “driving them to resolution“[1], realizing there's a problem and doing what's necessary to get it fixed, resolving tugs-of-war and other disputes between different people/teams, comparing the current workload to the schedule and figuring out when we need to talk about cutting, etc. On the side I also tried to help the field, PSS and customers when they ran into problems with my areas of ownership. I enjoyed the last part so much that I later moved into a more processy/customery PM where I work on “programs“ and other such vague things, and the only feature work I do is the kind that requires coordination across multiple teams (and if you want to talk about herding cats, boy...).

I still stay fairly technical because I spend some of my time either answering customers' technical questions or researching the answers for them. This blog has increased my incoming-question-rate significantly, so if you don't get a response or get a delayed one, it's usually because I've had to prioritize stuff at work (you know, the part I get paid for - I'm no Scoble : -) above questions via my blog. And these days, I find myself being the one asking more questions than answering them - which has given me a whole new appreciation for the skills of people like Nino - I have yet to ask him a question which he can't answer off the top of his head.

One thing I do like in this role is that I've had a lot of opportunity to gain broad technical knowledge versus before when my areas of expertise were more focused. One of the requirements for moving up as a PM at Microsoft is to increase your scope of understanding and influence - from a feature to multiple features to a component to multiple components to components that integrate with other products to the whole product to the integration of the whole product with other products, etc. I've also had more opportunities to work directly with customers and MVPs and partners, and that's been a ton of fun.

But I do miss the nitty gritty techy stuff. Some day I might go back, who knows - that's the great part about working at such a large company, when you leave your job, you don't have to leave the company. And it's (usually) not bad when that happens, that's just the way it works - old timers will eventually leave the group and new folks will come in. The cross-pollination is great and really helps a lot of products be better as people bring their varieties of experiences into their new job, another form of diversity. My 2.5 years in the Outlook team helps me on a regular basis with the issues I deal with in Exchange (admittedly those products are closer together than most : -).

[1] Sounds corny, I know... but necessary. When I worked on OWA 2000/2003, I spent a lot of time working on interoperability issues between IIS and Exchange. Sometimes I had nothing to do with coming up with the technical solution, but I at least “kept the train on the track.”[2]

[2] Sounds corny, I know...