不要在一点停留太久(关于交流,优化和挑战)

细想起来,过去十多年,我觉得我的部分成功得益于一个良好的习惯,就是喜欢不断地探索工具。我当时2007年在山东大学读书,相比于北京同学来说,信息相对比较闭塞。所以这类探索给我带来了不少的好处,比如接触到了Linux/Unix这样的操作系统,会使用Perl/Python这样比较奇怪的语言。同时我还比较喜欢看一些在当时同学看来(虽然他们也是计算机系的)比较奇怪的书籍,比如《编译器构造》,《现代操作系统》等等,其他同学则比较务实一些比如看一些Java/J2EE/Oracle这类书籍,都喜欢使用Windows/Eclipse/Java这样的组合。这类探索大大开阔了我的眼界,让我知道还有外面还有更好的东西。从毕业之后,我就继续沿着这样的路径走了下来,直到现在。

不过近几年我越来越感觉到,我过去这种靠着书本学习知识的方法,得到的回报越来越低了。一个简单的原因就是,这些书本上的知识虽然丰富,但是如果没有实践经验的话,许多理解只能流于表面,甚至某些知识点都没有办法理解。另外一个的原因是,如果不清楚这些知识具体解决的问题,那么理解起来就会事倍功半。这越来越让我感觉到,开始上班或者说进入工业界,理解当前需要解决的问题,并且基于这些问题去找人交流,可能是个更加有效的学习途径。尤其如果这些问题不是那种尚没有人涉足过的问题,那么肯定已经有人解决至少是部分解决了的,看看这些人的paper或者是当面和这些人交流一下,肯定比自己吭哧吭哧从头看书寻找办法来更加有效。

沿着上面的思路,继续关于优化和提升效率这个话题。说到底,大学期间内的主动探索,都有点偏盲目的性质。随着自己的兴趣,或者是去图书馆闲逛偶尔看到,或者是不经意从网上看到别人的帖子,等等这些没有系统性不成体系的方式,来寻找自己的探索方向。这种探索初期比较有帮助,但是到了现在,考虑到自己的精力有限,已经不合时宜了。相反,应该聚焦于某个领域,专注在解决某个问题,从这些角度出发,去寻找解决方法,不断地去进行优化,在这个过程中提升自己的深度。当然这种方式可以仅限于工作,对于生活或者是兴趣爱好,这样来做就有点显得过于死板,弄得知识面狭窄。相反,在生活方面,还就应该多看各种各样的书籍,接触各种各样混杂的人群,提升自己的认知水平,把自己真正地融入到社会当中。可以说,这两点在我过去十年,做的都不够好:工作方面不够专,而生活方面则不够宽。

我为什么会想到优化这个话题呢?是因为最近我看到一个关于如何高效使用和配置Emacs的帖子,而我竟然花费了近10分钟去阅读里面的细节。研究技术本身是没有问题的,但是Emacs在我的工作中并没有太大的帮助,或者说是启发吧,所以这些内容对于我基本就没有任何价值,而我居然花费了10多分钟去阅读,简直是浪费生命。我完全可以继续使用我现在粗糙的Emacs配置,使用VSCode来写Go代码,使用Intellij来写Java/Python代码,而完全不用去费尽心思让Emacs可以很舒服地写Go/Java/Python代码,说真的那是一种痛苦,虽然某些人告诉你他完全可以做到。关注什么东西是有价值的,选择那些对自己有价值的事情做,而不是选择那些自己能做的事情。

什么东西是有价值的呢?这个问题的答案因人而异。纯粹从技术角度来说,我觉得应该是那些有挑战性的问题,是最有价值的。这种挑战性的问题不必是那种在世界上悬而未解的问题,而是超出你能力范围,但是你又好奇想知道答案的问题。比如2021年美股会不会大涨?2021年新冠肺炎会怎么影响到我们的生活?我能做些什么事情可以从中获益?又比如,rocksdb为什么可以做到比leveldb高效,mimalloc比jemalloc好在哪里,操作系统是怎样被bootload上来的。只要你当前不知道,但是又对答案好奇,并且在这个过程中可以提升自己的思维能力的事情,就都是有挑战性的问题,就都是好问题,而解决这些问题就是好东西。只有这些好东西,才值得你去花时间。

说回Emacs那个问题,如果您是Emacs重度用户的话并且乐在其中的话,那完全有理由去花更多的时间去读那个帖子。不过在做这件事情之前,先把问题想清楚,我是真的对这个帖子的内容感兴趣,还是只是喜欢看到关于Emacs又或者是自己熟悉的话题的帖子。写到这里,我似乎又想起了“舒适区”这个概念,好像现在对它又有了更深的认识。多想想有什么挑战性的问题,想想什么东西对自己是有价值的,然后从问题开始寻找优化和解决方案,阅读书本和网路文章,但是也不要忘记向过来人交流经验。最重要的就是,永远不要在一点上,停留得太久。