原文链接:http://mindhacks.cn/2009/07/06/why-you-should-do-it-yourself/
作者:刘未鹏
我理解这个标题可能又有很多同学被认为是标题党了,我并不否决,但这是一篇非常有用的标题党文章。
我见过的程序员有很多,通过一个角度可以对他们进行分类:遇见问题先找人解决和遇见问题先自己动手寻求答案的。
我们在生活中总是在不停地试图做最优经济决策,只不过很多时候我们为适应远古社会而进化的大脑未必适用于现代工业社会(《Mean Genes》,《进化心理学》,《How We Decide》),所以很多时候我们可以在超市为选择哪一卷卫生纸斟酌半天(《Predictably Irrational》),却在面对生活中重大抉择的时候轻易就随波逐流(《Paradox Of Choice》)。
我们的很多决策依赖于情绪系统的输出(从进化时间上比较“旧”的大脑部分)(《How We Decide》,《Synaptic Self》),这部分大脑属于典型的经过了漫长进化时间所雕琢过的,决策机制严重适应远古社会的模块(《Mean Genes》),比如在物质贫乏的远古时期,不管什么时候遇到富含热量的食物是必吃无误的,所以我们的情绪大脑只要闻到美食是绝对不去克制诱惑的,长出脂肪又如何?有的是饥寒交迫的时候去燃烧这些脂肪。然而这条规则到了现代这个物质充裕的社会却成了灾难(去查一下美国的肥胖比例?),可谓成也萧何败萧何。这样的例子在《Mean Genes》中还有不少。
我们在学习新东西,遇到困难的时候,为什么会放弃?因为我们下意识中会对所面临的困难以及成功后所得的收益作一个评估(经典的 cost/return 分析),这里特别重要的是对面临的困难的评估:我们都知道学习任何一门技能,一开始可能还兴趣浓厚,捋袖子上阵,过了一阵子便会遇到一个典型的分水岭,你会发现未知的东西比你想象得要多,困难重重,似乎一眼看过去没法确信什么时候才能掌握,甚至觉得有点 Mission Impossible,当觉知到的困难到一定程度之后,我们的大脑便会想:既然很大可能最终失败,甚至看不到成功的可能,为什么要白费力气去学一通呢?还不如省省呢。这是一个聪明的经济决策,去权衡性价比应该是每个经济个体的原则。然而,这个决策笨就笨在,它把困难评估得过高了,因此决策的前提就弄错了。为什么这么说呢?现代社会很多新东西是知识密集型的,而不像我们祖先生活的远古社会可能绝大部分是体力活。对体力活的评估我们很在行,大约能知道困难有多大,需要耗时多久,有没有可能完成。然而对学习新知识的困难程度的评估,我们却很不在行,因为大部分知识都是需要等你掌握了之后才会“豁然开朗”、“柳暗花明的”,而在这之前你会觉得这东西太难了,完全没有头绪,摸不着门道,觉得山重水复疑无路,你会想“既然无路,就别去碰得满头是包了吧?何苦呢?”。
有一个很不错的概念叫做“Unknown Unknown”,大意是如果你不知道一个东西的话,你也不会知道你自己不知道它。很多时候新知识就有这个特性——掌握了之后觉得很明白,掌握之前却觉得“不可能啊”、“这简直没有解嘛”。在这样的认知之下,你自然会高估前方的困难、风险和不确定性,因为你不知道什么样的知识才能解决你的困惑。然而事实上呢?只要智商没有根本的差别,别人的大脑能够掌握的知识,你的大脑也能掌握,你所感觉到的巨大困难只不过是因为Unknown Unknown,你所需要的只是耐心地踏遍这块知识版图,当你掌握了那些你该掌握的知识之后自然会柳暗花明。
我们在遇到困难的时候会试图去寻找捷径,心里的想法大概是:既然我自己解决可能需要耗费极大的精力,甚至连最终能否解决都无法判断,那么为什么要冒风险花费大量的时间去尝试呢?还不如想想其他法子。比如绕过问题,或者将问题外包给别人。
这很聪明,很经济:用最小的代价解决手头的问题。看上去是一个寻求经济上最优解的法子。
不过到底是局部最优还是全局最优呢?
“用最小的代价解决手头的问题”——这里的问题在于,难道我们计算收益的时候仅仅考虑是否解决了手头的问题吗?如果解决的过程中得到了其他的收益呢?
(图片注:荣耀属于indexed)
为了解决一个技术问题,你踏遍互联网,翻了若干教程、网站、书籍,最终解决了这个问题的同时还知道了以后遇到类似的问题该到哪儿最快最有效地找到参考,你还知道了哪些网站是寻找这个领域最有价值信息的地方,你还知道了哪些书是领域内最经典的书,说不定你在到处乱撞的过程中还会遇到其他若干意想不到的收益。
为了解决一个内存泄漏的 bug,你学习了一堆底层知识、了解了一堆调试工具、学习了若干 wikipedia 页面,表面上看来,仅仅为了解决这一个小 bug 你的时间花销未免太大了点,然而关键就在于,它的收益远远不止于解决了这一个小 bug,下次你遇到任何类似的 bug 的时候就能够哐当两下就解决之了。
生活或工作中,很大程度上你遇到的每个问题都不是孤立的,既然你遇到了某问题,那么很大的可能性你以后还会遇到类似的问题。当然,这个说法的另一面是,也有一些问题是一锤子买卖,即以后不会遇到类似的问题,因此只求速解决。不过按照我的经验这样的问题实在太少了,此外,你觉得你真的能够分辨你面对的问题是否属于这类问题吗?底线是,就算是这样的问题,你自己动手解决也能培养学习能力和思考能力。如果你判断它是一锤子问题,外包给别人解决,那么你就永远没机会发现这个问题背后蕴藏着哪些知识,这就成了一个自我实现的预言。
如果选择总是问别人的话,下次你还得继续问别人,每次直接问到问题的答案的同时意味着你永远都要靠别人的大脑来获得答案。
困难的路越走越容易,容易的路越走越难。
往期推荐
🔗
HTTP/3 ,它来了。
2w 字带你实战 ElasticSearch !
讲一篇通俗易懂的 C 函数。
6 分钟看完 BGP 协议。
《On Java》值得读吗?
万字长文爆肝路由协议!