Program Management

I just discovered that there's a name for my role at StreamBase: Program Manager. Here's a couple descriptions of what program management is like at Microsoft, in case you aren't familiar with the title. Choice quote:

one way to describe PMs is that they not only "pick up and run with the ball, they go find the ball". That really defines the difference between "knowing what to do and doing it", and "not knowing what to do, but using your own wits to decide what to do, then doing it". That means as a PM you are constantly strategizing and rethinking what is going on to find out if there is something you are missing, or the team is missing. You’re also constantly deciding what is important to do, and whether action needs to be taken. The number of such decisions is staggering. I might make 50 a day, sometimes more than 100 or even 200.

I've never worked at a company big enough to have Program Manager as a formal title, so until now I didn't recognize that that's what I actually do.

I review commit messages as they happen and fix mistakes before they cause problems. I prioritize bugs and make sure people are actually working on the bugs assigned to them. I decide which last minute changes actually go into a release. I give advice on how to allocate developers to projects based on their (changing) skills and interests. I look at competing products and academic projects to see whether there are any cool features we can use. I try to shut down misguided product decisions from higher-ups before (and after) they end up on an official schedule. I make sure the nightly tests run. I push for giving developers offices, or even moving company headquarters. I argue against new feature designs that would be difficult for customers to use. I try to shield developers from unnecessary firedrills. I use the product to build stuff, to make sure we have all the features customers need, before the customers complain. I take engineers out to lunch every once in a while just to see how they're doing, and I let them know if there's something they could improve. I push for development process improvements like branch-based development and test-driven development. I'm always available for anybody to ask a question, and if I don't know the answer already, I find out and tell them later. I monitor projects to make sure they aren't falling behind, and I review the development plan to make sure the risky stuff isn't left till the end. I read resumes and do phone screens and interviews. I recruit at universities. I got blogs.streamsql.org to go live, and put up the first few posts.

Almost all of these tasks are either unofficial or voluntary. I could stop doing any one of them and it would either just not get done or it would move to someone else. I think of myself as the mortar in a brick wall -- I get other people to do those tasks that they're a good fit for, and then I fill in the cracks. It's a stressful job if there aren't enough bricks to cover the wall, but it's very satisfying in its way. I end up doing a lot of relatively unglamorous stuff that all somehow adds up to a useful contribution.

Until now it's been relatively complicated for me to explain to people what my actual job is at StreamBase, but now I know what to tell them. Unfortunately, I'm not sure enough people know what a "program manager" is for the title to be of much help, but at least it's shorter than several sentences of disjointed description that probably comes across as if I'm trying to cover up my actual title.

Posted on October 7, 2006 07:48 PM
More management articles

Comments
Post a comment









Remember info?




Prove you're human. Type "human":