刚刚看了一篇文章,深感共鸣,把内容转载过来。

  原文地址

下面是文章的内容:

“这个网站相当简单,所有你需要做的就是完成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 ]

转载于:https://www.cnblogs.com/fengh/p/4227954.html

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

  1. 创业产品经理需要懂技术吗?

    作为一位工程师,和一位在不断追求更好产品的设计人员.个人认为,产品经理最好是这样的: 一. 精通技术.技术很容易框住人的思想,要不特别精通,能随时跳出技术的束缚,带给产品真正的提升.一般这种产品经理会 ...

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

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

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

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

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

    重磅推荐:10年技术力作:<高性能Linux服务器构建实战Ⅱ>全网发行,附试读章节和全书实例源码下载! "这个网站相当简单,所有你需要做的就是完成X,Y,Z.你看起来应该是技术很 ...

  5. 实时社群技术专题(一):支持百万人超级群聊,一文读懂社群产品Discord

    本文由腾讯产品体验设计师volihuang分享,原题"千万级增长,实时社交产品Discord拆解",本文收录时有内容修订和大量排版优化. 1.引言 对于大多数人而言,对即时通讯IM ...

  6. 产品经理懂技术=流氓会武术(zz)

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

  7. 项目经理有必要学python吗_项目经理到底要不要懂技术

    关于这个问题,我想开门见山地说一句,需要,而且非常需要. 当然有同学就会说了,项目经理懂技术会被技术所束缚,无法跳出技术角度来看待项目整体. 还有同学会说,现在是团队配合时代,各领域专精,要把专业的事 ...

  8. 售前不需要懂技术?看看售前能力全景蓝图,别吃惊

    有朋友说他技术一点不懂,如何做好售前? 这个问题有意思,很好! 同时,在解决方案销售与售前咨询领域奋斗十多年,无论售前萌新还是老司机都会问我一个问题,售前到底需要什么能力!? 这个问题我回答过N次,至 ...

  9. 项目经理需要懂技术吗?

    只能说非常的需要吧,因为如果你不懂点技术,管理起来也挺麻烦的,一是跟技术没有共同语言,影响效率,二是在一些突然状况下能够用到,比如团队技术离职?病假?这个时候就能勉强的顶替一下,不至于大幅度拖延项目时 ...

最新文章

  1. oracle字符集查看、修改、版本查看
  2. zigbee是什么,为什么说它最适合智能家居设备
  3. C++(STL):35---multimap容器
  4. 中科院自动化所与华为联合提出!视觉目标检测大模型GAIA
  5. text html artemplete,artTemplate前端模板引擎使用说明
  6. Oracle使用IN 不能超过1000问题
  7. 【Luogu4921】情侣?给我烧了!(组合计数)
  8. 《制造业中的机器人、自动化和系统集成》—— 3.5 工装与夹具
  9. 霍夫变换(Hough Transformation)基本思想及MATLAB相关函数
  10. ECharts 打造在线个人简历
  11. 自制StartUp宏病毒专杀小工具
  12. unity Debug.DrawLine画线
  13. OCAD应用:双高斯照相物镜半部结构设计
  14. java 图片相似搜索_java获取两张图片的相似度
  15. 中文正则字符大全集2
  16. 哈希表及其冲突与排解
  17. 信息学奥赛一本通T1453:移动玩具
  18. 进程的状态和转换 三态模型和五态模型
  19. 思科路由器PPOE client+NAT解决地址回流问题测试
  20. IT咨询助ERP用户跨越鸿沟(转)

热门文章

  1. cc攻击防御解决方法
  2. 回合制游戏对战AI制作请重视这两个难点
  3. Linux netcat/nc 网络利器!
  4. JZOJ 1319 邮递员
  5. 2023 HBU 天梯赛第一次测试 题目集
  6. 深入学习java源码之 Arrays.sort()与Arrays.parallelPrefix()
  7. “刷榜客”-- 手机木马Google Play恶意刷榜
  8. mysql怎么把行名称替换_mysql中替换行首字符
  9. 计算机趣味知识竞赛题库,2019年趣味知识竞赛试题题库及答案
  10. 计算机发展史上的趣事,历史原来这么有趣,盘点史上的逸闻趣事