< 返回
微软团队

在很多团队,真正的界面设计都是由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):负责具体的文档编辑和撰写

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