四句话总结我的学习观

3,072 阅读5分钟

想成为优秀的工程师,是需要不断的学习的。每个人都有自己的学习方式,我也一样。

看起来我的学习方式还算科学,我最近一年的成长也证明了这个。

有的同学对我的学习方式或者说学习观比较感兴趣,所以就整理了下分享给大家。有这么四点:

围绕工作学

技术是学不完的。任何一个领域都有很多的技术可以学,而且领域和领域之间还有关联。面对这么多需要学的东西,如何选择学习的内容呢?

我的建议是围绕工作学。

工作中用到的技术是直接有场景可以落地的,通过这些场景你可以把这门技术学的更深入,而且把这门技术学的深入了也能帮你更好的做好工作,做比较深入的创新,从而拿更高的绩效,对简历、面试也有很大的帮助。所以,学习工作用到的技术是一举多得的。

那反过来,如果不围绕工作学呢?可能你学的技术没有比较深入的场景,只停留在 demo 级。而没有深入使用的场景也很难真正把它学好。而且没有真实用在项目里你也很难写到简历里,或者在面试中证明你对这门技术是有深入掌握的。费时费力还没有很好的收益。

我们时间有限,围绕工作学是收益最高的。

多用 debugger

熟练使用 debugger 是优秀工程师的必备技能,狼叔也说过,是否会用 debugger 是区分一个 Node.js 工程师水平的重要标志。

为什么 debugger 这么重要呢?

debugger 可以让程序在你关心的逻辑处断住,一步一步的运行,看环境中的变量,输入输出都是什么。每一步其实是容易看懂的,比如赋值语句、循环语句,这些细小的单元是很容易懂的,而把这些基本单元搞懂之后,串联起来就能搞懂复杂的逻辑。

想读懂复杂业务逻辑,想看懂各种库的源码,离不开 debugger。只有通过 debugger 搞懂每一步,才能逐渐搞懂几千几万行的代码。

我写过很多 debugger 的文章,比如:

让你 nodejs 水平暴增的 debugger 技巧

用 VSCode 调试网页的 JS 代码有多香

分别介绍了 vscode debugger 如何调试 Node.js 代码和网页代码。

也有具体调试 ts 源码的文章:

我读 Typescript 源码的秘诀都在这里了

Typescript 这么复杂的源码都能读懂,还不能证明 debugger 的威力么?

如果说优秀工程师必备能力有个排行榜,debugger 能力肯定榜上有名。

重视计算机基础

软件领域的发展是很快的,新的语言、新的框架层出不穷。比如前端领域,10 年前如日中天的 jquery,现在很少见到了,比如后端领域,“php 是最好的语言”这句话也不经常听到了。

看起来,学技术是不是有点赌博的意思?

其实不是的。

语言虽然出了很多,但是用到的编译原理基本没变过。

前后端框架虽然有很多,但是也都是基于操作系统的能力做的上层封装,在操作系统这一层是变化很小的。

计算机基础技术是变化最小,半衰期最长,更值得去投入时间学习的。

哪些是计算机基础呢?

  • 编译原理(它把人能读懂的源代码转成计算机能运行的代码)

  • 操作系统(它封装了硬件能力给上层应用,并且很好的调度各种软件资源)

  • 计算机网络(它提供了计算机和计算机之间的长距离通信的机制,是互联网的基础)

  • 计算机图形学(它是显示器中显示二维、三维图形的基础)

  • 音视频处理(它是音视频相关技术的基础)

软件领域,把这些计算机基础学好就足够了。

如果把学习当作股票投资,时间就是本金,那么计算机基础这只股票的收益长期来看一定是很可观的,没有其他股票那么大的波动。

多做 effort processing

是不是经常感觉在看完一篇篇文章,听完一门门课之后,貌似学了很多,但是所记住的,理解比较深入的却很少。

这是因为不同方式的吸收率是不一样的:

如果你能在学完之后教给其他人,那学习效果是最好的,“费曼学习法” 讲的也是这个。(费曼是出色的物理学家,他本身就能证明这种学习方法的有效性。)

为什么教给别人学习效率就会高呢?因为这是 effort processing 的事情。也就是要费脑力去做的事情。

从生物机制上讲,你费脑力去做一件事情的时候,神经之间会建立更多的连接,那学习效果自然也会更好,记忆的会更牢固,理解的会更深刻。

所以,不要惧怕做技术分享、写文章、给别人讲解技术点、解决技术问题等,这些事情都是 effort processing 的事情,虽然会耗费脑力,会有点难,但也能让你有非常好的学习效果。

而且,当你在做有点难,有点挑战的事情的时候,能进入心流状态,也就是会极度专注,忘记时间,这种体验的感觉是很好的,而且效率也会很高。

总之,多做 effort processing,既能提升学习效果,又能进入心流状态提高工作效率。

总结

学习是一件终身的事情,偶尔花点时间整理下学习方式和一些关于学习的观点也挺好的。

我的学习观可以总结为这四句话:

围绕工作学(学什么)

多用 debugger(如何读懂复杂代码)

重视计算机基础(长期收益)

多做 effort processing(提升学习效果和工作效率)