记得自己在顾问的经历中,曾和许多开发团队交流过微软的MSF,许多人都曾经疑问过MSF组队模型中的Program Manager,因为从他们的公司,他们的团队无法找到这样的角色来对应,至于开发Team、测试团队、设计团队、文档团队、配置团队、用户教育团队、本地化团队还能想象,但唯独Program Manager找不到对应的。因为一个Program Manager需要项目管理的技巧,Program Manager也需要负责功能需求、Program Manager还要写功能规范说明书、Program Manager还要负责设计原型。Program Manager要有三大硬功夫:Technical Proficiency,Project Management 和Design Sensibility,而且还要有内功,拥有非凡的Communication能力和Leadership。 然后问题就来了,很快就人问,什么是Leadership? 这个问题够开一门二周的课了。 然后第二著名的问题来了,Project Manager 和 Program Manager 有什么不同? 开发组的Team Leader 和Program Manager 有什么不同? 真的这样类似的问题非常的多,找到对应关系也许是你此时认为在团队或公司实施MSF的一个重要前提。但我相信你需要一些场景和Context来看这个问题。 Project Manager --这是一个项目的最高决定人,在许多公司一个项目经理是一个项目的资源所有人。他需要完成这个项目,并进行项目管理活动。但需要项目经理(甚至大部分项目经理)不要求他会程序设计和精通技术,甚至进行编程。他的目标是完成项目,让用户验收,拿到验收单。可能他需要组织需求分析、设计、开发、测试、安装、部署、维护等等等,也可以产品以及开发出来他只需要完成客户验收的部分。总之,这是一个普通和广泛意义上的项目管理领域和范畴。 Program Manager --这是一个产品开发过程中的角色,而不全是项目范畴的概念,它可以只存在产生开发的生命周期中。微软的所有产品是设计、开发、测试然后发布、再设计、开发、测试然后下一个发布。你会发现似乎没有用户验收的问题。 这里有两个 联想,第一种人很快发现,微软MSF走的产品研发的路线,和我们公司或团队的项目运作方式并不同。所以我们需要重新考察Program Manager这个角色,但是我们如何发挥MSF中Program Manager这个角色呢? --舍弃不要?还是继续生搬硬套 第二种人,会联想到这样的问题,既然没有用户验收环节,那么微软的产品如何保证用户都接受,都会去购买,其实这也是一个验收的过程,暂且称为虚拟验收。一个项目的目的是为了让用户最后验收。那么微软在产品设计、开发、测试的环节如何保证它能够被"虚拟的验收"?靠好的设计、编码规范、风险评估、足够的测试?因为你总需要有足够的措施保障你的产品能成功,能被虚拟验收。 先看看,JOEL 说软件一书的55页怎么说的: Quote 长期担任微软总设计师的Charles Simonyi 提出主程序员(Master Programmers) 的概念。其主要思想是,虽然由一个主要的程序员负责所有的代码编写,但是他或者她要紧紧的依靠高级程序员而且将他们视为“代码仆从”。与考虑调试每个函数的作法不同,主程序员应主要关注每个函数的原型而创建出可见的轮廓,然后将它扔给一位高级的程序员去实现。(当然,Simonyi是主程序中的主程序员。)由于主程序员这个术语显得太老气横秋了一点,因为微软用Program Manager 一词来描述此类概念 。。。。一个名叫Jabe Blumenthal的聪明人从根本上重新确立了程序经理的地位,这样一来,Program Manager就掌管着产品设计与规格说明书。从那以后,微软的Program Manager就负责收集需求,弄清代码的意图在于做什么,以及编写规格说明书。在通常的情况下,每个Program Manager配备大约5名的程序员,这些程序员负责用代码去实现程序经理已经以规格说明书形式确定的功能。Program Manager还要去协调marketing,文档创建、测试、其他内部的杂务以及所有那些不应该让程序员花时间的琐碎事务。最后,微软的Program Manager需要让人觉得他心里装有整个“公司的宏图”,而程序员则可以无所顾忌地一门心思让自己的那块代码确实显得合理而高效。 JOEL 娓娓道来了Program Manager的来历,这不是全部,至少不是我看待的全部。但JOEL说出一个很重要的特性--Master Programmers Program Manager != Technical Proficiency + Project Management + Design Sensibility + Communication + Leadership。 这些都是一个Program Manager 要做的工作或素质。Program Manager 应该等于一个词 Program Manager = Ownership 一个Program Manager 代表着项目/产品中一个特性的Ownership, 一个工作的Ownership,一个风险的Ownership,任何需要Ownership的地方,这就是JOEL 下面说的 Quote Program...