• 不懂技术的人不要对懂技术的人说这很容易实现
    时间:2012-05-08   作者:外刊IT评论   出处:aqee.net

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    网友留言/评论

    我要留言/评论

    相关文章

    RFC 6585发布,新增4个 HTTP 状态码:RFC 6585 最近刚刚发布,该文档描述了 4 个新的 HTTP 状态码。
    通天塔导游(TourDeBabel) - 关于程序设计语言的精彩评论:译注:圣经记载:在远古的时候,人类都使用一种语言,全世界的人决定一起造一座通天的塔,就是巴别塔,后来被上帝知道了,上帝就让人们使用不同的语言,这个塔就没能造起来。 巴别塔不建自毁,与其说上帝的分化将人类的语言复杂化,不如说是人类自身心灵和谐不再的分崩离析。之所以后来有了翻译,不仅是为了加强人类之间的交流,更寄达了一种愿望,希望能以此消除人际的隔阂,获求来自心灵的和谐及慰藉。真正的译者,把握血脉,抚平创痕,通传天籁,开启心门。
    正在改变世界的硅谷创业趋势:如果你对云计算应用的理解还停留在同步和共享个人私密文档的层面上,那么你可能会错过很多正在发生的激动人心的变化。
    创业公司如何确定技术路线:首先要说的是,我认为创业公司的技术路线选择并不是一个技术问题。如果是一个纯粹的技术问题,那么很可能会一直争论不休,最后的结果就像某个笑话里面说的,某公司一直到倒闭技术路线还没统一。因此,本文不会向你推荐任何一个具体的技术方案。
    体验经济:互联网生存的秘密:作者以四个互联网创新的小故事诠释了做互联网产品的秘诀:多想想怎样才能让产品有趣。下面四个小故事,能帮你一窥互联网生存的小秘密。
    28 个最新炫酷的 404 错误页面创意设计欣赏:“404错误”是指在服务器找不到指定的页面,如果网站的404错误页面都是IIS或APACHE默认的页面,会显得非常单调。虽然404错误页面很少被用户看到(或者至少按计划是这样),但用户总可能会输入错误网址,或试图在网站上找不存在的页面等等。
    王淮在 Facebook 的十点经验总结:我是2007年初加入Facebook, 那时大概150人; 2011年9月底离开, 当时3200多人. 经历了很多稀奇古怪但影响很大的项目, 像Application Platform, Social Ads, News Feed, Gift Shop, Facebook Credits等等. 碰到的很多的问题都是全新的, 规模是互联网历史上最大的. 当时的心惊肉跳现在回想起来是很让人怀念的旧时光. 到我离开Facebook的时候, 我负责支付安全和工具研发部门还有部分的支付后台研发组.
    开发者分享首次制作iPhone游戏的5点收获:过去几周我都处于沉寂状态,忙于自己首款iPhone游戏的收尾工作——现在我回来了,因为游戏最终入驻App Store平台。
    关注不是“求”来的 - 谈微博营销:编者按:本文由 Human Business Works的主席Chris Brogan撰写。在文中,Chris详述了自己被无数人“求转发求扩散”的经历,披露了这种微博营销模式的弊病,并分享了自己做媒体的心得:即他是怎样获得关注,并持续获得关注的。
    揭秘快速提升alexa排名的18种有效方法(全文):如果想要提高Alexa排名,最重要的一条就是提供质量高的内容,广泛推广,提高网站访问量。另外还有一些技巧,对快速提高alexa具有一定作用,都是经过不少网站站长测试过的。