记得有一次开会。我的头儿说了标题所写的这句话,自己深以为然。
有过较多解决这个问题的经历的人可能会有这种感觉,非常多时候,面对一个问题。我们即使没有全然将之想清
楚。也可以基于已有的经验给出一个可以work的解决方式,当然这样的情况下给出的方案往往不是最优的。
而即使给出了解决方式,非常可能自己都未必能把自己给出的解决方式所基于的推理逻辑,清晰无误地阐述出来.
由于随着人的知识,经验的积累,我们能够越来越多地依靠经验来解决一些问题。这些经验有些是自己身体力行,
实践得来的。有些则是道听途说。经卷纸传。从其它的地方获得的。
在获得这些经验的同一时候,我们的大脑会建立起
这种一个触发机制:
遇到问题A。经验B会有效。
遇到问题C,经验D会有效。
。。。
。
至于为什么经验B对问题A会有效,是不是在全部场景下都会有效,是否还存在更有效的解法。大多数情况下,我们
未必会深入去思考挖掘。
于是,在遇到了与自己曾经经历过的问题相似。相近的场景时。我们就会条件反射地基于已有经验。设计出一个解
决方案,大多数情况下这个方法work得非常好。但也有非常多情况下,这个方法尽管能work。但并非最优解,甚至
自己都未必能说得清楚为什么给出这种方案。
近期在工作中,须要为编译器的语法规则设计对应的数据结构,自己就有了这种感觉,
在作设计的过程中,有的时候,是旧有经验作祟,有的时候,则是由于偷懒的情绪占了上风,自己会满足于浅尝辄
止。对某个问题给出一个未经深思熟虑的解决方式,而随着设计过程的推进。暴露出来的信息越来越多,就会发现
已有的设计不能非常好地满足一些场景的要求。因而对已有的设计进行调整,可是在调整时,自己往往会发现,对于
已经作出的设计,为什么当时自己选择那样的接口。定义那样的数据成员。自己并不能给出清晰明白的解释。这就
说明在作出当时的设计的时候。自己并未将问题想清楚。也未将自己给出的设计想清楚,而是基于一些已有的经
验。给出了一个差强人意的方案而已。
在这方面,我的老大作得要比我好非常多,对于一个问题,他往往会将之想得非常清楚之后。才会去着手去作。曾经
的技术讨论会上。凡是他提出的设想和方案,差点儿非常少会有被我们驳斥倒的,由于仅仅要是他在会议上提出来的东
西。差点儿方方面面,各种可能,他都已经去思考过了。而在工作过程中经验的积累上,他也常常会作深入的思考和
挖掘。一般来说。凡是他解决过的问题,仅仅要不是太detail的,跟他讨论起来。他往往可以对答如流,而可以
作到这一点正是由于他在储备这些经验的时候已经作足了功夫。
而自己在储备经验的时候则往往不会花费太多精
力。一个典型的场景就是我和老大同一时候遇到一个问题。有的时候,我能更快地给出答案和解法。
可是过了一段时
间,又遇到了类似的问题,我却可能会忘了当时解决这个问题的思路,须要又一次进行思考,而我的老大往往可以直接从
他的经验体系中找出当时的解法思路。
遇到一个问题,我往往能较快地给出一个解决方式,但细究起来,我就时有
被卡住的场景。而我的老大。尽管给出问题答案须要的时间会较长一些,但一般他给出的答案。往往都经得起推
敲。