如何学习一门新知识??
大概的流程就是: 初期调研一下整个知识的基本信息
,然后制定一个学习目标
,搜索相关的学习资源
,筛选出最适合自己的,制定一个可行的学习计划
,然后开始学习, 在学习的过程中,你一开始需要了解整个知识的全貌,然后对一个个知识细节,通过反复实践、反复思考,总结归纳出自己的理解。同时分享和交流让你获得更多的成就感以及额外的 收获。
通过以上方法,使得你的学习过程更为结构化,不用一头扎进知识的海洋。这种方式通过利用人天生的好奇心来帮助我们吸收更多的知识,这才是学习原驱动。
当然,你需要关注的并不是方法本身,你可以任意弃用,这些步骤本身不重要,重要的是其中蕴含的思想和方法。
- 步骤:1~6 一次完成 7~10 反复循环
参考:《软技能-代码之外的生存指南》
1. 了解全局
一开始最需要的是克服未知的恐惧。行动起来,去了解、发现,探索和好奇是学习最大的驱动力。
要了解的具体内容
- 背景: 谁创造的,什么时候
- 用途: 为了解决什么问题
- 原理: 大致思想是什么,大致知识体系是什么
- 重要性: 在整个知识体系中位于什么地位,和其他知识之间的关联
- 应用场景:具体用于干啥的,在哪些地方用上了,大致实现方式
行动
- 网络搜索相关知识
- 翻阅相关书籍的目录
- 请教导师或了解这方面知识的人
有很多菜鸟教程算是对知识的启蒙了,可以在网上找到; 还有一些介绍性的wiki,也比较适合。
2. 范围规划
明确自己要学习的范围,确定一下哪些是你当前需要了解的。 比如你要学习redis用于java web系统开发,那lua等就不用深入了解
行动
- 构造一个
知识图谱
,注意 考虑时间因素、合理切分 - 拟定一个学习提纲,再然后划出你目前需要学习的部分
- 请教导师,让过来人帮你写个学习提纲
3. 明确目标
明确你学习这个是为了什么?去掉你的虚荣心或不切实际的幻想
- 你的目的一定要纯粹、简单
行动
- 闭上你的双眼,思考一下你内心真实的希望,你是渴望力量、敏捷、还是智力
- 目标一定要能激励你学习成长,同时具有可行性
- 想象一下目标成功后的样子,然后倒推一下实现步骤
4. 寻找资源
很多人一开始学习的时候,就在网上搜索博客文章,遇到什么就学什么,这样没有章法,而且讲解不一定准确可行,导致事倍功半
资源清单
- 官方文档 : 最准确的资源
- 图书 : 书籍一般都对知识讲解比较深刻、系统,学习成本相对较高
- 博客文章 : 实操性强,易于理解,但是系统性不强,不完全准确
- 在线视频、课程 : 最为生动,但较为费时
- 对你想学习的知识早已熟悉的人 :可遇不可求
- 源代码 : 源码比较难懂、但最接近知识的本质
- 实例项目 : github很强
- 文献报告:专业性较强
5. 制定计划
行动
- 从基础出发、制定一个可行的知识点学习计划
- 不要超过学习范围,注意时间上的规划
6. 筛选资源
通过你的学习计划,筛选出你的学习资源,把冗余的、不太准确的资源去除
行动
- 查看书评和目录,找出最优质的书籍
- 不要把书籍中超过学习范围的知识点,纳入你当前的学习计划
- 选择适合的在线视频或文章
- 尝试了解相关英文文献
7. 浅尝辄止
目的: 对于知识内容有一个完整的了解
- 既不能盲目的囫囵吞枣、要对整个知识体系有大致的了解
- 也不能钻牛角尖、死磕浪费时间
8. 动手实践
目的:通过行动,对于知识内容的实现方式、产生效果有较为深刻的了解
行动
- 写一个demo程序,或者测试案例
- 对于教程的描述的现象和结果,要自己亲自体验和操作
- 把暂时不懂的记录下来
9. 融会贯通
目前:对于知识整体的关联关系、原理有自己深刻的理解
- 出于自己的好奇心,通过阅读文字、观看视频等,把某一个小知识点搞清楚
- 有选择的反复精读相关知识,反复尝试,举一反三,直到弄懂为止
- 将各个知识点串联起来,结合之前的实现,总结归纳成自己的知识图谱
10. 分享交流
将你所学的知识浅显易懂的讲给别人听,在这个过程中,你可能会有对这个知识额外的收获和理解。
行动
- 将你所掌握的知识,写成文章,发布到网上,并回复别人的留言
- 写一个开源的demo项目,用于阐述你所掌握的知识
- 发表相关演讲和交流会
- 在stackoverflow上回答相关问题