关于学习的鸡汤

# TLDR

我觉得最重要的三点(学习方法论):

  • 学得会并记得住
  • 大量搜集资源
  • 掌握解决问题的思维(DEBUG)

# 持续前进

学而时习之 温故而知新 —— 孔子

保持兴趣,循序渐进
广泛涉猎,融汇贯通

编程是理科,同时也是工科。
行业中有一些部分,可能并不是极难的研发性质的工作,
仅仅只是学习前人的经验,并仿照着实现而已。

根据自己当前的水平适当调整节奏。
不要经历“习得性无助” —— “我总是不行,太难了,做不了。”
反之,不断给自己创造微小的成就感,持之以恒就能点亮整片技能树。

(曾经我周末花了一整天,仅仅在反复琢磨 node 和 npm 的版本和安装卸载,并在之后快乐了一个星期)

# 练习英语

英语 训练指南(编程篇)

# 工程师思维

养成解决问题的习惯,而不仅仅是能够解决问题。
学会发现问题,而不是人云亦云。
(这也是工作和上学最大的区别之一)

随着工作经历的增加,一定会碰到无数之前没有见过的问题、知识、技能需要学习。
这其中有的新技能是通用的,掌握之后是可以长期受用的,
也有一些问题,仅仅是暂时的,以后永远不会再碰到的。
(当然,能够提前区分这两种类型也需要靠不断的经验积累)

那么通过预先学习来覆盖所有情况是不现实的。
所以要学会即时发现新的问题,并运用一定的技巧去尝试解决,
比如基于本站的文章,就能产生很多问题:

  • “很多资料链接都是英文的,以我目前的英语水平会很吃力,有没有可能已经有翻译版了呢”
  • “这个概念我不懂,文中的解释也不够充分,我从哪里可以查阅呢”
  • “我从不同的地方看到了相反的答案,如何判断哪个是正确的呢”
  • “这是别人的心得,我如何定制适合自己的计划呢”
  • “这个工具我用着很别扭,有什么方式可以改进呢”

互联网上有无数免费和付费的资料。

# 理解编程

计算机科学 入门指南

了解框架原理,而不是背诵框架 API。
学习编程思想,而不是深究实现细节。
(比如不要在初学阶段沉迷研究 JS 里的隐式类型转换具体规则)

你是工具的主人,不是工具的奴隶,
语言、框架、软件、电脑是你的工具。
了解工具的性质,更好地使用它们。

# 调整心态

前期避免过度追求变现,
优先追求掌握技能和创造价值,
有技术水平才能有议价能力。

(说人话:不要太关心能拿多高的工资)
(但是也要考虑工作和学习、生活的平衡)

面向解决技术问题开发,而不是面向解决具体业务开发。
(如果有机会的话…)

尤其是在互联网资本寒冬的现在(真的吗?)
夯实基础,稳步前进。

# 费曼学习法

【思维论 03】费曼学习法的误区:为什么学渣给学霸讲题,学习收益才更高?

我理解的一句话版本:

如果你能将一个概念完整地教会别人,那么说明你掌握了它。

对于任何一个知识/技术体系来说,
你第一次发现它的时候,它还不属于你,
你只能通过查阅来弄懂。

而当你不断地在脑海中构建和修正出自己的结构化体系,
你能够基于自己的体系,在脑海中直接快速地检索到它的每一个细节,
那么你就掌握了它。

# 小黄鸭调试法

小黄鸭调试法,又称橡皮鸭调试法、黄鸭除虫法(Rubber Duck Debugging)是可在软件工程中使用的一种调试代码的方法。方法就是在程序的调试、调试或测试过程中,操作人耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感与发现矛盾。

看似很胡扯,但是其实是非常严肃的道理。

就在解释的过程中,程序员可能就发觉了问题的解决方案。

程序的运作,代码的运行都是有据可循的:
运行结果不符合预期,肯定是某一步或者某几步出了问题。
通过不断拆分步骤并逐步分析,就能定位到问题所在,才能试图解决它。

# 编程训练

限制方法的灵活性几乎总能使你把事情做得更好。 —— DOOM 之父 约翰卡马克
学而不思则罔,思而不学则殆 —— 孔子
最高级的想象力是不自由的 —— 同人于野

一定要向古老的智慧学习,理解久经考验的技术思路的精髓。

算法、设计模式、范式、特性、规范、协议等等,各式各样的名词…
不严谨地来讲,我认为指的都是同一件事 —— 别人总结的成熟可靠的经验。

纸上得来终觉浅,绝知此事要躬行 —— 陆游

同时,写代码这件事,只能通过反复的实际编写运行和推敲才能掌握,
才更有机会形成(潜意识的)技术直觉。
(就像学会开车)
(就像上文中我反复安装 node 的故事那样)

Learn fast, Learn Cheap
工欲善其事,必先利其器 —— 孔子

软件工程中有敏捷开发的概念,学习本身也可以敏捷化。
想办法优先提高效率。(即使这个过程很耗时)

举个例子:在仿写 JS 代码的时候如何快速运行?
打开浏览器的 devtools 手动敲吗?
更好的方式是:利用 VS Code + Code Runner + Quokka.js

# Environment/Body/Mind

每月高效工作 200 小时

利用环境和工具
保持健康的身体和清醒的头脑
自我激励和自我意志

适当休息暂停学习,长期来看反而能产生更大的效益(边际效益最大化)