我在微软做PM ...

做一个PM并不容易。 (这年头,谁容易呀...)自从我的title正式改为PM以来,我曾无数次被问过这样的问题。

- 你在微软做什么呢?

- PM

- 哇,这么年轻就当上Project Manager啦!

- 不,我是Program Manager。

- 哦,可是Program Manager是什么呢?

这的确是个好问题。微软并没有Project Manager这个职位,因此所谓PM指的都是Program Manager。顺便说一下,我叫陆榕,是开发工具组的一个PM,正在参与下一版本Visual Studio Team Architect版本的开发。

我想, 解释微软的PM的工作职责一定是PM工作的一部分,不然为什么你们会看到这篇文章呢…想要三言两语说清这件事似乎并不容易。曾经听过一个比喻, 如果把一个项目比作一个大蛋糕, 开发人员会切走一大块, 测试人员会切走一大块, 用户体验专家会切走一大块, 用户教育人员也会切走一大块, 而剩下的所有东西 – 无论是剩下的大块蛋糕, 还是落下的小块奶油、半个草莓、开发人员和测试人员拿走的蛋糕之间所留下的那一小条蛋糕等等,统统都归PM。这个比喻不完全准确,但至少说明了为什么我说三言两语说不清这件事情。

好了,言归正传。就我的理解,总结起来PM的职责包括但不局限于以下事务: 

a) 了解并理解客户需求

b) 设计产品功能

c) 与项目组中其他人员沟通,使他们理解并认同你的设计

d) 为项目制定进度表,管理项目进度

e) 扫清一切影响进度的障碍,使产品按时按质交付

f) 向项目组以外的人介绍和演示产品(老板、其他组、合作伙伴、客户…)

我承认,这些描述也许仍然无济于事。那么让我们来看看具体的例子吧…软件开发是一项合理的人类社会活动(当然!),因此环顾四周便很容易找到可与软件开发类比的其他社会活动。如果您是个DIY爱好者,那么您一定有过许多类似这样的经历:自己筹办婚礼,自己设计装修房子,自己制定旅行计划…这些事情都可以看作是项目,而您也许多次扮演了项目中PM的角色。

假设,您正打算帮您的父母好好重整一下他们现在的住所,因为那间房子是十年前装修的,已经不够舒适了。现在您是PM,您的父母是用户,您还分别找到了一个很有经验的装修团队和一个很专业的监理团队。

** 您早已注意到这个老房子的书房里一盏灯的线路有问题,这必须在装修时弄好。

—— 这叫PM在现有版本中发现需要修复的问题。

** 与老妈聊天时,她提到最近每天晚上10点开始播的韩剧很好看,就是晚上在客厅里看电视觉得挺冷的。您说,那我给您在客厅按个空调吧。

—— 这叫了解客户的需求。

** 老妈说,哟,这得多费电哪。于是您说,那就在卧室里给您再按个电视吧。我给您卧室里设计个电视柜。

—— 这叫理解用户真正需要,并设计产品功能来满足需求。

** 于是您开始设计电视柜了。您先考虑了一下该买个多大的电视,然后又考虑电视柜得打在什么位置,长宽高是多少,在什么位置有几个抽屉,抽屉把手用什么样的,需要承重多少等等等等。等一切都想清楚了,您把所有这些都写进了装修合同里。

—— 这叫设计产品功能,并编写功能说明 (Functional Specification)。

** 带着合同,您就与装修团队和监理团队见面了。您先向他们阐述了您的想法,并请他们仔细阅读合同,看看是否合理。他们对此设计没有提出异议,因此彼此立刻签署了合同。

—— 这叫使项目其他成员理解并认同您的设计。

** 于是您请他们分别估计工作量,装修团队说需要2个月,监理团队估计在那之后他们还需要1个月。因此您将进度表(Schedule)定为3个月长,并在其中设置了多个里程碑(Milestone)。

—— 这叫为项目制定进度表。

** 第二天,装修团队打来电话说您想要的那种墙面漆涂料最近缺货,没有涂料便没法刷墙,也将影响其它任务的工期。迫在眉睫,您忽然想起了有位朋友刚买了这种涂料,便询问他是在哪里买的。得知某郊区卖场还有剩余,将此信息告诉装修团队,于是刷墙得以如期进行。

—— 这叫扫清项目障碍。

** 两周后是第一个里程碑,您来到房子一看,墙面已粉刷一新。但被告知最近天气多雨,墙面漆要多花几天才能干透。于是您及时调整进度安排,将修理电线线路等任务提前。

—— 这叫管理项目进度。

** 两个月后,监理团队告诉您,他们看了做好的电视柜,发现长度略长于合同规定尺寸,其中两只抽屉无法打开。您找到装修团队,与监理团队一起商量。鉴于修复长度问题成本较高,而且对用户使用影响不大,决定不修复。但抽屉的使用为基本功能,需修复。

—— 这叫鉴别bug。

** 三个月后,项目顺利完工。您带着父母一一参观房子装修后的每个角落,向他们介绍如何使用等。

—— 这叫向用户演示产品。

当您看到用户 - 老妈舒舒服服地躺在被窝里看着韩剧时,看到老爸的书房里灯再次明亮如初,您的心里是不是感到满足呢?

在微软,我们的用户将不仅仅是两个人。除了英语版本,我们还发布多种语言的本地化版本。我们的用户可能相貌不同、说的语言不同、还可能身处世界的不同角落,但我们的产品和我们的设计都将同样影响着他们,提高他们的工作效率、丰富他们的生活。

当然,我们所要设计的产品远远比一个电视柜要复杂。在微软,我们的软件设计不仅要切实满足用户的需求,还要让用户感觉好用。如果您对设计实用又好用的软件充满热情,那么微软的PM职位将非常适合您。

当然,我们的项目管理也远远比管理装修工程复杂。在微软,PM需要和许多人沟通,可以说沟通是PM工作中相当重要的组成部分。大型项目中最需要的不是更多的人,而是人与人之间的交流。PM要承担起团队润滑剂的职责,确保项目这部大机器能顺畅运转。我认为,沟通并不仅仅指通常意义上的“能说会道”,也不局限于中文/英语的流畅程度。好的沟通是需要技巧的。首先,要仔细聆听对方的观点。听完后最好再进一步领悟对方隐含的意思或是站在对方的立场思考他/她的出发点。在这个基础上,再表达自己的观点就会有的放矢,就比较容易达到沟通的效果。一味的表达自己,有时效果并不理想。如果您喜欢与人沟通,或是您充满了沟通的天赋,那么微软的PM职位将会适合您。

微软有许多不同的职位,职位没有高低好坏之分,只是工作内容不同罢了。唯一的标准是,您喜欢什么样的工作?

一年前,我是开发测试人员。那个时候,我最感兴趣的是尽可能多地找出产品的bug(当然是在产品发布前…),天生就是个喜欢拆东西的小孩…

随着对微软开发模型的了解,我慢慢地发现了令我更感兴趣的事情,那就是寻找客户需求,并且设计自己的产品功能!我对这件事情越来越感到着迷,并告诉了老板我的想法。后来,我得知我们的团队将要招聘一名PM,抵制不住诱惑,便从一名Tester转成了PM… 一年来,我感到很快乐。尽管现在我仍然对测试怀有兴趣,偶尔也报一些bug,但我从来没有后悔当时的决定,因为我找到了我想要的工作。

您找到了吗?

附送照片一张。这是我最喜爱的一面白板,因为这里记载着我们在上一个开发项目中留下的每一个脚印。

    clip_image002[10]

Technorati Tags: Microsoft,Program Manager

陆榕

Comments

  • Anonymous
    January 18, 2009
    在微软做测试开发已经快要两年了,经常会被人问工作压力大不大,测试会不会比较枯燥。而我的回答总是,很有意思,甚至还有点在学校里读书时的感觉。为什么这么说呢?因为在这里做测试开发,不仅仅是完成工作任务,还是一个充满学习和提高机会的过程。

  • Anonymous
    March 28, 2009
    【4月30日CSDN付江报道】微软自去年9月首次发布Silverlight后,又立刻在半年后的MIX08大会上推出了Silverlight2Beta1,新版的网页开发工具Expression...

  • Anonymous
    March 19, 2010
    不知道从哪里才能找到你们的技术联系方式,只好在这里发个文,我想问的是,你们的.NET内存布局,有没有详细的技术资料?会不会开放?以前我只能通过SOS进行探索,但不能很好的建立一个全局概念。如果可以的话,请给我发邮件:li_yanqing008@yahoo.com.cn

  • Anonymous
    April 17, 2013
    这个形容PM的小故事,真有意思。