知乎神回复:集中全世界程序员的力量,能三天内开发手机淘宝吗?

这是我在知乎上看到的一个问题,我相信做为咱们程序员来说,心里确定都知道答案了。确定不可能的,除非阿里的程序员把代码拿出来,而后再部署一套,毕竟全世界的程序员也包括阿里的程序员嘛。可是,这个确定不是题主想问的。程序员

其实,我更想经过这个问题给你们推荐一本书,那就是《人月神话》,相信不少程序员都听过这本书,我不知道又有多少程序员读过这本书呢?我只是想说:对于程序员来说,若是你想开阔本身的眼界,丰富本身的知识,软件工程和软件管理类的书籍是必读的书目,并且你若是又想往技术管理的方向进阶的话。编程

这个问题,若是从《人月神话》的角度去回答的话,应该是这样的:微信

在众多软件项目中,缺少合理的时间进度是形成项目滞后的最主要缘由,它比其余全部因素加起来的影响还大。致使这种广泛性灾难的缘由是什么呢?架构

首先,咱们对估算技术缺少有效的研究,更加严肃地说,它反映了一种悄无声息,但 并不真实的假设——一切都将运做良好。学习

第二,咱们采用的估算技术隐含地假设人和月能够互换,错误地将进度与工做量相互混淆。ui

第三,因为对本身的估算缺少信心,软件经理一般不会有耐心持续地进行估算这项工做。spa

第四,对进度缺乏跟踪和监督。其余工程领域中,通过验证的跟踪技术和常规监督程 序,在软件工程中经常被认为是无谓的举动。设计

第五,当意识到进度的偏移时,下意识(以及传统)的反应是增长人力。这就像使用汽油灭火同样,只会使事情更糟。愈来愈大的火势须要更多的汽油,从而进入了一场注定会 致使灾难的循环。blog

在《人月神话》中有这么一句话:开发

简单、武断地重复一下 Brooks 法则:向进度落后的项目中增长人手,只会使进度更加落后。

在《人月神话》中,它讲到了人们的一个谬误:

那就是不少人的思考方式是在估计和进度安排中使用的工做量单位:人月。成本的确随开发产品的人数和时间的不一样,有着很大的变化,进度却不是如此。所以我认为用人月做为衡量一项工做的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是能够相互替换的。

什么意思呢?

人数和时间的互换仅仅适用于如下状况:某个任务能够分解给参与人员,而且他们之间不须要相互的交流。可是在咱们的软件编程,系统编程中,这是不可能的。

当任务因为次序上的限制不能分解时,人手的添加对进度没有帮助。不管多少个母亲,孕育一个生命都须要十个月。不会说由于一个母亲怀孕 10 个月可以生出一个孩子,因此我找 10 个母亲,就能够在一个月内生出一个孩子来。

对于能够分解,但子任务之间须要相互沟通和交流的任务,必须在计划工做中考虑沟通的工做量。所以,相同人月的前提下,采用增长人手来减小时间获得的最好状况,也比未调整前要差一些。由于可分解,可是每一个子任务之间又沟通密切的话,随着人数的越多参与,沟通的时间成本也会显现,因此,人数越多可能沟通的时间成本也会致使项目延期,开发的很慢。

沟通所增长的负担由两个部分组成,培训和相互的交流。每一个成员须要进行技术、项目目标以及整体策略上的培训。这种培训不能分解,所以这部分增长的工做量随人员的数量呈线性变化 。

软件开发本质上是一项系统工做 —— 错综复杂关系下的一种实践 —— 沟通、交流 的工做量很是大,它很快会消耗任务分解所节省下来的我的时间。从而,添加更多的人手, 其实是延长了,而不是缩短了时间进度。

因此,你说呢?若是集中全世界程序员的力量,三天以内能实现一个手机淘宝吗?答案是显而易见的,不可能。由于人越多,就越乱。可能光架构的设计这些程序员就能争吵一个月。尤为是集中全世界的精英程序员来开发的话,协调沟通,够你们喝一壶的,你们吵吵一个月都未必可以进入开发阶段。

原文连接:http://mp.weixin.qq.com/s?__biz=MjM5NDkxMTgyNw==&mid=2653063239&idx=1&sn=29a6a749f824e5ac4550ac5a4c6b4d1a&utm_source=tuicool&utm_medium=referral


自学C/C++编程难度很大,不妨和一些志同道合的小伙伴一块儿学习成长!

C语言C++编程学习交流圈子,【点击进入】微信公众号:C语言编程学习基地

有一些源码和资料分享,欢迎转行也学习编程的伙伴,和你们一块儿交流成长会比本身琢磨更快哦!

相关文章
相关标签/搜索