作者:陈勇

出处:blog.csdn.net/cheny_com

主程序员团队是曾经风靡一时的小型研发团队组织架构形式,很多团队都曾经有意无意地使用过。其模式是:由一个最好的程序员编写所有最终代码,其他人只进行测试及辅助工作。乍看起来与Scrum的“跨职能团队”差别很大,但由于其提出也是为了达到更高效率、更高质量、更快响应变更等目标,与敏捷开发可以进行组合使用。

软件界常见的一种现象就是程序员之间的相差水平很大,业界的数据是在1~10倍之间,极端情况下可见到看20倍的情况。笔者在01~04年亲自观察到的情况包括11天的工作被1.5天替代、约2个月的工作被2周替代、约1个月的工作被一下午替代、一个项目经理私下里告诉我他其实编写了所有代码中的60%(团队有6个人)、约13个人用9年编制的程序被1个人用1.5年基本重写等等,在各个实例中后者无论效果、效率、质量都高于前者,而后者程序员的水平也高于前者。在这些案例中的却存在一些前期的探索促进了后期的效率的现象,但因为笔者亲身经历,可以确认其中的主要原因还是在于人的差异:实际上高手很少去参考新人失败的探索所得到的成果。

主程序员团队就是基于这一思想产生的,笔者在02~03左右有幸在两个项目中尝试过,无论进度和质量都超出之前管理过的项目。比如其中一个项目周期据客户透露只有客户原计划的55%(客户曾内部开发此项目但最终失败),而在其交付后的一年里只报告过一个缺陷。


主程序员是团队的核心,对业务的理解和对技术的把握都要很强。看似这样一个人非常难以获得,但实际上某些情况下要找到这样一个人的成本远远低于建立一个“人人都对业务和技术有所了解”的团队。主程序员不只是效率更高,完成的质量、所采用的方案的先进性也远远超出

其他人,再加上大大降低管理成本,投入产出比很高。在03年一个可担当主程序员的人员工资实际上只需要1万元上下,即使当下(2011年)1.5万元也就差不多了,其可能产出绝非两个7500元程序员可比。

尽管主程序员看似关键,其实“主程序员到底做什么,其他人到底做什么”才是关键中的关键。

某些工作并非水平高效率就高,比如:“搜索、下载、确认一段屏幕截图代码可用”的效率很难因水平高2倍而提高2倍效率,“为今天所做的2个功能增加17个自动测试用例”也是如此。这些工作就应该交给其他人员完成。


对主程序员团队的极端认识是:其他人永远打杂切无出头之日。因此要做好主程序员团队的成长(也包括一旦发现自己的团队无意中变成了“主程序员团队”),需要做好以下几点:

1. 主程序员每天应抽15分钟左右给大家讲解当日的进展,增加了哪些功能和代码。考虑到每人每天所能编写的代码其实只有110行左右(笔者自己的统计数据),这种讲解是很有效的。

2. 其他人员应主动学习主程序员编写的代码,尤其是那些经自己搜索、验证后,被主程序员重写或封装的代码。其中间的差异很好地表达了两个人自身的技术差距,应学习并逐渐消除差异。

3. 测试人员应每天通读代码后再行测试,测试用例应由主程序员提出但由测试人员实现,测试人员应顺便由此了解整个程序的设计思路。(笔者注:在MS Project 2003中用“软件开发模板”创建项目时,会看到有测试人员通读软件的任务,大概是微软自己的工作风格。)

4. 主程序员应主动将一些非决定性代码交由其他人来做,并进而发现和提拔新的程序员替自己做一些事情。关于如何鼓励这件“饿死师傅”的事情在笔者其他博文中会提及,简单说就是能被饿死的都不是什么好师傅,以及好师傅不可能被饿死。

实际上做好1234后,主程序员团队中人员的成长远比一人一摊打死不相往来要快得多。


主程序员团队不是万能的,比较适合下述情况:

1. 行业新产品研发,找不到合适的人的。

2. 高度机密产品,比如博主做过的数字电视加密系统。

3. 创意产品,比如某些游戏,直接编程的程序员很少。

4. 公司快速发展的。

多数情况下此类团队都不超过10个人,5个人居多。

从基于快速功能点的度量统计结果看,小型团队的交付周期较大型团队长(人多的团队整体战斗力还是强),但生产率高(每人天完成的国际标准功能点数),部分团队的生产率可达到国际标准值的4~8倍。因此把大型团队切分为很多小型团队并安排主程序员来主持是一种很好的节省成本又增加生产率的方法。微软的团队就是如此。

在大型团队中包含多个主程序员团队的一个附加的好处是降低了沟通成本,降低了文档甚至代码总数,且便于使用高薪/股权来保留核心人员。


与敏捷开发的配合

没有跨职能团队,没有Scrum Master,没有Product Owner(至少没有直接设),这个团队怎样敏捷?

其实主程序员团队仍可以使用Product Backlog和Sprint Backlog,也一样能持续集成/自动化测试,优先级排序也是自然的。

因此完全可以基于已经成为既成事实的主程序员团队建立敏捷开发,心中有刀胜过手中有刀。

点击下载免费的敏捷开发教材:《火星人敏捷开发手册》

转载于:https://www.cnblogs.com/JPAORM/archive/2011/02/17/2510545.html

主程序员团队与敏捷开发的联合应用(小型敏捷团队管理)相关推荐

  1. 敏捷开发一千零一夜读书笔记之敏捷初探

    最近很忙,有个把月没读过书,没上过这里,趁着今天项目结题验收,上来转转. 我常常想,我这里应该是没有读者的吧,我完全把这里当成是一些我脑子里记不住,或者感觉"啊,原来是这样"的东西 ...

  2. 从持续交付看敏捷开发的自相似性(敏捷开发的心跳)

    作者:陈勇 出处:blog.csdn.net/cheny_com 自相似性是指一个事物的局部与其更大的局部乃至整体具有相似性. 从大的方面看,敏捷开发具有重视客户价值,提倡持续交付等思想.但一般而言, ...

  3. 敏捷开发系列学习总结(17)——团队需要Scrum Master做这六件事

    我一直在和你的团队交流,好吧,可能不是你正在带的团队,而是很多和他们类似的团队.这些团队跟我分享了他们期待Scrum Master做的六件事情. 1.  帮助他们理解职责边界 敏捷团队被告知他们是自组 ...

  4. 【敏捷开发每日一贴】敏捷教练和团队引导

    谈谈敏捷教练和团队引导 敏捷教练在不同的组织中,在不同的场景下,可以是:教练.咨询顾问.引导式培训师.导师.过程引导师,并且可以根据不同的情况切换角色.熟练运用各种技术.技巧.工具.(这里说的敏捷教练 ...

  5. 敏捷开发与Scrum区别(敏捷开发(Agile)教程)

    敏捷是一种使用1至4周的短迭代的软件开发方法的迭代方法.由于敏捷方法,开发过程是一致的,以满足不断变化的业务需求.使用敏捷方法,软件分发(版本发布)紧凑,更少. Scrum是一个敏捷框架,可以帮助敏捷 ...

  6. 敏捷管理(1)- 什么是敏捷开发?为什么要采用敏捷?

    为什么提倡敏捷? 20世纪50年代~90年代,能够供会议通信场景和信息交流场景的基础条件并未达到让人们信息互通如同今日那般(2021)可以透过屏幕可以看到对方的面部表情. 市场的信息交流并不频繁,用今 ...

  7. 【敏捷开发每日一贴】敏捷实践Showcase的七宗罪

    敏捷实践Showcase的七宗罪 Showcase(其实就是SprintReview,演示会.评审会)就是开发团队把开发好的功能给客户的Product Owner等业务相关人员演示,以获取他们对所开发 ...

  8. 敏捷开发系列学习总结(4)—Git管理工具sourcetree的安装

    现在代码管理都流行用git了,小编以前用过clearcase, svn,vss等.现在用了git后,发现git才是最好的,我觉得它最吸引人的地方应该是它的分布式管理吧.git的具体学习,读者可自己去网 ...

  9. java epics_Visual Paradigm敏捷开发教程(7):如何管理Epics

    为了有效地管理和实施项目,你需要将项目的最终目标细分,明确每一阶段要实现的目标.用例,Epics,用户故事是很好的工具. 什么是用例,Epics,用户故事? 用例(也称为用户活动或主题)是最终用户希望 ...

最新文章

  1. redis+主从复制+集群配置
  2. socket编程listen函数限制连接数的解决方案_网络编程——服务器篇
  3. Apache Rewrite的主要功能
  4. showModalDialog sesission丢失
  5. Cisco端口限速配置
  6. 关于 Linux 操作
  7. [PHP]Yii rules常用规则
  8. CTO 说,再用错@Autowired 和@Resource 就可以领盒饭了
  9. Durable NAND flash memory management
  10. swfupload 实例 php,文件上传之SWFUpload插件(代码)_php实例
  11. java项目王者荣耀源码分享,拿走不谢
  12. Introduction to Modern Cryptography (Second Edition)
  13. C++ 制作FlappyBird
  14. easyExcel设置单个单元格(颜色)样式
  15. 华为p40支持鸿蒙,华为P40来袭,支持鸿蒙系统,花粉直呼惊喜
  16. Signal ()函数详细介绍 Linux函数
  17. mac Axure RP 8 授权码 以及汉化
  18. ffmpeg中文文档
  19. (C语言)字符串函数strcpy和strlen的实现,以及简单的文字编程题(派大星看了都会写)
  20. 嫁给玩股票男人的九大理由

热门文章

  1. 走在梦的路上 绝不回头
  2. 《更友好的网站url设计》
  3. 评教数据的存储和显示问题
  4. 关于.Net Application Server对象访问方式的设计(2.上)
  5. 那年学过的Java笔记三核心类库一
  6. [转]Django REST framework 简介与中文教程
  7. python进阶17炫技巧
  8. 量化策略回测DCCV2
  9. 克罗谈投资策略01_期货交易中的墨菲法则
  10. vnpy通过jqdatasdk初始化实时数据及历史数据下载