分类:
2010-05-17 17:05:05
在我工作过的团队中,有2个人的微型团队(程序员+美工),也有30人以上的团队。对于微型团队,完全依靠个人努力,两个人配合默契,分工明确就
OK了。
但对于30-100人这样规模的团队,又怎么样呢?通常的结构会是这样:
需求小组1: 小组长,需求人员1,需求人员2,需求人员3,需求人员4.....。
开发小组1:
小组长,开发人员1,开发人员2,开发人员3,开发人员4.....。
开发小组2:
小组长,开发人员1,开发人员2,开发人员3,开发人员4.....。
开发小组3:
小组长,开发人员1,开发人员2,开发人员3,开发人员4.....。
...........
开发小组n:
小组长,开发人员1,开发人员2,开发人员3,开发人员4.....。
测试小组: 测试组长:
测试人员1,测试人员2,测试人员n....。
小组n:......
起码我经历过的团队大约就是这个样子的。但是这个配置真的是最合理的
么(或者,还有没有更适合的方案呢)?
除了编程以外,我还是一个网游爱好者,曾经玩了两年的wow,wow是一个讲究团队的游戏,一个团固定40人。共由8个职业的玩家组成(战,法, 牧,德..等等)。这样一个团队通常是怎么组建的呢?
首先根据要战斗的场景来决定各个职业的比例,是raid,还是战场?是需要DPS高输出,还是多组牧师死磨硬耗?
这就相当于我们组建团队的
时候考虑的,需求人员有多少?设计人员有多少?开发人员有多少?测试人员有多少?质量人员有多少?
在确定了各个职业的比例以后,就会开始进行分组,首先,所有的同职业,会建立一个频道。比如战士会有战士频道,法师会有法师频道。以便他们能够独立 沟通,并且各职业都会有一个队长,队长将负责对本职业的人员进行要求和培训,同时也会处理一些内部冲突,比如战利品分配以及倒休,替补等事情。
然后就是进行分组,每组通常会由一个能抗的(战),2,3个能打的(法师,术士,猎人,盗贼),然后1到2个治疗的(牧师,小德,洒满,骑士)。组 成的一个5人小组。然后多余的一些不需要其他人支援的职业会放在一起(猎人,贼)。
这样形成的团队整体结构如下(一般大概情况):
小队1 : 战士,术士,骑士,萨满,牧师。
小队2 :
战士,法师,小德,术士,牧师。
小队3 : 战士,法师,猎人,小德,萨满。
.....
小队8 : 猎人,猎人,猎人,贼,贼。
从来没有见过这么分组的:小队:战士,战士,战士,战士,战士。(这种菜刀队在极端情况下炫一下也不是没有可能)。
那么这么分组到底会有什么好处呢?
我感觉,首先,团队领导在指挥上更加方便,在战斗中,指挥者可以这个发出指令:"所有法师退后,
所有战士向前,其余人散开"。也可以这么发出指令“4,5队去东南方向防守,6,7队去北边防守,其余人集中进攻”。这样,同组的人会互相监督和提示自己
是不是做错了什么,或者有什么没做。而职业队长也会监督自己的职业的队员的行为是否正确。
第二,增强小队战斗力,当一个小队单独作战的时候,他们内部的依赖性会变得很大,不同职业的搭配显然要比同一职业的配合要完善。
第三,突出责任,因为小队中的队员依赖变大,所以迫使小队成员每个人必须进步以应付他面对的问题,我们谁都不原意听到对自己这样的评价:“我们队的 牧师不行”,“我们队的法师太差了,根本让我没办法完成任务”。所以,这样对小队内成员的成长会起一个推动的作用。
第四,BUFF影响,在游戏中有这样一个设定,就是某职业的角色会对其他团队成员有帮助,这就像你组内有一个构架师或DBA,当你有遇到有构架方面 的问题(或数据库方面),你就可以直接问他,而不用找最忙碌的总构架师一样。如果这个组内构架师能够解决问题,则可以增加工作效率,如果不能,构架师可以 请示其职业队长,这样的沟通要比所有人一呼而上的情况好的多。而且这样也有助于技术,业务的传播。
第五,小队活动将更加方便,更灵活,沟通成本更低,5个人的沟通,要比40人的沟通方便的多。5个人的活动也比40人的活动好组织。
第六,小组竞争得以实现,因为每个小组都是完整的,可以胜任完整的任务,所以他们更容易形成竞争的情况。
第七,可以更方便的进行一些其它方法,工具,思想,战术的实践,因为小组是完整的,更加独立,可以自己遵循自己的工作方式。并加以验证。
第八,小组更容易培养潜移默化的工作文化,因为小组是完整的,小组间成员依赖性更大,所以更容易互相监督,互相支持,从而是工作气氛更容易协调。
第九,小组的目标更明确,因为小组是完整的,任务更加明确。
第十,这样的小组更不好混,喜欢混团的人都知道,40人的团可以混,5人的团对绝对不能混,因为队里面你可能是唯一的职业,如果你犯什么错误,是很 容易被发现的。
总的来说,小组越独立,就越容易管理,越容易形成自我管理型团队。而团队中的人员越多,小组内成员越重复的时 候,每个人的责任感都会下降,每个人的贡献率都会下降。这就根1个人单独看到有人受伤,肯定会去救援,而在到处是人的环境下,大家各顾各的,往往却不会去 救援伤者的道理是一样的。因为大家都在想,这么多人了,别人为什么不去?为什么非要我去?所以大家都装看不见。
就像BROOKS博士在人月神化中组建的外科手术队一样,我们也需要一个更优秀,更完整,灵活的小队来完成任务。手术师队伍中只有主治医生才拿刀, 而屠夫团队中所有人都拿刀。
在我所设想的团队中,将有一名主程序员(首席程序员),主程序员可能会兼一个组内构架师的角色并负责大部分设计工作。然后是他的1到2个副手,程序 员,他们负责实现主程序员设计的接口和功能。然后是2名测试人员(要保证测试人员和开发人员一样多,这在TDD的情况下十分重要),一名业务专家(他可以 更深的理解业务,分析需求,甚至可能会临时充当DBA),一名质量管理员(说实话,我希望是2,3名)。这样我们就有了一个7人小组。结构如下:
主程序员角色 -------- 组内架构师,设计,制定接口,编写核心部分。
程序员1角色 --------
接口实现(XP)
程序员2角色 -------- 功能实现(XP)
业务专家角色 --------- 需求,组内DBA
测
试工程师1角色 ------ 测试用例
测试工程师2角色 ------ 人工测试
质量人员角色 ---------
代码走查,核对实现与设计是否有偏差,文档管理,协助。确保质量目标,执行质量策略,组织培训。(1个质量人员可能比较勉强,专门指定质量人员的意义在
于,走查代码的人,就不再适合写代码)。
---------------------------------------------------
对于程序员角色,不仅需要熟悉JAVA API,而且还要足够理解XP和设计模式。这个对于开发人员的要求还是比较高的
大约就是这样子,还可以进一步细化。这样的小对更合适AOP,SOA这样的程序开发思想。能够独立设计并完成Service。
注意,小组中的都是角色,当一个开发人员在写测试用例和运行测试用例测试的时候,他就是一个测试人员角色,当他实现接口的时候,他就是一个开发者角 色。
未完待续。。。。。。
我有的时候总是在想,为什么几个学校里面没毕业的学生、不务正业的工人、还有素质那啥的城管、插科打诨的程序员组成的团队效率如此之高。
而
那些貌似强大的公司、5位数身价的高管、无数硕士研究生,本科等高学历高素质的人材组成的团队,缺是如此混乱不堪。
原因不外乎以下几点:
1。我们(wow世界里,不是在公司)有明确的、不可动摇的目标。
那就是杀掉BOSS,获得胜利,荣誉,还有战利品。没有人不想胜利。
2。我们有足够的动力。
BOSS掉落的战利品足够让我们馋涎欲滴(虽然大都看上去遥不可及),胜利的荣誉会让我们振奋,想象一下你就是第一
个杀掉强大的龙团队中的成员,你们的传说会在整个世界回响。
3。我们有足够的竞争压力
各个工会之间的进度竞赛会让激起很多人的斗志。
4。我们足够团结
我们在分配战利品上的原则十分明确(DPK制度),透明,没有人可以耍花样。
5。我们合作的时间长
1个磨合了两年的团队的战斗力是不容小视的。
6。我们有足够困难,但是能实现的目标。并且有足够的精力来进行各种尝试
虽然BOSS们看起来像神一样强大,但是我们总是会在
1000.....00次时候,把他击倒。
借用wow里常说的两句话,“不怕神一样的对手,就怕猪一样的队友”,“我最强大的装备,就是我身边的39个兄弟”。
继续未完待续.....................
这里的各位同僚们,你们的队伍是什么样子的么?