[via Roland Tanglao] Michael Vernal writes about one of the key job functions at Microsoft – that of a program manager. “PMs are facilitators of communication. The more gregarious, inclusive, and communicative a PM, the better.”
A Technical PM is kind of a non-code-writing developer. They’re very comfortable with architecture issues, they can write code, and they know what developers want, but they don’t actually write the code that ships in the product. Generally, PMs in the Developer Division (my division) are Technical PMs.
A Product PM is someone who knows what the end-user / customer wants, and can write specifications to that effect, but they’re not thinking in code. The canonical examples are of Office and Windows Shell PMs — they design UI, look-and-feel, etc., but they wouldn’t be the right people (necessarily) to design the underlying architecture to make that UI performant.
A Release PM is common to all teams at Microsoft. Release PMs help to define and drive the schedule, and make sure that things that get written actually get shipped. You’d be surprised how difficult the task of shepharding 200 people is.
Lastly, there is the Business PM, which is more often called a Product Manager at Microsoft. They’re the people who know market conditions, know what big customers want, and end up bringing clarity to the actual requirements for a piece of software.
It is something we should look at adopting as we want to become a software products company focused on emerging markets.