《理解专业程序员》-第四章:我们能更有效的思考吗?

——气象学家教给我们,预测明天的天气,有一个简单有效的办法,在2/3的情况下都是正确的;只消说明天的天气和今天一样就是了。这样一来,每个人都算得上气象问题的专家了——66%的准确率。请想象一下,如果我们也能轻易的预测99%的人类行为,那么会早就多少心理学专家呢——只要一条简单定律就足够,这就是温伯格双胞胎定律。 

 ——医疗行业最大的秘密之一,就是90%的病都是自己好的——根本不用医生动手,正是有了这样一个了不起的秘密,医生要做的一切,就是避免伤害病人。一个成功的医生还得让病人相信,为了治好他的病,他可是做了一些事情的——而且这些事情只能出自医生那个净是秘传医药知识的聚宝盆。

为什么人们习惯不思考?

1.有人不愿意让人们思考。在阅读/复审规格说明书时,我们把这种“催眠词”看做触发器。这里还真有些挺可爱的东西,包括“所有的”,“永远”,“每一个”,“可能”,“只有”,“同一个”,“应该”,“也”,“将要”,“当然”,“所以”,“很明显”,“显而易见”等,我们的语言中存在这些催眠词,从这个事实就可以引出为什么人们不思考的一些原因。这样的方式写作,说话,从而扼杀了思考。

2.没人在乎你是不是思考。绝大多数场合(当然是编程领域之外的场合),思考会给你带来很大的麻烦,在大多数工作环境中,你要是想的太多,那就会冒丢掉工作的危险,因为工作完全成了惯例,思考被当成是管理层的一种特权。
       即使在我们的私生活中,思考也是昂贵的事情,要是你每吃一口食物都得思考一番,每次过马路都得思考一番,那样你就没什么时间来做其他的事情——比如把省下来的时间用于思考必须思考的问题。
       这对编程也适用,如果我们确实发现了什么简明的规则,遵照它就能百试不爽,避免思考,那么我们就应该采用这样的规则,还是那句话,把思考留给必须思考的东西。
  
3.思考让人疲倦,因此也可能妨碍其他的思考。
       那个不要“GoTo语句”的规则,实际上却是另一种节省思考的习惯。当我发觉自己开始要写一个goto语句时,我把它当做一个触发器,而不是一个催眠词。我会对自己说,“温伯格,从前你在类似情况下不假思索的写了goto,结果导致了不少多余的思考。因此现在干嘛不多想想,这样也许会在以后必要时节省不少思考呢”。                               
  
4.要是我想的太多,没准就会在这里发现错误,那我又该怎么办?
       同样,这也不是一个彻头彻尾的笨想法。通过多年的学校生活,我们学会了这个道理“如果老师没发现,那就不是错误”。所以,如果我们知道老师其实没有时间看我们的作业,那我们又为什么要自寻烦恼地排除错误呢?
       但问题是,计算机与学校作业不一样,这里的“老师”——也就是计算机——会查看所有的作业,任何一处错误,都会被上百遍,甚至千遍的放大。在学校里,采取鸵鸟政策,把头埋进沙子,大多数时候都能蒙混过关——所以人们在编写计算机程序时,往往也会同样行事,这也就不奇怪了吧?
      总结一下,我能得出人们不思考的4点“显而易见”的原因:
     1.有人不愿意让人们思考。
     2.没人在乎自己是不是思考。
     3.过渡思考会让大脑疲倦,因此可能妨碍其他的事情。
     4.在学校里我们没学会思考。  “显而易见地”这张单子不可能有错误或不完整的地方,难道你想接受挑战,提提意见?

我们能更有效的思考吗?(集中还是强迫)

      当你在对付一个难缠的问题时,有没有过这样的情形:过早的放弃了一个很有希望的方案,只是因为如果采用这样的方案,在最后出现结果之前你要全力投入得太多? 困在一个问题上整整两天,却被一个同事的偶尔提议——或者是一个临时的打岔、一个偶然事件——给解救了:如果哪个程序员每过这样的经历,那他的灵魂一定是僵死得可以。
      但还有一个更能让人受益的办法,那就是把某个行业的“秘诀集合”都拿过来,然后做对比考察。比如说,考虑一下我们刚刚讨论的这2条:
     1.不要太早地放弃一种疗法。
     2.不要让一种疗法耽搁太长时间。
     也许说到底,医生拿那么多钱是有道理的。他们这个行业秘诀中的秘诀,不在于这些“秘诀”本身,而在于知道何时应用哪个秘诀。

你可能感兴趣的:(程序员)