不懂技术的人不要对懂技术的人说这很容易实现 - 开源中国社区
Float_left Icon_close
不懂技术的人不要对懂技术的人说这很容易实现
景德真人 2012年05月08日

不懂技术的人不要对懂技术的人说这很容易实现

景德真人 景德真人 发布于2012年05月08日 收藏 53 评论 68

做APP,小程序就上开源众包。世界杯期间免费领2600元启动金。>>>  

“这个网站相当简单,所有你需要做的就是完成X,Y,Z。你看起来应该是技术很好,所以,我相信,你不需要花费太多时间就能把它搭建起来。”

我时不时的就会收到这样的Email。写这些邮件的人几乎都是跟技术不沾边的人,或正在研究他们的第一个产品。起初,当听到人们这样的话,我总是十分的恼怒。他们在跟谁辩论软件开发所需要的时间?但后来我意识到,即使我自己自己的项目预测要花去多少开发时间,我也是一筹莫展。如果连我自己都做不好,我何必对那些人恼怒呢?

真正让我郁闷的不是他们预估的错误。问题在于他们竟然认为自己可以做出正确的估计。作为开发人员,我们经常会发现,在软件开发的问题上,一个外行人会很自然的把复杂的事情估计的很简单。

这并不是为我们的愤怒找借口。但这引起了另外一个有趣的问题:为什么我们天生的预测复杂性的能力在遇到编程问题时会失灵?

为了回答这个问题,让我们来认识一下我们的大脑如何估计事情的。有些事情对于一些没有经验的人也很容易预估正确,但有些事情则不然。

我们来想想观看一个人弹吉他。即使你从来没有弹过吉他,在观看了一场弹奏《玛丽有只小羊羔(Mary had a Little Lamb)》的吉他表演后,你也能大概推测出这很简单,一个人不需要太高的技术就能演奏出来。同样,当观看了有人演奏D大调的《卡农 (Pachabel’s Canon)》后,你也很容易推测出,这很复杂,需要很长时间的练习才能演奏的出来。

为什么我们能够很迅速准确的预估这两首曲子的复杂性呢?这是跟我们用来判断一个事情简单和还是复杂的方法有关的。我们的大脑有一些现成的模式来完成 这些事情,首先一个就是根据速度。这种情况下,大脑会辨别每秒钟演奏的东西。根据每秒钟演奏了多少东西,我们很容易有一个直观的判断曲子的复杂度。因为用 吉他演奏一首歌是一种物理过程,一种感官上的活动,我们的大脑很容易依此来推测速度,继而转换成复杂度。

我们还有另外一个天生的推测依据:体积。想想把一个帐篷和一栋公寓放在一起对比。即使一个人从来没有学过建筑学,他也能告诉你通常设计和建造一个帐篷会比设计和建造一栋公寓要简单。为什么?因为我们天生的会使用物理体积作为事物复杂性的一个指标。

当然。上面说的这两种逻辑分析并不是总是100%的有效。但大多数情况下,人们就是这样干,而且很成功。大多数情况中,我们在对物理过程评估时,我们的大脑会对物理事物进行有效的关联,不需要依赖之前的经验。

现在让我们来谈谈软件。当一个不懂技术的人试图对软件开发时间进行评估时,有两个很基本的直观指标在辅助他们:以体积为指标的复杂度和以速度为指标 的复杂度。但他们没有意识到,软件跟他们想象的不一样。软件本质上不是有形物质。没有体积和速度。它的极小的组成部分可能会时不时的在电脑屏幕上闪现。正 因为如此,当面对开发一个web应用时(或任何类型的软件),我们的基本直观感觉失效了。

这第一点,速度,很显然根本不可能被外行人拿来对软件进行评估。于是很自然的,他们倾向于使用体积指标进行评估。要么是根据描述文档的页数,要么是根据软件的功能用例数或特征数。

有时候,这种评估手段确实有效!当面对一个静态网站,没有特别的设计要求,外行人很容易用这种方法估计出开发时间。但是,通常情况下,对于软件开发,体积并不能真实有效的反映复杂度。

不幸的是,对于软件的复杂度,唯一有效的推测方法是依据经验。而且还不是时时都好用。作为一个程序员,我知道,根据我之前开发过 的相似的功能特征,我可以估计出现在的这些功能特征各自要多少开发时间。然后,我把总时间加起来,这就得到了完成整个项目需要的大致时间。然而,事实情况 中,每个项目在开发过程中都遇到二、三个瓶颈。这些瓶颈会肆意的消耗程序员的大量时间,你在遇到它们之前根本不会有所预见。它们会拖住整个项目,致使工期 延后数周甚至数月。

这些是没有经验的人在评估复杂度时不会理解的。他们不明白在其他事情上都很灵的方法,为什么放到软件开发上就不灵了。所以,下一次当你听到有人说“我想你几天时间就能把它开发出来”时,不管是谁说的,都不要懊恼。深呼吸一下,告诉他这篇文章的地址,自己该干什么还干什么。

[本文英文原文链接:I'm Sure It Will Only Take You A Few Days To Code ]

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:不懂技术的人不要对懂技术的人说这很容易实现
分享
评论(68)
最新评论
0

引用来自“xiaog”的评论

这个文章只需要看标题就行了

太拽了。拽什么拽
0
这还不是最可怜的,最可怜的是领导也是懂技术的,但是问题是他跟我不是一种语言,导致时间评估也不同。比如PM是做Delphi出生的,但是我是做php的,然后很多关于数据分析、打印、图表等等问题上我就悲剧了!
PM:“这个问题1天就可以考搞定了!”,实际上我3点都不一定能搞定!
PM:“你看这个特效,新浪微博第一天退出,腾讯微博第二天就推出了,给你一天时间你也给我搞定了!”
。。。
类似,无语啊!
0
客户不懂不可怕。就怕老板不懂装懂, 非常可怕。
客户不懂可以解释,可以论价,可以加时。
但是对于不懂装懂的老板。 恐怕只能加班或者 跳槽了。
嗯...太有感觉了..

和不懂技术的 领导们沟通..那比和客户都费劲....
0
时常碰到一种现象就是,客户认为是小的改变,其实带来上百行,上千行的改变,乃至架构的调整。
0
子非鱼
0
说出我的心声啊
0
文章不错
0
跟爷废话,现在就滚蛋喝西北风去。
0

引用来自“拓荒.NET”的评论

引用来自“贝特虫子”的评论

引用来自“黑传说”的评论

引用来自“Mr.Zheng”的评论

我曾经遇到过一个客户,他说他自己十几分钟就能搞定的功能,结果在开发人员这边花掉了半个月。到最后客户还觉得不满意,还在强调,“我十分钟就能弄好了,你们弄这么久怎么效果还这么差...”

碰到过n个程序员,明明5分钟就搞定的事情,非得整几天才搞定,而且效果还让人无语……

呵呵,5分钟...

顶楼上,你自己知道5分钟能搞定,又嫌人家手脚不利索,怎么不自己弄呢??

我要有权限啊!!!!!
0
我想让老板看看,可标题太那个啥了,不敢
0

引用来自“贝特虫子”的评论

引用来自“黑传说”的评论

引用来自“Mr.Zheng”的评论

我曾经遇到过一个客户,他说他自己十几分钟就能搞定的功能,结果在开发人员这边花掉了半个月。到最后客户还觉得不满意,还在强调,“我十分钟就能弄好了,你们弄这么久怎么效果还这么差...”

碰到过n个程序员,明明5分钟就搞定的事情,非得整几天才搞定,而且效果还让人无语……

呵呵,5分钟...

顶楼上,你自己知道5分钟能搞定,又嫌人家手脚不利索,怎么不自己弄呢??
0

引用来自“Jerry524”的评论

最难伺候的不是一点都不懂技术的人,而是对技术似懂非懂的人,这种人只是品尝到了技术的甜头,但是并没有体验过开发的痛处和纠结。。。

强烈赞同,不怕不懂的,也不怕超级懂的,就怕懂那么点却认为自己很懂的……
0

引用来自“sokoo”的评论

看到这个标题我就想喷,进来回复下走人,不看了

想知道您想怎么个喷法
0
其实不懂并不可怕,但是不懂还认为自己很懂,这时候就麻烦了
0
我顶
0
顶!
0
一个项目对于技术来说他们会尽量把时间估算的长一点,因为只有做技术才知道在那些环节需要更多的时间,其实一定程度来说专门测试者测试出的问题90%以上开发人员是知道的,如果你是开发者你一定会同意。一个中小型公司,开发人员同样也是测试者,ok那么他们一定会预留测试时间,那么在项目时间估算时候会报告给老大总时间是开发时间+测试时间。但是老大往往认为你时间说的太多,他会认为你这样估算的时间是每天很轻松的,那么他会压缩,他会压缩到1/3 或1/4 甚至更少,当然我的老大就是这样。晚上我要做一个ajax长轮询推送功能,第二天早上就问我结果如何,他想听到的是我完成了。ok我们老大认为10天的工作量,其实我们需要1个月,可能你或你们会说,那是我们技术不行,我承认比我们好的技术有很多,但是对于一个问题的解决在哪方面会费时间呢?我想是方案,至于编码打字速度上似乎没有太大的优势。大牛的方案似乎更非时间。
淘宝的技术团队牛逼吧,他们解决问题的速度有多快,有谁去统计过?百度的团队也牛逼吧,牛逼的团队我觉得是解决复杂度高的问题,而不是说搭建一个集群就可以半天完成。欢迎吐槽
0

引用来自“shuay”的评论

你行或者不行,直接回邮件不就好了,那些客户会找在那些天可以并且有能力做完该网站的其他团队或公司做的,可能是自己估计时间有问题吧,又或者是能力不足! 还有就是客户给的Money不能令你们满意吧,相信Money是主要原因。 :D

一个摩天大楼让你自己搞1天完成,给你10000000亿足够多了吧,可以搞定吗?
0

引用来自“≯不死の亡灵≮”的评论

本来想发给同事看看的。。。。
结果一不小心发给了经理。。。。。。。。。。

经理对你说:哎,你过来。你来单位多久了?。。。。。考虑一下去智联逛逛,上上英才吧
顶部