2006年01月09日
上次提到微软的PM,今天看到这样的文章,收集一下,的确这是微软(美国)产品开发组的团队角色

UI设计人员是对产品的使用界面进行设计和订正的人员。 Usability Engineer是检验UI设计的合理性的人员
在很多团队,真正的界面设计都是由PM做完了Spec,才找UI设计人员来征求意见。像我们团队,我的设计规范书写完后,我才找UI设计人员来,他们所做的也就不过是对我的设计作小改动,如那些英语词句用得不妥,哪里的按钮该改变大小,等等。我所知道的其它视窗操作系统的团队,也是差不多。这主要是因为我们能自己进行界面设计 – 视窗操作系统部门的PM是微软PM中最厉害的。可是,这是不太正确的方法,因为如果你有很强的PM, 你可用这种方法,要是你的PM的设计能力不强,这样的流程就要出问题。你的项目的成功不应该寄托在几个强有力的PM上,而是要用完善的流程来保证。好的流程应该是,在产品开发的早期,在做设计时,PM就应该和UI设计人员一起来考虑产品设计的合理性。

这个问题在微软内部我们自己也有很大的争论。 UI设计人员就常常抱怨,在产品开发的早期,他们常常不被看重,被抛在一边。UI设计的领导人甚至在全公司的培训大会上讲,我们的这个文化有问题,领导对UI设计人员在产品开发早期能起的作用不够重视。可是这个争论已有几年了,结果仍无改变。我想这主要还是跟我们这个行业的产品开发的特性有关系。因为软件开发是很技术性的,常常在早期的技术讨论中,UI设计人员对技术讨论说不出个所以然来(因为他们大多是学艺术设计的),渐渐地各开发团队对UI设计人员的作用就看轻了。在使用界面因素占很大比例的产品团队,像Office 和MSN,这种情况要好一些。

Usability Engineer 所做的事和UI设计人员不同。他们是将UI设计的模型版,找客户来进行实用和使用性能的检验调查和测试,并根据调查结果对UI设计提出进行修改的意见。也就是说,他们的工作是检验UI设计的合理性,有点像测试人员对程序进行检验的功能 。 可以说, Usability Engineer 和UI设计人员的关系像测试人员与开发编程人员的关系。

User Education team 是编写使用说明书的编辑人员。

从大方面的来说,微软的产品组是公司的几大部门之一,其他还有市场/销售部门,服务部门,运作部门,还有研究院什么的。

在产品组里,是按产品分成一个个的商业部门(Business Unit),一个商业部门负责一个主要的产品。其中的项目团队主要是按以下的结构组成:(缩进表示汇报Report关系)

Product Unit Manager – 产品组总经理
—+ Group Program Manager
—+ Program Manager Lead
——+ Program Manager 1
——+ Program Manager 2
——+ Program Manager n
—+ Dev Manager
——+ Dev Lead
——+ Dev 1
——+ Dev 2
——+ Dev n
—+ Test Manager
——+ Test Lead
——+ Test 1
——+ Test 2
——+ Test n
—+ User Education Team Manager
——+ UE 1
——+ UE 2
—+ Architect (整体设计,规划,基本上只有特别大的产品组才有,画那种积木图。顺别提及,Bill Gates 是Chief Software Architect)

除此以外,还有全公司合用的:
+ Usability Engineer
+ Designer (美工)
+ Accessiblity Engineer
……

对于一个Feature,通常每个角色有一个,比如按上例中,可能是

[ Test 1 + Dev 2 + UE 1 + Usability Enigneer ] 组成一个Feature team.

Feature Team 之间没有隶属关系。

:p 对于参加过DEVP203课程的学员:
其实我们在课上讲过的模型,有很多变化的可能性.以上是最基本的微软配置,比如过的部门就很小,20个人就要出一个产品,并不是所有的角色都有.

允许我抛砖引玉,先谈一下微软的经验:

合理的开发团队组合应该是什么?

允许我抛砖引玉,先谈一下微软的经验:

项目经理团队:(Program Management Team)
• 设计项目经理 (Feature Design PM):负责具体的产品设计,写Design Spec。PM 队伍中,80%的PM是做这个。
• 发行项目经理 (Release PM):负责整个项目的流程和进度管理,制定进度表等,协调整个团队的工作。大的PM 队伍中有一人专门做这个。这是整个项目的领头人。大型的项目的成功与否,常常靠得力的发行经理的领导。
• 协助项目经理(Supporting PM):负责其它产品发行需要照顾到的事情,如客户交流、和市场开发人员交流、负责beta program (初版试行)、等等。大的PM 队伍中少不了这样的人。20%的PM是做这个。

开发团队:(Development Team)
• 开发团队领导(Development Manager): 负责管理各个开发小组,并对开发编程的工作做总体的规划。
• 开发组长(Development Lead): 负责管理开发工程师,也参加对开发编程的工作做总体的规划。
• 开发工程师(Develop Engineer, or Developer):负责具体的编程开发。
• 构架师(Architect): 大的产品团队有一两个资深工程师专门做整体系统的设计规划。

测试团队:(Quality Assurance or Test Team)
• 测试团队领导(QA Manager): 负责管理测试小组
• 测试组长 (Test Lead): 负责管理测试工程师, 制定测试计划等
• 测试工程师(Tester or Test Engineer):负责具体的测试工作
• 测试开发工程师(Developer in Test, or STED): 负责测试工具的开发

产品可用性团队:(Usability Team)
• 产品可用性工程师 (Usability Engineer): 做使用性能的调查和测试,采访客户或将客户邀请来做调查
• 界面设计师(UI Designer): 负责具体的界面设计
• 产品设计师 (Product Designer): 负责产品的总体设计, 特别是硬件产品。
以上这个团队并不是所有的产品队伍都有。比较小的队伍就没有这些专人,有的时候向别的队伍借用,或雇佣临时工。

客户教育或文档团队:(User Education, or UE Team)
• 文档组长 (UE Lead):负责管理文档小组
• 文档编辑 (UE Editor):负责具体的文档编辑和撰写

以上只是一个大约的组合模式。不同的团队有各自的侧重点和变化。在很大程度上这些也受到具体的产品的影响。我想我在微软的产品部门的其他同事们会再做补充。 希望这些信息能对国内的软件开发公司能有参考价值。我们希望通过这样的交流,我们能为中国软件开发事业的进一步发展尽我们的一点微薄之力。
http://www.chinaui.com/article/detail/20051103141320.html