在《建设全功能团队》和《建设全功能团队——实践篇》两篇文章中,我的同事胡凯曾介绍过建设全功能团队的必要性和良好实践,此后在围绕这一话题的讨论中,很多人都分享了自己的理解,或看好,或看淡。在ThoughtWorks有许多团队一直在建设全功能团队方面实践着,在这篇文章中我希望与大家分享我从这些团队收集到的过去一年来的数据,以及更切身的理解。
简短回顾
全功能团队
它不仅是由一专多能的多面手成员组成的软件开发团队,而且是所有成员共同分担职责的团队。团队中的各项职责不再与具体的人员耦合,每一个人都有可能做并且有能力做超过一种传统角色所做的事:例如在某个时刻,开发人员在做测试,测试人员在做业务分析,业务分析人员在做部署;前端开发、后端开发、数据库维护被开发人员一视同仁;所有的人都能与客户沟通,也承担着只有传统的项目经理才闹心的项目风险。
来自软件开发业界的质疑
在关于全功能团队的讨论中,最激烈的质疑集中在能力和效率两个方面:
带着这样的问题,我们在过去一年里用实践里证明了全功能团队的可行性,并在团队成员培养和项目可持续进展上都受益不少。
我们怎么做到的
针对效率问题
对效率的通常考虑方式源于工业化生产,认为分工后的重复性工作能提高劳动熟练度,从而提高生产效率。但是,知识工作不是流水线上拧螺丝,它的核心问题是效果 (Effectiveness) 而不是效率 (Efficient) 1。通俗地说,打字最快的不一定是好程序员,100行代码也不一定比一行代码更有价值。所以,对有价值的软件开发者而言,真正重要的是知道要做什么、为什么、怎么正确地做到。
全功能团队中,我们让成员做不同角色的职责,就是要打破知识壁垒,让大家都站在不同的角度看我们的软件,传递知识、扩展认知;等再回过头看自己原来做的“本职”工作时,从其他角色的角度得到的知识会帮助我们用更正确方式地做对的事。同时,培养多面手团队成员的益处也在于,可以按需调整做某件事的人数或安排人员的替补,这对团队的人员利用率提升是很有帮助的。
我们这样做:
针对能力问题
对能力的担心是可以理解的:对不熟练的事甚至头一次做的事,谁都不能很有把握独立做到;每个人的技术能力是有限的,职责的切换意味着挑战来临。然而这是一个团队,没有人孤军奋战,也不会安排成员做登天的事。
全功能团队在能力问题上重视的是团队成员的成长和项目的可持续进展。培养成员逐渐胜任某项新职责是对他能力的拉伸,只要方法得当,团队就会平稳地在几个月后收获一批一专多能的多面手成员。而这种成长也不是以暂时牺牲项目进展为代价的,项目和人员成长不站在对立面。
我们这样做:
我所在的团队里,有很多事都是其他非全功能团队无法想象的:
用数据说话
问题1: 没有了专职测试人员之后,系统新增功能的缺陷数目是否显著增加呢?
答案:没有。图1显示的是我所在的项目过去一年半内的缺陷数曲线。竖线标示的是自2012年7月1日起,团队取消了专职测试人员,以两周一轮换的频率让所有开发人员轮流做测试。由图可见,这个实践开始之后的缺陷并未较之前显著增加,7月初和10月初两次重大发布仍然是影响缺陷曲线的最重要因素。
问题2:全功能团队中的成员角色切换甚至人员变更较频繁,有没有对项目的交付进度产生严重影响?
答案:没有。图2是我所在的项目近一年来的团队人员变更情况与交付速率曲线的对比,这里的交付速率数值仅包含具有业务价值的用户故事卡的点数,而其他的如技术卡和缺陷卡的工作量是单另进行统计的。在2012年7月到8月这段时间内,团队的成员调整的较频繁,同时伴随成员调整,各人的角色也在调整,参照交付速率曲线来看,在这段变更时期以及之后的适应期里,团队仍然保持了如以往的交付节奏和速度;交付速率曲线上在1-4月、4-7月、7-10月体现出的冲高而后渐落的变化模式,也与项目在4月、7月、10月的三次重大新功能发布相契合。前文图1也参证了在7月到8月这段时间里,项目的缺陷数目并未显著爆发。所以我们观察到的是项目交付进度未受影响。
问题3:全功能团队强调一人多用,那它真的比普通团队的人才利用率高吗?
答案:是的。图3-1, 3-2是在ThoughtWorks西安办公室做的一次关于各人所担任过的团队职责的调查结果。来自包括我所在的团队在内的几个团队共38人参与调查,他们自认为的本职角色大多为开发人员(78.9%),具体的本职角色统计如图3-1所示,角色比例与业界数据3 相去甚远。但他们在团队中做过的职责都不止一个,如图3-2所示,以人数所占比例最高的开发人员为例,他们中77%的人做过测试工作,23%的人做过项目管理,30%的人做过业务分析,40%的人做过运维。从数据可见,全功能团队中不易出现因为某角色人员的缺席导致的交付阻塞,因为其他角色的人可以转换职责来代替缺席者。建设这样的团队对多个团队之间共享人才、提高公司整体人员利用率会有帮助。
结论
从我观察到的ThoughtWorks全功能团队的实践以及收集到的数据来看,建设全功能团队在中小型项目里能顺利进行。我们按照良好实践所做的尝试和努力,让项目、个人以及公司都受益了。那些来自软件开发业界的忧虑,从本文谈及的实践以及数据来看也应该释然了。
注解与参考
Peter Druker,
Uncle Bob’s post, Nov 2008
通过招聘网站估算出的数字,如果需求是基本平衡的,市场所提供的职位数量比例与相关从业者的比例应当基本一致。对某主流招聘网站IT板块进行搜索得到:35000开发职位,14000测试职位,12000分析职位。