经验和洞察力

很多人很在乎“经验”,比如号称自己在某领域有 30 年的经验,会用这样那样的技术。我觉得经验是有价值的,我也有经验,各个领域的都有点。然而我并不把经验放在很重要的位置,因为我拥有大部分人都缺乏而且忽视的一种东西:洞察力(insight)。

每进入一个新的公司,我进入的几乎都是不同的领域。所以最开头的时候,我有可能对那个领域所知甚少。甚至有人觉得我没有经验,所以可以“教育”我。然而每一次他们都没有想到的是,我很快就掌握了他们的经验,并且经过提炼,抛弃其中的垃圾,很快的超越了他们,完成他们根本无法达到的目标。这就是洞察力的威力。

举个亲身例子,很多人都有用线程的经验,可是有多少人知道线程的本质是什么?有多少人在头脑里有一幅画面,显示出多线程程序的各种动态特征?其实很少有人知道。这就是为什么很多人过度的使用线程并发,结果产生各种同步问题,竞争状态(race condition),死锁等现象。某公司的一片多线程代码,号称是“有非常多并发程序经验”的程序员写的。结果没多久我就发现里面其实含有非常微妙的竞争情况,会在非常小的概率随机发作。发现之后没过几天,已经卖出去用了两年多的产品,由于这个竞争情况,终于引发了严重的后果。有那么多并发编程经验的程序员,两年多都没有察觉这个竞争情况,而很少写多线程程序的我,不但发现了这个竞争,而且很快的想出了修复它的办法,这是为什么呢?靠的就是洞察力。我知道线程的本质,而这是经验不会告诉你的。

什么是洞察力?洞察力就是透过现象看到本质的能力。有洞察力的人很容易得到经验,然而有经验的人却不一定有洞察力。再愚钝的人,总是可以通过大量的时间获取经验,然而就算你花再多的时间和精力,也难以得到洞察力。所以洞察力是比经验宝贵很多的东西。很难说清楚如何才能有洞察力,也很少有人会告诉你如何去得到它。当然,我也不会告诉你。

看别人简历,经常会列出各种各样的技术经验,我看一眼就会的东西,也会在上面占个位置。由于这个原因,我把自己 Linkedin 上面曾经列出的“工作经验”全都删掉了。这些东西列在那里,对于我本身的价值,实在是一种贬低。我是一个身上不贴任何标签的,不能被任何头衔所局限的,真正有价值的人。

经验虽然不是最重要的,然而还是有必要的。很多技术你不能完全不碰它,然而一碰就明白了。但如果没有实际的问题,你又会没有动力去接触那些技术。所以我一直在做的一件事情,就是接触各种技术,然后利用洞察力来获得越来越多的经验。回国之后的初期,我打算着手做自己的产品。同时,我想跟国内的各种公司或者个人做这样的交易。我利用洞察力帮助解决他们最棘手的,已有经验无法解决的难题,从而让我获得经验。当然,我不是作为公司的职工,而只是作为独立的顾问。对公司我会象征性的收取一定的费用,换句话,就是作为“职业杀手”。对于个人,他的问题必须对我也有启发意义。对此感兴趣的公司或者个人,可以跟我联系。