首页>>新闻>>真正的软件开发思维

真正的软件开发思维

19-12-11

    关于软件你需要记住的最重要的事情是

没有魔法

    软件100%和魔法无关(虽然我们说它有很多创造性的手段!)。你看到的每一个行为,你运行的每一个效果,它之所以发生只是因为一些代码使之发生的缘故,而且总是能够跟踪那些代码。

    当然,这并不意味着跟踪总是有用的。有时候你需要知道,有事情发生和它为什么发生并不真的相关。这导致我们陷入了下面的困境:

松鼠综合症

    在你深入研究的时候,你会发现软件充满了无穷级数的干扰和如同鼠穴一般错综复杂的走向。如果你放纵内心想像松鼠一样囤货的欲望,你固然可以学到很多东西,但如果你能退一步,每隔一段时间问问自己是否真的需要探索这条特殊的鼠洞,那么你能收获更多。尝试停留在一个小的范围内可以帮助你达到

领域

    软件是极其复杂的,复杂到足以让我们定期创建出没有人能一次性明白的代码。我们通过更小和更独立的部分,通过定义各部分之间的接口来构建软件,实现其复杂。这样一来,如果你能在你的脑中适应更小的一部分,那工作于那个块和相信其他部分正常的时候多少更安全一点(至少当一切顺利的时候)。

    完全获取哪怕更小的块中的一个到你的头脑中也可以是很难的,但与此同时,你可以做到一些诸如只知道你正在看的代码行是错误的,以及如何修复这样的事情。那就是软件的领域了。这非常重要,并非因为你全力以赴,而是因为如果你没有身处那个领域,那么想要做对一切事情几乎是不可能的。而这给我们带来的是

中断

    中断使得你脑中丢弃了一些来之不易的内容,从而阻碍你完成任何事情。十分钟的中断当然杀不光所有:但是它需要45分钟才能让你的脑子回到你中断的地方。

    这可能是有关软件工作最难向人们解释的事情——尽管大多数领域都有这样的事情,但没有我们这么悲剧。发生差异的部分原因是

直觉失败

    许多我们认为的“直觉”的确有效利用了我们大脑中的结构——历经超过百万年进化,已经变得高度优化——来帮助我们管理我们周围物理世界的复杂性。但是,从事电脑工作并不是我们周围物理世界的一部分:我的笔记本电脑创建了她自己的世界延伸,而我必须去这个延伸的世界工作。

    软件工程的力量在于那个世界的扩展是非常非常具有可塑性的——这力量是惊人的。不过,诅咒之一就是由于我们不再工作于物理世界,我们的直觉就不再有用,这让一切都变得很难理解,除非我们做一些额外的工作来确保我们的直觉可以帮助我们。

时间是不可思议的

    现在的时代计算机的运行是极其快速的。即使你手机运行的时间尺度比我们的大脑快十亿倍:一秒时间传递给我们就像过了31年,不论是给予还是获取,仅仅一个传递过程。这意味着我们不能实时观看计算机正在做什么。

    相反,我们不得不发明方法强制机器来匹配我们极其缓慢的步伐,通常为要求计算机等我们,或记住它正在做的一切事情且留下日志可供我们稍后读取。当然,这些技术是如此地拖累事情的发展,以致于任何与时间相关的问题通常都会消失,或者至少看起来不同。

    极端的话,我们最终还是盲人摸象,一点也不知道为什么代码之所以脱离轨道。为了避免出现这种情况,我们不得不做一些真正的事情来安排代码向我们解释其决定。这工作往往很难且没有吸引力——但它至关重要,因为受到了以下定律的重大影响

墨菲定律

    在计算机运算中,墨菲定律可以重新表述为“如果你不能证明它是不可能的,那么它一定会发生——而且往往很快。”还记得十亿分之一的加速吗?如果你一秒内做十亿次操作,且每次99.99999%%可靠,那么你会发现每秒出现了100个故障。

    我们对于概率和机会的认知已经根深蒂固:“不太可能”真正的含义是“在我思考的时间里可能不一定“。彻底地改变时间尺度,那么所有都将改变。

原罪

    即使没有改变,然而,故障仍然是一个问题,因为每次你写代码,你就会写bug。这是一个真理。不管你多么高级,不管你多么优秀,不管什么,不管怎么样,你无法写出完美的代码。这是人性的一个特点。

    所以你不能避免写出bug。但是你可以明智地减少bug。


   网站建设知识>>

如何知道一个网站用什么语言开发的?

制作一个企业网站流程是怎样的

   app开发知识>>

郑州APP开发,定制软件与套用模板哪个好?

造出App开发费用差异的原因是什么

   运营服务>>

颠翻互联网的关键词之——用户体验

社群快速拉新小妙招,一般人我不告诉他!