Freigeben über


What Program Manager in Microsoft does and what I do as PM in Microsoft

Recently several external people have asked me what Program Manager in Microsoft do and what I do. And I have decided to put one post on my blog with answers to both questions. Let's start with discussing what Program Manager within Microsoft actually is and what it does and then briefly talk about me specifically. First of all, based on my experience of talking to PMs in Microsoft, if you ask 10 PMs what they are suppose to do, you are most likely getting 10 different answers. However there are common patterns which together form a picture of this position. I have started with searching web for any previous discussions. And there are several interesting posts already on the web that talk about PM in Microsoft in details.

Most referenced post is from Steven Sinofsky's Microsoft TechTalk named PM at Microsoft from 2005/12/16. It is long read with a primary focus on "Technical PM" role. Feel free to read it all, but to summary, here are key takeaways:

  • "The job title "program manager" is a bit of a misnomer, since program managers do not program nor do they manage." This is very true. We do not program. From my experience, I have developed only one piece of real code that is still checked in Visual Studio source tree. I did write many lines of code that went into demos, samples, etc, but those do not count. And PM does not manage people unless she or he is a manager of Program Managers, of course.
  • "PM is one equal part of a whole system." This ties back to "nor they manage" part. PM is just part of the team who has very specific job responsibilities and contribution to the overall success of the product.
  • "Program Management [was created] with the explicit goal of partnering with development and working through the entire product cycle as the advocate for end-users and customers" This is still very true and remains very crucial part of a PM job. PM always has to stay focused on the value of the work to the customer. From my experience, once you lost this focus, the final result is not going to make customers happy, which in turn does not make you or your team happy.
  • "PM … focus on the big picture of "what are we trying to do" and on the details of the user experience, the feature set, the way the product [gets] used." Or as one of my manager used to say, PM has to see forest behind trees. Understand why we do what we do, and what is next and why.
  • "Phases to program management: learn, convince, spec, refine". The key point is not said in clear here is that PMs constantly go through these phases non-stop. Every day and many time several times a day new problem shows up on your screen. You have to learn, understand, think of solutions and propose one in a written document or verbally.
  • "Learn --> [Inputs of learning are customer problems, products and technologies out there]. Output of learning is a prototype". This is the most fun part of a PM job. You get a chance to talk to people who actually use the product. You hear problems, you analyze problems, you think of solutions. Usually you talk to all sorts of people outside of your team and in your team. You fly to conferences, read articles, blogs, emails, bug reports, talk to people again, talk to devs, testers, leads and managers. You have to list all problems and all solutions you can find, and attempt to propose a solution based on pros/cons, time, cost, etc. And at the end of the day, there is a proposed solution and/or prototype that preliminary seems like a good thing to do.
  • " Convince --> [Input of convince is the proposed solution.] Output of convince phase is a plan and goals " This is a challenging part. Here where a PM has fun to hearing everything bad about the proposed solution and other better solutions not considered originally. You eventually ended up tweaking solution to find middle ground such that everyone is willing to support the plan and the goals going forward.
  • " Spec --> [Input of Spec is the plan with the list of areas for specing.] Output of spec phase are a series of written specifications " The specification is really general term in PM job. For features and product, it means official document following official template. Many times it is less official document that describes the solution. Overall this it is basically a document that answers on 4 questions - Why? What? When? And How?
  • "Refine --> [Input of Refining is the plan and specs]. Output is the product" This is a constant loop where you go back and force from original plan to deliverables and tweak plan or deliverables until product achieves level of quality that meets expectations of majority of customers. Actually based on my experience, this is where we spend most of our time. PMs are focused on two things: managing change and managing scope. With change, we must understand impact of this change on schedule, cost (resources) and scope of the final product. With scope, we have to check, double check and repeat the check again to ensure that the final results of the team's work are actually what were planned for and it is still what customers are waiting for.

Now Steven Sinofsky's post is not the only one that talks about PM in Microsoft. There are several others, I am listing them below.

  • Nice picture of what PM does at Mike Deem's blog, https://radio.weblogs.com/0105395/stories/2002/03/27/whatIsAMicrosoftProgramManager.html Not sure why PM face is not a happy face. We actually have no choice but being very happy when dev, test and customers are happy about the current release and plans for the next release.
  • Interesting summary of an interview with Cynthia Solomon, former PM for Excel, https://www.stcwvc.org/galley/0209/b01prog_management.htm. Similarly to Steven's post, she stresses out writing functional specs, usability and managing implementation without managing developers and testers who actually develop the feature. This is true to say that "the lead without authority" is a synonym for the PM in a team. Very hard position to be in actually.
  • Series of PM Tips on ASP.NET Team blog, https://weblogs.asp.net/aspnet-team/archive/tags/Program+Manager/default.aspx.
  • Post on Program Managers @ Microsoft on Microsoft JobsBlog. Nice overview of what HR looking in candidates for PM position. What I have found amazing is that the author of the blog says that "Project Management is just one small skill that [she looks] for when talking with potential PM candidates" and that "We are usually not looking for straight up project managers". And this is after she lists 5 core skills of a project manager – gathering and analyzing information, decision making, building relationship with customers, communication skills, work across groups. Perhaps what she thinks of "Project Management" being a schedule management. I believe, this is what she is trying to clarify with the sentence where she mentions Microsoft Project. I hope they do hire great project managers, because being a PM in Microsoft is just about being project manager on many projects with one area of the product.

Speaking of my job specifically, description of a PM job in Steven's post is very close to what I do. Both in Visual C++ and here in Windows Core Networking, I am a technical PM working with a group of developers and testers on a part of the bigger product. It used to be Visual Studio now Windows. My time is spent between the 4 phases outlined by Steven. Sometimes I am more focused on a particular phase such as learning or planning. I talk to customers and partners on regular bases. Learn about their problems and work with my team on finding solutions. In VC Libraries, I used to own all functional specifications and design documents for features in the product. In my new team, I own the functional spec and only reviewer of design document and other documents. This is expected considering that I am relatively new person to the team and climbing learning curve on details surrounding technology in this product. I do manage the schedule, any changes to the schedule and scope, and track progress on schedule and scope completion. Hopefully sometime soon my team can start talking about features we are building to external customers. At that time I will shift focus to building presentation and demos for conference and meetings with external customers. Until then, we are in "refine" stage of the product cycle and this is what I do on daily basis.

At this point I feel I have answered both questions. Hopefully the answers are complete. Let me know otherwise. As I find anything else to add, I will just add it to here.

Comments

  • Anonymous
    December 20, 2007
    PingBack from http://msdnrss.thecoderblogs.com/2007/12/20/what-program-manager-in-microsoft-does-and-what-i-do-as-pm-in-microsoft/

  • Anonymous
    December 20, 2007
    Could you compare this work setting with Google where there are no program manager roles and the roles of developer, tester and program manager are taken up by the same team and the evaluation is perer-based? Isn't it nice for someone to be able to rotate at will between the different roles, program manager and developer?

  • Anonymous
    December 20, 2007
    I felt this was an interesting blog posting as this helps clear up some Microsoft terminology. My understanding

  • Anonymous
    December 21, 2007
    To Anon, It is interesting of you to mention that Google does not have Program Manager. You may know more than I do about how Google works inside because I have never worked in Google. Browsing Google Jobs site right this moment, I see several Program and Project Manager openings within Engineering in Mountain View campus. They seem to have same description of the role and key responsibilities that I see for PM position in Microsoft. For example, I have just randomly picked one Engineering Project Management position on Google Jobs site. Let’s just check job description.

  • "As a Project Manager you will be responsible for managing, monitoring and coordinating regular software releases" [from Nikola] This is what I would expect a PM in Microsoft do in an engineering team.
  • "You will provide a single point of contact for releases and keep the cross-functional launch team on task and target." [from Nikola] Same in Microsoft. This is scope management, schedule management and change control. All three task of a PM within Microsoft.
  • "You will also be responsible for special projects within the engineering area, driving projects to completion and helping to document decisions and progress." [from Nikola] The key part is “within the engineering area”. In pure sense, a Project Manager may handle projects in different areas. Here it is assumed that PM is assigned to a specific engineering area and drives many projects within this area. This is basically description of what Program Manager assigned to a specific engineering area does. Finally, Key Responsibilities from Google opening are almost exact match of Key Responsibilities from PM opening in Microsoft. It looks to me that there are PMs in Google, perhaps not all teams. But there are teams in Microsoft that do not have PMs too. If project is small, usually team of 4-5 individuals can manage themselves relatively well and split responsibilities of a PM among themselves. However if you look closer on how this team operates, you can always identify one individual that controls scope of what this team works on and argues for “doing the right thing”. This individual is playing a PM role in that group even if she does not have a title of a PM. When project grows to ~10 people, usually amount of work for handling scope and changes and communication is too much for an individual engineer. And in this case team would have to find a dedicated person who focuses whole 100% of her time on managing the project. To summary, as far I see it, Google just uses the name of the title (Project Manager) to stresses the project management responsibilities of this position. It seems to me that successful completion of project is priority 1 responsibility of the PM in Google. I wish I knew a PM from Google who may confirm or reject that. However successful completion of projects and products is key responsibility of a Program Manager in Microsoft too. In addition to project management, Program Manager is also expected to drive strategic vision for this area and actively participate in forming design of the product. I am not sure if Project Managers in Google are asked the same. But aside of this fact, I personally see a very close match between these two corporations in describing role of a PM in engineering.