《人月神话》:外科手术队伍

 

问题:如何在有限的时间内创建大型的系统?

我们假设创建的大型系统需要5000人年。

 

观点一:

一拥而上的开发,相信人多力量大,增加人数,满足时间要求。

评:

1、这里错误地将软件开发和体力劳动等价了;

一个任务如果分配到单个人,而这个单个的人不需要和其他人沟通即可完成的任务,是可以通过增加人数来缩短劳动时间的。比如割麦子,每个人割自己分配的麦子,中间不需要和其他人沟通,割完自己的麦子即可。而软件开发却不能这么搞,不同的开发之间,不同的开发组之间是需要频繁地沟通的。

沟通又分两个层次:

1)相互的沟通与交流;

2)更正因为沟通不当引起的不良结果;

一个人闭门造车可能开发了重复的轮子,也可能开发了不满足其他人的要求的接口,或者开发的东西根本就不是别人想要的。

2、不同的人生产率是不一样的;

有开发组做过统计,最好的和最差的表现在生产率上平均为10:1,等于说同样的一个任务,分配到效率高的A,一天就可以完成;但分配到效率低的B,需要花费10天才能完成。

 

观点二:

由头等人才组成的小型的、精干的队伍,而不是几百人的大团队。类似于使用特种部队代替大兵团作战。因为人少,需要沟通过的成本就越少,又因为是特种兵,所以生产效率很高。

评:

我们先做一个推算,如上,5000人年的任务如果使用200人开发,则需要5000/200=25年。如果采用小型的、精干的队伍,我们假设为10人,因为精干,我们假设他们的生产率是普通职员的10倍;因为人数少,沟通成本少,我们假设沟通效率是200人团队的10倍,那么开发完5000人年的任务,需要5000/10*10*10=5年。5年后开发的产品会不会过时?还有人对这个产品感兴趣吗?

 

Mills的建议:

将大型项目的每一个部分由一个团队解决,而这个团队类似于外科手术的方式组建。由一个人进行问题的分解,其他人给予他所需要的支持。即外科手术团队,观点由外科医生单方面统一。

 

外科医生:相当于架构师,拥有极高的天分,丰富的经验和大量系统和应用的知识,是团队的核心。

副手:外科医生的后备,能完成任何一部分工作,但拥有较少的经验。相当于参谋,外科医生有问题可以找他商量,但不受他建议的限制。

管理员:外科医生是老板,在人员加薪、升值方面有决定权,但没必要在这方面浪费太多时间,他需要一个管理员来管理人员、财务等其他业务。

编辑:外科医生负责产生文档,但处于清晰度的考虑,需要配置一个编辑,编辑外科医生的草稿或者口述的草稿。

两个秘书:配备给管理员和编辑。

程序员:机器码的编写。

工具维护人员:管理文件编辑,调试工具,网络配置等。

测试人员:测试功能。

语言专家:外科医生主要负责系统的设计和系统的整体表现,而语言专家负责寻找一种简洁、有效的语言来解决复杂 、晦涩和棘手的问题。通常一个语言专家可以为两个或三个外科医生服务。

评:

这样似乎可以解决我们开头说的大型系统。还是200人的团队,我们划分为20个小组,每组10个人,每组都选取一个外科医生。对外,由外科医生负责对外沟通;对内,由外科医生统一意见。这样200人的团队只需要协调20个人。职责划分好后,原先200人沟通,现在20个人沟通,我们假设沟通效率提高了10倍,因为每组都有一个专家(外科医生)和语言专家搭配,我们假设生产效率提高了5倍。那么5000人年的任务需要5000/200*10*5 = 0.5年。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值