美文网首页
编程给我带来了什么?

编程给我带来了什么?

作者: 八戒程序猿 | 来源:发表于2017-08-12 08:10 被阅读0次

原文:http://www.jianshu.com/u/511ccb5a2012

文章目录

为什么写这篇文章?

程序设计过程

程序编码过程

程序测试过程

1

为什么写这篇文章?

我发现 很多程序员都不想做一辈子的程序员,包括我周围的程序员朋友也跟我说 当他看到公司来了一名四十多岁的程序员时,他心情是焦虑的,因为他不想自己四十多岁了还坐在电脑面前写代码。

听了之后,我不知道该怎么接?

这种想法会产生一个阻力,这个阻力会阻碍我们成为更优秀的程序员。当然这种想法或许已经透漏出 成为优秀的程序员 已经没有诱惑力了。

那么,既然没有诱惑力,为何你还在苦逼编程?

我写这篇文章并不是希望你转行,而是想说 其实编程不仅仅是编程。

不管从事什么行业,也不管学的什么专业,其实它们之间都是互通的。

例如编程,不要只看编程本身,看到更多的应该是在编程过程中如何提升我们的认知的。或者 如何通过编程来提升我们的认知?

根据芒格的格栅理论,我认为就是所谓的跨界学习。也就是说 不同的专业学术,都有它的思想理念,掌握这些思想理念,将其纳入自己的思维格栅中,它能帮助我们在多个维度来分析问题,从而作出更理性的决策。

我目前差不多近三年的编程经验了(不多也不少吧),下面我分享一下 编程给我带来了哪些思维上的提升。

2

程序设计过程

在一开始程序编写过程也许不存在设计过程。但慢慢会发现 如果没有良好的设计,程序在未来维护起来是很困难的。

甚至不需要等到维护阶段,在测试过程中 就会发现各种偶然性问题,偶然性问题的根本原因不是出自偶然,而是程序流程混乱导致的。

想到这种问题的根本原因在于:

一种思维模式:

程序的一种特征是 指定一个输入 必然会有一个对应的输出。程序是单纯的。

所以 一个错误的输出 肯定来源于一个错误的输入。

而程序又是一段一个接一个的执行过程,所以错误的输出 肯定是因为这个流程中出了问题。

这种思维方式对我们测试程序很有帮助。

这应该算是一种看待世界的方式既:

如果要解决问题 就要找到问题的根本原因。

就像我们分析源码的目的一样,“知其然 也要知其所以然”,相信所有事物运转正常都有它内在原理。

偶然性问题也许是因为:

它也许不是真的能工作

你依靠的边界条件也许只是一个偶然,在不同情形下 它的表现可能就会不同

也许你都不知道它为什么能工作

...

解决偶然性问题的方法就是在编码之前做好程序的设计工作。

主要设计包括:

程序结构设计

这种设计 可以提升我们的抽象思维。

这种结构设计 就是我们经常说到的 模块化、组件化等架构相关的内容。

它需要我们将一个复杂的东西 拆分成具体可实施的小模块。

这也是一种思维模式:

将复杂问题 分解成多个可解决的问题。

这种思维模式同样也可以运用在其它领域。

如何运用的呢?

碰到一个难解的问题,就试着分解这个问题,分解到具体可以实施的地步,再一个一个的解决。

模块化、组件化等架构设计的目的是为了解藕。解藕的目的是便于管理。

这种思维模式可以运用到管理中,就是我们经常见到的 各司其职。

上到国家管理 下到公司的管理,都是如此。

程序流程设计

简单来说 就是如何让程序跑起来正常、可控。

首先就是如何保证正常,比如:处理同步异步问题的方法。

让整个流程是正常的,也就是上面所说的 非偶然性的正确输出。

可控,在以后新增、更改需求也能保证流程正常。

这里就涉及到了各种设计模式,以及一些编程语言

(很多编程语言之所以能提升效率 我认为就是它的设计能让程序更加可控,例如:函数式编程里函数作为一等公民,可以像普通变量一样传递,让我们省心去设计一些复杂的东西,因为每多写一行代码 可能就会多一个bug)

在其它领域中的应用:

比如:工厂的流水线设计、各种流程手续的办理等。

正常 就类似于 流水线能够正常运转;

可控 就类似于 在流水线中间加入一个环节或者减少一个环节 不会干扰到其它环节。

3

程序编码过程

有了设计过程,编码过程就应该是按照设计合约来完成的。当然设计也不能保证完美无缺,所以在编码过程中 如果发现设计有问题或者是设计过程未想到的场景,应该更新设计(刚开始做设计会经常出现设计不完善问题)。

在这个过程中能让思维更加谨密。

在其它领域也一样,这种谨密的思维 能减少出错的机率。

4

程序测试过程

我们程序员都知道,不管代码写得多优雅、流程多风骚,都需要来一场测试拼杀。

测完得到了一堆bug,往往能给我们更多反思,测试之前的自信哪来的?

或者是,

我就知道会有这么多bug,因为我写得烂嘛~

然后就是一个一个的解决它,BUT,没那么容易

在 bug 的解决过程中,你又会发现 如果一个问题解决方法不对 这个解决方法又会产生新的问题。

也或许是因为对问题的定义不对而导致的。

所以说,问题的定义决定了问题的解决方法,而问题解决方法又决定了新问题的来源。

所以 “我们有必要对方案实施后可能产生的后果进行预判”

但 就算进行了预判,之后又可能出现其它问题。

不过 就算永远无法确定已经找到的问题定义是正确的,但是永远不要停下来寻找正确定义的脚步

这是不是也算一种人生的态度呢?

回到开头,为什么 不想做一辈子程序员?这个问题的本质是什么?

是因为程序员太累?还是觉得做一辈子程序员没出息,工资太低?或者是觉得自己应该干一番大事,而做程序员格局太小了?

问题的本质其实就是在于理想与现实之间的区别。

如何解决这个问题,就看你怎么定义这个问题了。

我觉得编程确实可以给我们程序员带来很多提升,能有多大提升 这就在于你有多在意它。而把编程思维纳入到我们自己的思维格栅中 不管未来从事什么行业,都是很有帮助的,所以说了这么多 其实就是好好的对待你的代码吧。哈哈~

八戒推荐

重磅来袭!!Docker视频教程

相关文章

  • 编程给我带来了什么?

    原文:http://www.jianshu.com/u/511ccb5a2012 文章目录 为什么写这篇文章? 程...

  • 编程给我带来了什么

    复杂的东西没有想象中那么复杂 以前没有接触过编程的时候对编程有一种误解,认为写代码就是一种很牛逼的行为,就是普通人...

  • 我学习的编程,都给我带来了什么?

    前言 写这篇文章的主要的原因是什么呢?主要是想到了自己是怎么从一个工科专业然后转行来做到计算机专业,这中间的酸甜苦...

  • iOS 链式编程

    链式编程 主要介绍链式编程原理,以及如何创建链式编程 编程范式 在介绍链式编程之前,首先来了解下什么是编程范式。 ...

  • 电影《朋友也上床》习作五

    杰咪说: 创伤让我们更美,就像我们的刺青。创伤给我们带来了什么?我们如何看待创伤?创伤可以被改写吗? 创伤给我们带...

  • 前任给我带来了什么

    前任给我带来了什么? 可能就是给我带来了所谓的喜欢与不喜欢吧 。 昨天洗澡听到宋冬野的《郭源潮》,发现好久没...

  • 007给我带来了什么?

    一年前,刚从公司离职不久,那会儿在人生的空档期。一次偶然的机会在杭州的笑友群看到苏磊班长写的007-1班的三月值月...

  • 写作给我带来了什么

    从2017年3月开始,一年多的时间,两个简书帐号,大约写了20万字。 开始也没想写这么多,就是觉得太多年不写东西了...

  • 留学给我带来了什么?

    临近毕业,开始关注国内高校的招聘情况。去年圣诞节,一路辗转回国,去参加一所大学的论坛。我讲完,回到座位上,就有一位...

  • 运动给我带来了什么

    坚持运动快一年时间了。有很多朋友说我最近变化很大,有身体上变化,也有情绪上的变化。我说这些都是因为运动给我带来的。...

网友评论

      本文标题:编程给我带来了什么?

      本文链接:https://www.haomeiwen.com/subject/luydrxtx.html