架构师米洛:不懂技术的人不要对懂技术的人说这很容易实现

这是一篇很好的文章。在IT滚了好多年的我,面对非技术人员的催问,这东西做起来难不难的时候,如果我做过我会告诉这东西不难。如果我没做过,我不会说什么,可是这根本满足不了非技术人的好奇心。

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

我时不时的就会收到这样的Email。写这些邮件的人几乎都是跟软件开发技术不沾边的人,或正在研究他们的第一个产品。

起初,当听到人们这样的话,我总是十分的恼怒。他们在跟谁辩论软件开发所需要的时间?但后来我意识到,即使我自己对自己的项目预测要花去多少开发时间,我也是一筹莫展。如果连我自己都做不好,我何必对那些人恼怒呢?

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

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

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

我们来想想观看一个人弹吉他。即使你从来没有弹过吉他,在观看了一场弹奏《玛丽有只小羊羔(Mary had a Little Lamb)》的吉他表演后,你也能大概推测出这很简单,一个人不需要太高的技术就能演奏出来。

同样,当观看了有人演奏D大调的《卡农 (Pachabel’s Canon)》后,你也很容易推测出,这很复杂,需要很长时间的练习才能演奏的出来。

为什么我们能够很迅速准确的预估这两首曲子的复杂性呢?这是跟我们用来判断一个事情简单和还是复杂的方法有关的。我们的大脑有一些现成的模式来完成这些事情,首先一个就是根据速度。这种情况下,大脑会辨别每秒钟演奏的东西。根据每秒钟演奏了多少东西,我们很容易有一个直观的判断曲子的复杂度。

因为用吉他演奏一首歌是一种物理过程,一种感官上的活动,我们的大脑很容易依此来推测速度,继而转换成复杂度。

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

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

现在让我们来谈谈软件。当一个不懂技术的人试图对软件开发时间进行评估时,有两个很基本的直观指标在辅助他们:以体积为指标的复杂度和以速度为指标的复杂度。

但他们没有意识到,软件跟他们想象的不一样。软件本质上不是有形物质。没有体积和速度。它的极小的组成部分可能会时不时的在电脑屏幕上闪现。正 因为如此,当面对开发一个web应用时(或任何类型的软件),我们的基本直观感觉失效了。

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

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

不幸的是,对于软件的复杂度,唯一有效的推测方法是依据经验。而且还不是时时都好用。作为一个程序员,我知道,根据我之前开发过的相似的功能特征,我可以估计出现在的这些功能特征各自要多少开发时间。然后,我把总时间加起来,这就得到了完成整个项目需要的大致时间。

然而,事实情况中,每个项目在开发过程中都遇到二、三个瓶颈。这些瓶颈会肆意的消耗程序员的大量时间,你在遇到它们之前根本不会有所预见。它们会拖住整个项目,致使工期 延后数周甚至数月。

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

那么问题来了,你面对这个问题的时候,一贯做法是什么样的?

我是架构师米洛,奋战在一线的产品和技术经理,助你更加值钱。觉得文章有用,请点转载,赠人玫瑰,手有余香。

时间: 2025-01-02 01:37:43

架构师米洛:不懂技术的人不要对懂技术的人说这很容易实现的相关文章

架构师米洛:不会汇报工作的员工不是好员工

人在职场,汇报工作是经常做的事情.汇报工作通常发生在上下级,那么,汇报的好坏直接影响领导对你个人的评价,那么,你知道领导眼中会汇报工作的好员工和差员工是怎么样的么? 好员工:汇报工作说结果,请示工作说方案,总结工作说流程,布置工作说标准,关心下级问过程,交接工作讲道德,回忆工作说感受. 差员工:汇报工作讲过程,请示工作没头绪,总结工作吹结果,布置工作说感受,关心下级问私事,交接工作多阻碍,回忆工作全报怨. 汇报工作:好员工讲结果,差员工说过程.领导们一般很忙,他不需要知道大量的细节,他需要的是一

架构师米洛:你不经意的职场坏姿势会损坏你的身体

老祖宗经常教育我们:要站如松坐如钟.培养正确的身体姿势,会让你更有气质笔挺站立,你会显得更高挑. 同时姿势还会影响别人对你的看法,肩膀挺直坐着的人,看上去放松而且充满自信,瘫坐在椅子上的人看起来懒散.冷淡.有距离感.职场上坐姿端正的人总会让人感觉更加有气派. 好姿势可以提升骨骼健康当你瘫坐时,多余的压力都集中在脖子和脊椎上,时间久了,可能产生轻微的背部疼痛:不良的走姿.跑姿容易使关节磨损,脊椎也会因此受到来自四面八方的"坏压力",从而压迫神经和血管. 好姿势能让内脏"松口气&

架构师米洛:如何让你的同事对你越来越好

人在江湖漂,哪有不挨刀.如果天天都挨刀,那就不好了. 职场也遵守一个丛林法则,大家抱团取暖,在这个小天地里谋生活.从理论上来说,我们不可能获得所有同事的喜欢,但是,获得一些同事的支持也并不是难事. 俗话说,一个好汉三个帮,一个篱笆三个桩,千万不要小看了与同事的关系处理,这可是一门大学问. 就拿程序员和测试MM来说吧,很多人都知道,一般测试MM的脑回路比较短,而且技术上一般没有开发人员强,所以呢,提问题的时候,难免会比较直接.网络上盛传的报BUG的礼仪,不知道你看到没?咱们来看看 请不要对一个程序

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

不懂技术的人不要对懂技术的人说这很容易实现 这个网站相当简单,所有你需要做的就是完成X,Y,Z.你看起来应该是技术很好,所以,我相信,你不需要花费太多时间就能把它搭建起来. 我时不时的就会收到这样的Email.写这些邮件的人几乎都是跟技术不沾边的人,或正在研究他们的第一个产品.起初,当听到人们这样的话,我总是十分的恼怒.他们在跟谁辩论软件开发所需要的时间?但后来我意识到,即使我自己对自己的项目预测要花去多少开发时间,我也是一筹莫展.如果连我自己都做不好,我何必对那些人恼怒呢? 真正让我郁闷的不是

大数据架构师基础:hadoop家族,Cloudera产品系列等各种技术

大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来.为了能够更好的架构大数据项目,这里整理一下,供技术人员,项目经理,架构师选择合适的技术,了解大数据各种技术之间的关系,选择合适的语言. 我们可以带着下面问题来阅读本文章: 1.hadoop都包含什么技术 2.Cloudera公司与hadoop的关系是什么,都有什么产品,产品有什么特性 3. Spark与hadoop的关联是什么? 4. Storm与hadoop的关联是什么

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

我时不时的就会收到这样的Email.写这些邮件的人几乎都是跟技术不沾边的人,或正在研究他们的第一个产品.起初,当听到人们这样的话,我总是十分的恼怒.他们在跟谁辩论软件开发所需要的时间?但后来我意识到,即使我自己对自己的项目预测要花去多少开发时间,我也是一筹莫展.如果连我自己都做不好,我何必对那些人恼怒呢? 真正让我郁闷的不是他们预估的错误.问题在于他们竟然认为自己可以做出正确的估计.作为开发人员,我们经常会发现,在软件开发的问题上,一个外行人会很自然的把复杂的事情估计的很简单. 这并不是为我们的

专访京东孙海波:大牛架构师养成记及电商供应链中区块链技术的应用(转)

http://geek.csdn.net/news/detail/237595 编者按:每个人的成长曲线不同,有的人在研究生之时就已有相当知名的产品和框架,从而在接下来的工作中一路顺风顺水,有的人缺需要经历一个又一个的坑才能成长,不管是前者的聪明高效,还是后者的笨鸟先飞,他们都是在迈着脚步不断地向前.不妨,我们停下脚步看下一些同行,以激励自己更好地前行.CSDN与你相约SDCC 2017之区块链技术实战线上峰会. 2017年9月23日,SDCC 2017之区块链技术实战线上峰会即将强势来袭,本次

三年成为年薪70w架构师,只因做到了这些。果然不是一般人

每个程序员.或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来.今天给大家分享的是一篇来自阿里Java架构师对普通程序员的职业建议,希望对你有启发. 普通程序员,三年成为年薪70w架构师,只因做到了这些 程序员的三个阶段 第一阶段---三年 我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发.我们知道如何团队协作.如何

米洛杂谈:说说程序员不解风情的瞬间

程序员是一个相对单纯的群体,对于男女这方面有的人真的比较缺失,那么,就让我们看看程序员的另一半总结的那些瞬间,如果你有另一半,一定要涨涨经验哦. 1. 化完妆问他:"我漂不漂亮?"他说:"亲爱的,闭眼别动."我羞涩地闭上眼等待他的kiss,结果他说:"这里有个脏东西."然后撕下了我的双眼皮贴.. 2.感冒了很难受,我闷在被窝里给男朋友发短信"我感冒了"并决定如果对方回答"多喝点水"就一脚踹了他.过一会儿手机