`
rensanning
  • 浏览: 3514918 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:37500
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:604395
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:678169
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:87329
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:399865
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69086
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:90519
社区版块
存档分类
最新评论

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

 
阅读更多
“这个网站相当简单,所有你需要做的就是完成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 ]
分享到:
评论

相关推荐

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

    不懂技术的人不要对懂技术的人说这很容易实现“这个网站相当简单,所有你需要做的就是完成X,Y,Z。你看起来应该是技术很好,所以,我相信,你不需要花费太多时间就能把它搭建起来。”我时不时的就会收到这样的  ...

    移动ip技术指南

    想了解移动I P以及用它能解决哪些问题的读者会发现很容易在本书中找到他们想要的信息, 而且非常易懂。 另外,那些想对移动I P有详细了解的读者也会在本书中发现他们想要的信息。这里,我 们列出两类读者: . 对于...

    Java语言原理与技术(原创书稿:RAR文件之二)

    我觉得很大的一个原因在于教师授课的思路并非线形的教科书思路,他把知识连贯了起来,如开始介绍类,很快就会遇到不懂的类!怎么办?查文档!怎么查?教师会当场演示,学生很容易记住!然而,看书就不是这样,因为...

    2018国家网络安全宣传周网络安全知识:这些网络安全秘籍你必须懂.doc

    免费打印照片有危害 现象: 照片打印成为部分商家"吸粉"利器,且很容易泄露用户信息,比如,扫描二维码可 能会让手机感染病毒。 建议: 干万不要见码就扫。 人脸识别也危险 现象: 在之前央视3·15晚会上,人脸识别...

    2019国家网络安全宣传周网络安全知识:这些网络安全秘籍你必须懂.docx

    免费打印照片有危害 现象: 照片打印成为部分商家"吸粉"利器,且很容易泄露用户信息,比如,扫描二维码可能会让手机感染病毒。 建议: 干万不要见码就扫。 人脸识别也危险 2019国家网络安全宣传周网络安全知识:...

    2020年国家网络安全宣传周网络安全知识:这些网络安全秘籍你必须懂.docx

    免费打印照片有危害 现象: 照片打印成为部分商家"吸粉"利器,且很容易泄露用户信息,比如,扫描二维码可能会让手机感染病毒。 2020年国家网络安全宣传周网络安全知识:这些网络安全秘籍你必须懂全文共19页,当前为...

    2018国家网络安全宣传周网络安全知识:这些网络安全秘籍你必须懂.docx

    免费打印照片有危害 现象: 照片打印成为部分商家"吸粉"利器,且很容易泄露用户信息,比如,扫描二维码可能会让手机感染病毒。 建议: 干万不要见码就扫。 人脸识别也危险 现象: 在之前央视3·15晚会上,人脸识别...

    编程宝典-代码大全2中文版(OCR识别压缩版)

    代码大全(第二版)是著名...本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论你是什么背景,阅读本书都会让你在更短的时间内、更容易地写出更好的程序。

    毕业设计:ASP网上拍卖系统设计与实现(源代码)

    良好的写代码习惯是应该在代码中加入注释,以便以后维护更新系统的时候容易让人读懂,这个缺陷的产生是因为开发时偏重速度导致的。 本系统主体上可以分为两个子模块:公共用户模块和管理者模块。 ASP提供一些内建...

    ASP.NET 通用权限管理系统_用户的分级管理实现

    等刚掌握了SQLServer,又发现自己不懂Oralce,也不懂MySql,自己写出来的程序又不兼容这些数据库,等数据库也都精通了一些,发现自己的写文档能力不行,做个像样的东西非常不容易。 这时又发现自己的设计能力...

    Java语言原理与技术(原创书稿:RAR文件之一)

    我觉得很大的一个原因在于教师授课的思路并非线形的教科书思路,他把知识连贯了起来,如开始介绍类,很快就会遇到不懂的类!怎么办?查文档!怎么查?教师会当场演示,学生很容易记住!然而,看书就不是这样,因为...

    Java语言原理与技术(原创书稿:RAR文件之四)

    我觉得很大的一个原因在于教师授课的思路并非线形的教科书思路,他把知识连贯了起来,如开始介绍类,很快就会遇到不懂的类!怎么办?查文档!怎么查?教师会当场演示,学生很容易记住!然而,看书就不是这样,因为...

    Java语言原理与技术(原创书稿:RAR文件之三)

    我觉得很大的一个原因在于教师授课的思路并非线形的教科书思路,他把知识连贯了起来,如开始介绍类,很快就会遇到不懂的类!怎么办?查文档!怎么查?教师会当场演示,学生很容易记住!然而,看书就不是这样,因为...

    Java的六大问题你都懂了吗

    通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为String对象建立之后不能再改变,所以对于每一...

    人工智能什么时候出现.docx

    强人工智能首先要"听得懂,看得懂",这就涉及了三项重要的技术,即计算机视觉技术,自然语言处理技术和语音识别技术,其分别对应着对图像的识别,对文本的编译与对人类语音的处理。百度识图、谷歌翻译、苹果的语音...

    网络安全研究.doc

    〔二〕数据加密 加密就是通过一种方式使信息变得混乱,从而使未被授权的人看不懂它。主要存在两种 主要的加密类型:私匙加密和公匙加密。 1.私匙加密。私匙加密又称对称密匙加密,因为用来加密信息的密匙就是解密...

    编译原理 东南大学 64讲 视频.txt

    从网上的评论来看,有人说学了一年半软件理论,就一门编译看不懂;有人甚至说它是大本软件课程里最难的一门;有人抱怨国内的编译教材没有一本容易懂的。 从笔者学习实践来看,第一次学了一个多月,理论部分一知半解,第二次...

    电子设计初学者如何入门.docx

    电子终究是一门实践的技术,找到机会去实践才是不断进步的前提,学会单片机,你就可能比普通人更容易接触老师的项目,更容易参加学科竞赛,从而开始自己的积累,不断进步。 学生能接触到的主流单片机主要包括8位的51...

    中医药与大数据.docx

    大数据就是互联网发展到现今阶段的一种表象或特征而已,没有必要神话它或对它保持敬畏之心,在以云计算为代表的技术创新大幕的衬托下,这些原本很难收集和使用的数据开始容易被利用起来了,通过各行各业的不断创新...

Global site tag (gtag.js) - Google Analytics