xuzhengfu / pilot

进入编程世界的第一课
1 stars 0 forks source link

“边读边做” 还是 “读完再做”? #17

Open xuzhengfu opened 4 years ago

xuzhengfu commented 4 years ago

1. 之前的学习方法是什么?

  1. 阅读,提取 “待执行任务”,并记录;
  2. 操作,执行 “待执行任务”,并记录。

2. 我的目标是什么?

把这门课学好。

3. 做好这件事情的关键在哪里?

把这门课要求我做的事情,都做好。

4. 实现这一目标的最佳策略是什么?

  1. 先把这门课完整过一遍,把这门课要求你做的事情,根据自己当时的能力尽力去做。最终的结果是:有一些任务你的得分为 0 —— 完全没有能力做;还有很多任务只能得 60 分,刚刚及格。这都没关系,因为你当时的能力只有这么多。在这个过程中,你的能力会有增长;原因在于:你掌握了很多知识点和操作。

  2. 再把这门课完整过一遍,把当时不能做的、做不好的事情,根据此时的能力再尽力去做一遍。最终的结果是:之前那些完全不会做的事情,现在已经会做了,或者会做一部分了;那些之前得分不高的事情,现在做得好多了。在这个过程中,你的能力还会有增长;原因在于:你又掌握了很多知识点和操作,并对之前掌握的知识点有了更深的理解,对之前掌握的操作有了更佳的熟练度。

  3. 再把这门课完整过一遍……

个中逻辑在于:

把注意力放在 “结果” 上是没用的,关键在于能力。

所谓 “结果” 指的是:做一件事情的最终评分,或者,做一件事情所花费的时间。把注意力放在 “结果” 上的人总是在想:“呀!这做得也太差了!”、“哎,我怎么花了这么多时间!”。

为什么把注意力放在 “结果” 上是没用的?原因在于,这些结果只是你当时能力的常规体现而已。做一件事情的最终评分,做一件事情所花费的时间 —— 都取决于你的能力。

问题在于?怎么提高能力?

答案是:掌握更多的关键知识点。而实现这一目标的最佳策略就是「重复」。用数理逻辑的方式来表达就是:

设:这门课要求我做的某件事情为 x ; 自己的能力值为 ability ; 执行任务 x 的最终评分为 score(x) ; 执行任务 x 花费的时间为 time(x) ; 关键知识点的掌握数量为 n ; 关键知识点的掌握程度为 k ; 重复练习的次数为 c 。那么:

  1. k ∝ c * n
  2. ability ∝ k * n
  3. score(x) ∝ ability
  4. time(x) ∝ 1/ability

5. 影响行动的关键因素是什么?

先把这门课完整过一遍,把这门课要求我做的事情,根据自己当时的能力尽力去做。

关键在于,第一遍怎么个过法?是 “先完整读完一章,然后整理、提炼,最后再做”,还是 “边读 边整理提炼 边做”?哪种方法更好?

6. 什么最重要?

「把这门课要求我做的事情,都做好」最重要。

7. 哪种方法更有利于这个目标的实现?

专注度 执行 "读、做" 闭环的难度 阅读效果
边读边做 100 10 100
读完再做 10 100 10
  1. 与 “读完再做” 相比,“边读边做” 更容易实现 “阅读、操作” 的闭环,因为一个章节闭环被分成了若干个子任务闭环。

  2. “边读边做” 的阅读效果更佳。采用 “读完再做” 的策略,通常的结果是:通篇读下来,基本不知道它在讲什么——因此容易走神。而 “边读边做” 则因为可以及时操作,故而可以最大程度上理解所读内容的涵义。

8. 所以,正确的学习流程是什么?

  1. 打开一个章节;新建一个 task issue(如 “README 进入编程世界的第一课”、“x1-setup 编程环境配置指南”);打开编辑器。

  2. 朗读一个意义单元。

  3. 在编辑器中对刚才朗读的内容进行删减、整理,形成 “待执行任务”(以 “二级标题” 标示),并将该任务的操作步骤逐个列出(以 “三级标题” 标示);

  4. 开始操作,并将操作过程中的思考、”所做之步骤“ 及其产生的结果,全部记录下来;

  5. 若在一个章节未完成时停止,需在内容的最后注明:

    停止点:[将停止段落的第一句话复制到此处]

  6. 加上 Logging,而后将编辑器中的所有内容都复制到 task issue 中;

  7. 打开主线任务 #2,更新工作内容(以 “二级标题” 标示的 “待执行任务”);

附:打开主线任务 #2 查看工作进度,以继续工作。

Logging

2020-02-09 18:27:37 initialize