思维有理化
今天犯了一个小小的错误:跟几个同事约好了一起去怀柔参加一个同事的婚礼,约好了是在惠新西街地铁口见,我提前到惠新西街南口很早,在河边等了一会儿,离约定的时间还有5分钟,给老H打了个电话,说已经到了,怎么没见着呢,因为他们在北口,原来是我下错站了。然后还被老A在电话里给K了一顿,于是乎就急匆匆再下地铁坐5号线再走一站。这件事小得不能再小了,但仔细想想也是大问题。
为什么会走错?因为我脑子里以前是有惠新西街的印象的,就是坐10号线就可以了,可不知道还有个南口、北口,其实,南口北口不知道也没关系的,到了之后打个电话确认一下马上再走,时间仍然尚早。其实当时脑子里是一闪念给老A打个电话确认一下的,可想到他在开车,也没太大必要,就没打。其实老A在周五是告诉了我要再坐5号线一站到北口的,但我没记住,因为当时在忙别的,因为这是一件太小的事情了,就没放在心上,结果还是出了点儿差错。
想起工作时,经常会犯的一些编程类的错误,对于一些很低级的错误很憎恶,有时还会因此而动些火气,于时还是挤了点儿时间,做了一个checklist。每次写完一些代码,回过头来使用这个checklist检查一下,应该可以消除80%以上的错误,会明显提高软件质量。又想回来,不仅是编程这种要求较高的正式工作内容需要这么一个checklist,对任何事应该都有这么一些需要注意的一些公共的问题的。
对于任何事情,都要做到“有理的”,这正如在数学里学到的“有理数(rational number)”,每一个有理数都可以表示为一个分数,如果用小数表达,其小数点后总会从某处开始进入一个循环,虽然我们不能把它写完,但我们总能知道它任意一位的数值应该是多少,可能就是因为它不是未可知的才叫作有理数。比如圆周率很可能就不是一个有理数,因为现在还没有人也没有办法确定其小数点后任意一位数的值。所以,对于做事方法进行“有理化”,就要能够确定每做一件事的后果(当然有些事的后果可能是无法控制的,但至少我们已经知道会有发生这种事情的可能性),如果结果是可控的,一定让它进入一个我们期望的范围内,我把这种思维方式叫作“有理化”思维,就是做事的任何一步都是可知的,有理由的。“有理化”思维其实也很简单,就像将一个小数有理化一样,按照几个步骤就可以完成了。既然是”思维“方法,就是要思考几个问题,只要在做每件事前都思考一下这几个问题并找到答案,事情就会往好的方向发展,成功的机率就会提高:
1) 目标是否明确?就今天的事情而言,本来目标是可以明确的,时间、地点都很明确,但它不在我的脑子里,我没有把心思花到儿,我偷懒了,因为只要到了惠新西街就有人把我带到目的地了。但是,其实我的真正的目的地应该是惠新西街北口地铁口的A口,而我却没有明确,所以最后导致下错了站。
2) 这种方法是否可以实现目标?其实,这是最基本的一个问题,因为如果做事的方法不能达到目的,那么这肯定是个错误,最后会导致失败。但很多事情,就是因为没有回答好这个问题才导致失败。比如编程解决某个问题,在开始写代码之前根本没有把整个方案思考一遍,考虑清楚,写到一半发现根本就实现不了,导致返工,造成浪费与项目的延误。其实,考虑方法是否可行关键就是考虑几个关键问题,分析风险并找出问题降低风险的方法,如果方法是否可以成功不能确定,就先对重要的不确定性进行验证。如果所有疑难问题都解决了,也就证明的方案的可行性。
3) 方法是最优的吗?其实从门前去惠新西街北口是有两趟直达的公交车的,不需要两次换乘地铁,这是回来的时候才发现的,然后就后悔早上没有直接坐公交车。世界上是没有卖后悔药的,没有选择最佳的交通方式是因为没有准备,在上车前如果查询一下路线,上面目标错误的问题也可以解决了。这个过程其实就是优化的过程。
其实,想做到思维的“有理化”很简单的,就是“明确目标-验证方法-优化方法”,做完这三步,虽然不一定能够达到最优,但至少可以保证得到正确的结果,如果第3步做得好还可以使结果更好。