终于还是赶在农历年之前抽时间来写年终总结了。
2019对我而言其实技术上并没有实质性进展,而去年定下的目标,一个也没有完成。
这无疑是一个令人沮丧的事情。虽然前几个月时间在忙其他事情,但根本原因是我的技术进入到了一个瓶颈。
几年前我就已经发现,随着时间的增长,我的技术提高量越来越低。
但像今年这种技术再无一丝实质性进展的情况确实是第一次出现。
仔细反思了一下,技术增长量的降低可能和我自己的学习模式有关。
大部分人学习方向都是向上的,比如学了编程语言,去学设计模式设计模式,再去学各种框架,然后就是各种分布式,云。
而我自己的学习方向是向下的,学了编程语言,就去学linux内核,再去学数字电路,再去学PCB,再去学FPGA,再去学编译原理,再去学数学。这更像是先画了一个大纲,然后一点一点去丰富细节。
这样补充的细节越多,需要的基础知识就越多,时间缺口就越大。而这时,我贫困的基础知识就会有力的拽住我的后腿,以致于我进步的速度越来越慢。
我从不觉得我的学习方向有什么问题,但是摆在我面前的矛盾却越来越凸出。
首当其冲的问题,就是大纲的准确性。由于仅凭首次接触就凭自我感觉画出了一个大纲,这个大纲会有很多不准确之处,毕竟我不可能仅凭薄弱的C语言基础,就能准确的描绘出Linux Kernel的轮廓。
虽然在细化的过程中,可以不停的修正整个大纲的轮廓。
但是,我有个极大的缺点,第一印象出来的东西,总是会慢慢变成直觉,这也就是说即使我后面把大纲修正的准确无比,但是我的第一反应仍然是初次接触的那个感觉。我必须要花很大的功夫,才能强化后来的修正。
而很多情况下,我的惯性思维和第一印象会将我禁锢其中,而跳脱不出来。当然这种禁锢的根本原因就是因为我没有看到本质,所以不能充分使用。
尤其是我最近经常能意识到禁锢的存在。但这对我来讲应该算是好事,毕竟意识到了,才能打破。
我打破禁锢惟一的手段就是,遇到问题仔细思考一下,看有没有办法换一个思路解决。
当然并不是每次都能成功,大部分情况都是很久以后回忆起来才发现,当时是被惯性思维禁锢了。
因此我越来越喜欢与人交流问题,即使这个问题很简单,他也同样会有无数个视角。
另外一个问题,就是我的学习过程类似page-fault的过程(学知识A的过程中,如果用到知识B,就会暂停学习A,直到B学习完成。)。
在这个嵌套的过程中,每嵌套一层,我上层知识就会丢失一点(还没有学懂的知识,总是容易遗忘的)。这就导致我每回退一层就需要从头学习这一层的知识。
就拿我今年的例子来讲,我之所以一整年都没有实质性进展,就是耗在内容丢失上。
本来在看《计算机程序设计艺术》,看了几章发现需要数学。于是就去学习《具体数学》,在看具体数学的过程中,又发现很多基础知识不懂。又去看《什么是数学》。等我看完《什么是数学》,《具体数学》已经忘的差不多了。等我看完《具体数学》又会发现《计算机程序设计艺术》忘的差不多了。
当然其实到目前为止,《具体数学》我看了7个月,依然还没有看完。但是我现在需要去看《概率论》的东西才能继续看,等我看完概率论,不知道《具体数学》在我脑子里还剩多少。
核心技术没有实质性进展,并不代表我真的一点收获都没有。
至少,我亲身体会了Intel CPU的cache惩罚的效果。
至少,我学习了Unity的AssetBundle的机制,并写了一个管理组件。
至少,我终于明白原来Lua的最底层逻辑是建立在函数式编程上的,并由此明白在不同编程范式中GC的运行规则是有区别的,顺带对编程范式有了新的理解。
最大收获就是,我终于开始学习并试着用数学思维解读一切,虽然效果并不明显,但我自己对这种变化有明显的感知。并且在看数学书的过程中,我明显发现了思维禁锢的存在。有时我甚至连a=b< =>b=a都反不过来。
最后,照例给2020布置一些作业。
- 《概率论及其应用·卷1》
- 《具体数学》
- 《计算机程序设计艺术》
- 重新温习一下以往学习过的知识,看看能不能再次打破一下这几年形成的思维定式
ps.写完发现,有点跑题了,不管怎样,姑且认为这是一篇2019年思维过程和学习方式的总结吧。