程序员十步学习法

1,240 阅读5分钟

如何学习一门新知识??

大概的流程就是: 初期调研一下整个知识的基本信息,然后制定一个学习目标,搜索相关的学习资源,筛选出最适合自己的,制定一个可行的学习计划,然后开始学习, 在学习的过程中,你一开始需要了解整个知识的全貌,然后对一个个知识细节,通过反复实践、反复思考,总结归纳出自己的理解。同时分享和交流让你获得更多的成就感以及额外的 收获。

通过以上方法,使得你的学习过程更为结构化,不用一头扎进知识的海洋。这种方式通过利用人天生的好奇心来帮助我们吸收更多的知识,这才是学习原驱动。

当然,你需要关注的并不是方法本身,你可以任意弃用,这些步骤本身不重要,重要的是其中蕴含的思想和方法。

  • 步骤:1~6 一次完成 7~10 反复循环

参考:《软技能-代码之外的生存指南》

1. 了解全局

一开始最需要的是克服未知的恐惧。行动起来,去了解、发现,探索和好奇是学习最大的驱动力。

要了解的具体内容

  • 背景: 谁创造的,什么时候
  • 用途: 为了解决什么问题
  • 原理: 大致思想是什么,大致知识体系是什么
  • 重要性: 在整个知识体系中位于什么地位,和其他知识之间的关联
  • 应用场景:具体用于干啥的,在哪些地方用上了,大致实现方式

行动

  • 网络搜索相关知识
  • 翻阅相关书籍的目录
  • 请教导师或了解这方面知识的人

有很多菜鸟教程算是对知识的启蒙了,可以在网上找到; 还有一些介绍性的wiki,也比较适合。

2. 范围规划

明确自己要学习的范围,确定一下哪些是你当前需要了解的。 比如你要学习redis用于java web系统开发,那lua等就不用深入了解

行动

  • 构造一个知识图谱,注意 考虑时间因素、合理切分
  • 拟定一个学习提纲,再然后划出你目前需要学习的部分
  • 请教导师,让过来人帮你写个学习提纲
3. 明确目标

明确你学习这个是为了什么?去掉你的虚荣心或不切实际的幻想

  • 你的目的一定要纯粹、简单

行动

  • 闭上你的双眼,思考一下你内心真实的希望,你是渴望力量、敏捷、还是智力
  • 目标一定要能激励你学习成长,同时具有可行性
  • 想象一下目标成功后的样子,然后倒推一下实现步骤
4. 寻找资源

很多人一开始学习的时候,就在网上搜索博客文章,遇到什么就学什么,这样没有章法,而且讲解不一定准确可行,导致事倍功半

资源清单

  • 官方文档 : 最准确的资源
  • 图书 : 书籍一般都对知识讲解比较深刻、系统,学习成本相对较高
  • 博客文章 : 实操性强,易于理解,但是系统性不强,不完全准确
  • 在线视频、课程 : 最为生动,但较为费时
  • 对你想学习的知识早已熟悉的人 :可遇不可求
  • 源代码 : 源码比较难懂、但最接近知识的本质
  • 实例项目 : github很强
  • 文献报告:专业性较强
5. 制定计划

行动

  • 从基础出发、制定一个可行的知识点学习计划
  • 不要超过学习范围,注意时间上的规划
6. 筛选资源

通过你的学习计划,筛选出你的学习资源,把冗余的、不太准确的资源去除

行动

  • 查看书评和目录,找出最优质的书籍
  • 不要把书籍中超过学习范围的知识点,纳入你当前的学习计划
  • 选择适合的在线视频或文章
  • 尝试了解相关英文文献
7. 浅尝辄止

目的: 对于知识内容有一个完整的了解

  • 既不能盲目的囫囵吞枣、要对整个知识体系有大致的了解
  • 也不能钻牛角尖、死磕浪费时间
8. 动手实践

目的:通过行动,对于知识内容的实现方式、产生效果有较为深刻的了解

行动

  • 写一个demo程序,或者测试案例
  • 对于教程的描述的现象和结果,要自己亲自体验和操作
  • 把暂时不懂的记录下来
9. 融会贯通

目前:对于知识整体的关联关系、原理有自己深刻的理解

  • 出于自己的好奇心,通过阅读文字、观看视频等,把某一个小知识点搞清楚
  • 有选择的反复精读相关知识,反复尝试,举一反三,直到弄懂为止
  • 将各个知识点串联起来,结合之前的实现,总结归纳成自己的知识图谱
10. 分享交流

将你所学的知识浅显易懂的讲给别人听,在这个过程中,你可能会有对这个知识额外的收获和理解。

行动

  • 将你所掌握的知识,写成文章,发布到网上,并回复别人的留言
  • 写一个开源的demo项目,用于阐述你所掌握的知识
  • 发表相关演讲和交流会
  • 在stackoverflow上回答相关问题