欢迎来到IT培训在线!
软件培训机构信任网站
400-0667-76724小时咨询服务热线
您当前位置: 主页 > 行业动态 >

程序员说的“这个需求我做不了”是真的还是假的?

2018-03-12 18:11看过

很多人不了解程序员的世界,当程序员告诉他们一个需求不能做的时候,很多人会认为这是故意的:“这么简单的要求,不能做对了?”但事实上,门外汉就是门外汉,一个看似简单的要求,却很难实现。本文编译自问答社区 quora 问题“As a non-programmer, how can I tell whether time estimates and comments like, "we can't do that" are true/accurate?”下的回答,作者 Stan Hanks。

普通人很难理解软件开发的复杂程度。“你只是告诉计算机该做什么,对吧?那能有多难”?

虽然这看起来不是很难,但是……电脑完全缺乏人们所描述的知识框架。拿个简单的事情举例,“给我一个火腿三明治”。你可以很快地联想到,我实际上是指“去厨房,做一个火腿三明治,把它带到我面前”,或者“沿着街道去熟食店,买一个火腿三明治,然后带回来给我”,根据我们所处的现实环境和过往经验,你不难做出如此判断。

场景切换到厨房,你会进一步地思考:打开冰箱,找到火腿,特定的奶酪,特定的酱料,几片面包,接着你整理所有的东西,并把剩余的材料放回原处。再然后,你需要找到盘子,把组合好的三明治放在盘子里。如果你是个细致入微的人,你会发现我跳过了一大堆细节步骤,比如:要放多少酱,放多少片火腿,别忘了取下奶酪片的塑料包装……甚至更深刻的问题,怎样才算做好一个三明治,火腿又该是什么样的才行……

作为人类,我们可以在繁复的背景和细微的生活中做出判断,而在编写计算机程序时,如果你跳过那些微小的步骤,计算机要么是做错事,要么就是根本做不出来。

不了解编程的普罗大众会向程序员发出请求:“您可以让这个窗口变大些吗?”,“您能使备忘录的文件按照字母顺序排列吗”?直观感受使你觉得这些事轻而易举,那么问题究竟是什么呢?

问题是,负责这个任务的程序员有多重复杂性需要面对。当然,他们不会亲自编写所有的代码,他们会使用一个数据库(网罗其他人编写的各种代码,用来解决常见问题,通常是免费的)。通常情况下,这可能涉及多个库的使用问题,因为他们之间存在着各种相关、不相关的依赖关系。

所以当你说发出请求的时候,程序员可能会想到:“嗯,这很容易,应该存在合适的库,而数据库中会有需要的数据”。他们会相当乐观地估计出所需要的时间。

然而,只有当他们真正开始解决问题时,一个或多个错误的假设便浮现出来了。可能是数据库中并没有合适的代码,可能是他们认为可以使用的数据已经被弃用,也可能是好不容易找到的方案无法匹配当前的版本……而如果核心假设都被证实是错误的,那么显然这将会困难更多。正式开始前,这些假设看起来都是有理有据,只有当你真正着手操作,问题才开始接踵而至。

我接触过的最优秀的程序员会在一开始就对问题进行全面的评估,经验告诉他们,看起来再简单的事情,平静的海底下依然可能暗潮涌动。

没有经验的程序员往往对自己的能力很有信心,而且很容易做出积极的回应或承诺:“是的,这个问题可以在一周内解决。”但有时他们没有足够的预算或足够的时间。但不要太沮丧或自满。如果你有无限的时间和金钱,那么软件开发就没有什么可做的了。

计算机培训网提示您:请勿直接向任何电脑培训学校转账付款,需了解完学校情况再做打算!