经验有时会误导我们——《代码之殇》读书笔记
“斯纳金指出,当一种动物,比如鸽子,通过它的一次偶然行为产生了合意结果时,这种‘经验’就产生了。人也一样,因为一次偶然的机会通过自己的能力产生了一种满意的结果时,人们就会沉溺这种非常特定的做法。”——摘自《代码之殇》
当我读到这句话的时候,室友A正在请室友B帮忙解决UltraEdit的安装问题,室友B在室友A的电脑上完全还原了在自己电脑上的安装操作,结果却是不能正常使用,两个人挠挠头,一边嘴里说着:“奇怪”,一边开始尝试其他方法。这种现象在我的生活中非常常见,举个我自身的例子:在学单片机的时候,经常会遇到一些不懂的问题,比如某个flash芯片怎么使用。这个时候我一般回去查百度,百度经验,百度文库,各种博客,期望找到某个人的经验拿来解决我的问题。可是仿照网上铺天盖地的成功案例一步一步做下来,并不能使用,程序一样,IO口设置也一样,什么都一样,为什么不能用呢?接着就是摸不着头脑的一通乱改,这种方法试一下,那种方法试一下,勉强调试成功还不知道有多少潜在的bug。一次一次借鉴经验失败的经历告诉我:经验不是知识,不能够当作标准学习;网上能够找到的大部分经验并不一定适用于所有情况。
借鉴别人的经验一来等于我们放弃了学习底层知识的选择,二来为我们的调试过程埋下了数不清的bug。借鉴别人经验使我很痛苦,最后我找到了一个有效的方法来替代——学习基础知识。芯片不会用我就去看手册,软件不会装我也看手册,c++不会就去看书。事实证明,我花费一天的时间看完芯片手册然后去解决问题,效率极高,而且我还对每一步的操作都非常清楚。实践告诉我,知识才是硬道理!要想弄明白一个东西,就去学习相关知识,看书,看手册。
但是时间并不允许我们遇到问题就去学习,而且学习过程当中也很可能牵扯到一些没有学过的东西妨碍我们的理解。这个时候我一般会先去看一下别人的经验,看一看要怎么走,然后用最短的时间有效的学一下相关知识,然后再去解决问题。经验并非一无是处,它给我们的学习指明了方向!
关于经验的另外一点:当我们通过某种方法解决了问题的时候,我们以后会倾向于用同一种方法来解决问题。小学时候老师就不断告诉我们,要尝试用不同的方法去解决问题,不要局限于一种方法。写代码也是如此,第一次完成任务的代码是非常粗糙的,必须要优化,甚至还需要重构。沉溺于以往的经验只会使我们停滞不前。
最后,不要过分依赖经验,有时它会误导你。