重磅推荐:10年技术力作:《高性能Linux服务器构建实战Ⅱ》全网发行,附试读章节和全书实例源码下载!

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

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

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

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

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

我们来想想观看一个人弹吉他。即使你从来没有弹过吉他,在观看了一场弹奏《祝你生日快乐》的吉他表演后,你也能大概推测出这很简单,一个人不需要太高的技术就能演奏出来。同样,当观看了有人演《卡农》后,你也很容易推测出,这很复杂,需要很长时间的练习才能演奏的出来。

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

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

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

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

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

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

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

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

不懂技术的人请不要对懂技术的人说这很容易相关推荐

  1. 产品经理需不需要懂技术

    看到这个问题的第一时间,我就想到了在高中学习<我为什么而活着>时,语文老师给我们介绍罗素的场景:英国哲学家.数学家.逻辑学家.历史学家.文学家,分析哲学的主要创始人,世界和平运动的倡导者和 ...

  2. 跟幼师谈恋爱什么梗_和懂你的人谈恋爱,比“秋天的第一杯奶茶”要甜

    这两天"秋天的第一杯奶茶"梗,莫名奇妙就火了,冲上了微博热搜,朋友圈也被疯狂刷屏. 很多人是不是和我一样,第一眼看见脑袋里浮现的全是问号? 所以#秋天的第一杯奶茶#究竟是什么梗? ...

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

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

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

    刚刚看了一篇文章,深感共鸣,把内容转载过来. 原文地址 下面是文章的内容: "这个网站相当简单,所有你需要做的就是完成X,Y,Z.你看起来应该是技术很好,所以,我相信,你不需要花费太多时间就 ...

  5. 世界上有10种人,一种懂二进制的,另一种不懂

    前一段时间看到网上有个笑话--世界上有10种人,一种懂二进制的,另一种不懂,这时有人问这不是才2种人吗? 哈哈哈不知你反应过来了吗?这个笑话也侧面反映了理解二进制系统的重要性,请细读下文,待我一步步揭 ...

  6. 技术人请跳出惯性思维

    经过10年的技术之路,思维也渐渐的成熟起来,从业以来在技术水平慢慢提升的同时,思维也较之以前有比较大的提升.从一个什么都不懂的小白,成长为可以做一些事情.做一些工作的员工. 文章开头我们先把一个概念说 ...

  7. 真正懂车的人从来不看车评,看车评的都是不懂车的人

    如标题所言,真正懂车的人是从来不看车评的.为什么?很简单,车评文章大部分都是水分.一辆汽车,如果单凭一些溢美之词就能说明是好车,那厂商可以去开家杂志社就好了. 网络社会信息不实.标题党瞎胡扯很正常.汽 ...

  8. IT 行业产品经理(尤其是创业的)需要懂技术吗?

    最近七年,我都在做互联网产品,其中前五年分别在创业公司和上市公司里,做别人的产品:近两年在创业,做自己的产品. 我的体会是:产品经理需要懂技术,创业者尤其需要.但前提是你总觉得有股憋不住的想要做点儿什 ...

  9. 网易北航搞了个奇怪研究:多数人类看不懂的立体图,AI现在看懂了

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 小时候,有没有玩过一个叫做立体图游戏. 就是那种给你一张二维图,让你看图背后有啥东西. 比如,像这张图. 这其实是一张六角星. 在比如这张. ...

最新文章

  1. 由Node.js事件驱动模型引发的思考
  2. mysql 事务_MySQL事务
  3. java集合详解_Map、Set、List及其子类和接口你都明白吗?看这篇Java集合超详解
  4. 如何给mac地址赋值_交换机工作基础——MAC地址表的构成与安全
  5. XILINX FPGA数字信号处理——2、数字信号处理实现方法
  6. 锐捷云终端计算机,锐捷RG-RCM1000-Office智能云终端控制器
  7. 高效记忆/形象记忆(13)110数字编码表 71-80
  8. PHP:解析url和查询参数query
  9. 苹果cms后台登录验证码错误或显示不出来解决方法
  10. 三星董事长去世享年78岁,临终前最为遗憾的一件事
  11. linux让grep带颜色,在linux下给grep命令添加颜色
  12. excel打不开html超链接,mac excel打不开超链接
  13. 使用‘终端’融合磁盘然后进行MAC重装系统
  14. TikTok搬运视频怎么做,搬运怎样的视频最好
  15. php 返回英文乱码,使用php 5时MySQL返回乱码的解决办法_php
  16. 影视广告创意与制作(四)
  17. (转载)BOX2D V2.3.0 用户手册中文版(第8章)-关节
  18. 精诚CRMPM系统应该要有哪些销售功能
  19. 百度服务器自动重启,百度云服务器重启的两种方法介绍
  20. 28 岁程序员身价过亿,选择退休东渡日本

热门文章

  1. Oracle数据文件转移
  2. SDNU 1209.磊磊的随机数
  3. ORACLE同步数据库之,自动生成sequence 文件
  4. C++格式化输入输出
  5. WebService注解
  6. memcahce 介绍以及安装以及扩展的安装
  7. 批量替换sqlserver数据库TEXT字段类型的数据
  8. Android 天气预报源码
  9. Oracle 11.2.0.1 升级到 11.2.0.3 示例
  10. Qt中不规则窗体和部件的实现