目录

程序开发的思考方法与好习惯

记录程序开发中的思考方法与好习惯。不仅仅适合程序开发,也适合其它需要逻辑思考的地方。

概念完整性:

软件系统中重要的一点。若对项目问题了解的不够详细进行开发,会导致不断去改代码,期望通过改代码来达到解决问题的目的。

概念不完整,即没有搞明白问题中有哪些对象,对象之间的联系。没有真正搞清楚对象及对象之间的联系。从而没有办法了解问题。在没有真正了解问题的时候,只能被动地等待问题的出现,然后去改代码,以头痛医头,脚痛医脚的方式去解决问题。

其结果就是,花费大量时间做着重复的事情,改着冗余复杂的代码。最终导致大多数项目失败或延期。

如果一个特别的需求特性影响到概念完整性,就需要果断舍弃。不要迁就所有人的要求。hold不住的。

结构化思维:

整体观念全方位的去看待问题,不仅只看表象。以自问自答的方式思考:

  1. "如果....会怎样?否则....会怎样?"
  2. "最好情况是什么? 最坏情况是什么?怎么办?"
  3. "导致问题产生的根本原因是什么? 去解决根本原因,找对方最终想要的。"

举例: 男友加班。女友经常抱怨,生气,耍小脾气。

男生看到的表面现象:女友性格不好,不够体贴,不通情达理。

根本原因:双方缺少交流,互动。女友希望得到更多的关注。

错误的示范:你为啥不理解我呢? 没看我忙着的么?

正确的姿势

解决问题的两类方式:

  1. 一种问题是自己经验中已有的,从中找出一个解决方案即可,这种是最容易的。
  2. 更多的问题是在经验之外的,这时候需要知道哪里有解决问题的方法,活用搜索引擎。

学习技术的方法论

  • 学习技术的方法论主要是建立自己的思维框架,用这个思维框架去强吃原理,才能以生有涯应对知无涯。强吃通过已有知识通过迁移学习等方式快速掌握原理类似的新知识,前期需要积累。学技术切勿背说明书,代码机制弄明白了用着就熟了。 by: Aoik-馋师

  • 学通超过一种编程语言,了解尽可能多的编程语言及其优劣,知道解决某个问题的可能的最佳路径。注意学通和学会是两个概念。学会意味着你能够使用这门语言,会写程序,而学通则意味着更多。很多在简历中号称精通C的人不知道malloc背后都发生了什么,精通Python的人却无法用meta programming写出干净漂亮的代码。这样的精通其实也就是勉强学会。 by: 陈天

    学会:
    了解语言被创建之出的动机,深刻理解语言背后的思想。
    掌握如何在线调试(online debugging)和事后分析(coredump analysis)。
    掌握语言外延/周边的技术。如JVM之于java,OS/CPU EABI之于C。
    掌握如何提升关键代码的效率,如何能够扩充语言的能力。如NIF之于Erlang。
    
  • 不断地给自己增加挑战,让自己脱离舒适区域。具体方法是:用那些刚好超过自己能力的任务挑战自己,build(尝试) - measure(分析) - learn(学习总结)。然后不断重复。这是lean startup一书中建议的精益创业模式 by: 陈天

    (也是leetcode刷题的套路啊!)

编程的好习惯

  • 代码不妥协,不屈服于release的压力或人情世故。code review时不仅逻辑正确,格式,算法效率也要合理。真心喜爱你所做的事情。 by: 陈天

    (能做到这点真的很难啊)

  • 不要做一只将头埋在沙子中的鸵鸟:计算机异常处理,把可能发生的问题都要考虑到。而不是视而不见。某些事情发生的几率太小了,小到不值得我们花心思去处理;或者,某些事情发生后的后果太严重了,严重到我们只能祈祷上帝它不会发生。by: 陈天

    (我身边有很多优秀的人,总会把有很小可能性发生的事也考虑到,值得学习这种精神!)