`
丁丁丁
  • 浏览: 7889 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何反驳:这很容易实现!!!

 
阅读更多

为什么我们天生的预测复杂性的能力在遇到编程问题时会失灵?

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

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

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

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

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

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

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

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

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

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

分享到:
评论

相关推荐

    安顺2016年事业编招聘考试真题及答案解析整理版(1).docx

    - 反驳:有些严重的疾病在早期阶段就有容易被医生察觉的症状,尽管病人并未意识到问题的存在。这意味着即使没有明显症状,定期的医疗检查仍然很重要,可以帮助早期发现潜在的健康问题。 ### 13. 词语关系推理题 ##...

    万山特2020年事业编招聘考试真题及答案解析网友整理版.docx

    河流中上游地区地势较高,不容易发生洪涝灾害。洪涝灾害的破坏力确实会随着时间的推移而累积,造成更大的危害。 - **答案**:D ### 知识点9:市场供需分析 #### 示例10:商品市场的变化 **题目**:“高油价时代,...

    逻辑推理题精选300道详解_Password_Removed(1).pdf

    - **例题解析**:选项D“做广告最多的公司销量也最大”直接反驳了题目中的观点,因为它表明消费者实际上很容易受到广告的影响,从而选择那些广告宣传最多的产品。 #### 推理与逻辑关系 - **知识点概述**:本题考察...

    专题讲座2021-2022年人际交往的心理战术对人处事的心理战术防守攻击战.doc

    1. **小事让步术**:在处理重要事务时,对一些无关紧要的小事作出让步,可以换取对方在关键问题上的合作,从而实现整体利益的最大化。 2. **比下有余术**:当面临不满或抱怨时,提醒他人还有更糟糕的情况,可以帮助...

    软件工程选择题汇总.pdf

    19. **Jackson 方法**:这是一种面向数据结构的设计方法,用于详细设计阶段。 20. **PDL**:伪码(Pseudo Code)是一种类似于自然语言的编程描述,用于描述软件设计。 21. **软件测试**:单元测试首先进行,然后是...

    小学学困生辅导经验交流材料.doc

    1. 自卑心理:后进生往往因成绩不佳而产生自我否定感,他们缺乏自信,这源于周围环境(如教师和同学)的冷落或嘲笑。这种自卑感会阻碍他们的学习动力,导致进一步的成绩下滑。 2. 对立逆反情绪:后进生可能对帮助和...

    广东省中山市古镇高级中学2012届高三语文 早读练习(16) 新人教版

    4. **成语使用正误**:A项“唾手可得”形容很容易得到,与句中“实现朝鲜半岛无核化”这一复杂过程不符;B项“片言识语”是指简洁的话语,与“意味深长”搭配不当,应改为“言简意赅”;C项“脱颖而出”用于个人能力...

    2012职称英语+精选词汇表

    - **解析:** “argue”指通过提出论据来支持自己的观点或反驳他人的观点。例如:“They argued about the best way to solve the problem.”(他们就解决问题的最佳方式进行了争论。) ##### 3. **at any price**...

    网络使人更亲近_1.docx

    - **正面社会影响**:通过网络,人们能够更容易地了解到他人的困难,并伸出援手,从而增强了社会凝聚力和个人间的联系。 #### 攻辩环节分析 ##### 亲近方式的探讨 - 对方辩友提出的问题试图探讨除了网络之外,还有...

    pro-java-argument:反对http

    此外,我曾经读过一篇文章讨论(不是证明,样本量只有 20 个),那些更容易抱怨而不是仅仅找到实现目标的方法的人不太可能成为优秀的问题解决者( )。 相关性不是因果关系,我也不是指责 Jonathan Gardner 过分...

    pythonchallenge level2官方方法集

    虽然这种方式非常慢,但它很容易理解,这可能是在教学或概念验证阶段使用的一种方法,强调了理解和学习的重要性。 #### 34. A shorter solution using filter() 使用`filter()`函数的更短解决方案,这反映了Python...

    农安事业编招聘2019年考试真题及答案解析网友整理版.docx

    实验结果显示,群体决策可能更倾向于冒险,这可能是由于责任分摊效应,使得个体在群体中更容易接受较高的风险。 6. 游戏与认知能力的研究表明,适度的游戏活动,特别是那些需要身体动作的体感游戏,可以提高儿童的...

Global site tag (gtag.js) - Google Analytics