前言:研究表明,效率高和效率低的实施者之间个体差异非常大,能够达到数量级的水平。类似我这样年龄段的产品经理来说,我认为我只需要有5个精干的成员组成团队,然而我这样的想法就面对着一个很难回避的问题-这样的小型团队很难在有计划的进度安排时间内创造大型的系统!
问题
- 大家知道,优秀的程序员和较差的程序员的效率存在巨大差异,书中也指出来最好和最差的效率上平均为10:1,编程速度和空间上具有5:1的惊人差异。
- 需要协作沟通的人员数量影响开发成本,这就意味着人员数量少的情况下,沟通就会减少。然而这不适合于大型项目,书中指出,如果把所有的大型系统用精干的小型团队开发的话,质量当然能够保证,但是其在时间花费上将让项目面对死亡,因为等产品开发出来后,原来一年的开发周期,在由1000人缩减的精英的20人,其周期可能就要有十年到二十年。
mills的建议
对于一个已经不可再分割的任务,其团队组成就应该如果外科手术团队一样,整体由一个主刀外科医师来把控,其余人员进行协作,书中列出了外科医生、副手、管理员、编辑、两个文秘、程序职员、工具维护人员、测试人员、语言专家等刚好10个人,那我结合自己的实际开发环境做出以下的探索(假如是五个人的团队):
- Team leader:这个角色就是外科医生并且兼任管理员,其为团队的核心,负责定义功能、性能技术说明、设计程序、编制源代码、测试、书写文档等等。也就是说leader主导所有的整体工作,从需求分析、技术架构、部分开发、测试等软件开发的整个流程进行把握,同时管理整体资源,把控进度。
- 首席程序员:负责副手、语言专家的职责,具备leader的特性,偏重技术钻研,负责代码的整体编写和技术攻坚。
- 测试人员:有编辑、测试人员的角色功能,能够产生项目需要的文档,熟悉业务,编写测试用例,负责测试步骤,我觉得是个女生是最合适的,^_^,能够带动团队和谐氛围。
- 两名各有优势的开发人员:偏重不同技术方向,有不同兴趣爱好,能够为项目开发带来所需要的回报。
如何运作
外科手术团队能够保证团队在概念上达成一致,所有的方向均由外科医生把控,而其他角色充分细致到不同方面。
团队的组建
一个不可分割的团队组成像外科医生团队一样,如果要组建大型的团队,那么就如同大树的根一样,由一个个分支不断连接,最后形成一股有凝聚力的大型团队。