培养编程思维的学习方式
两个核心:「刻意练习」和「知识迭代」
我们以编程学习的步骤预习、学习输出、复习这三个阶段来讨论刻意联系和知识迭代如何应用在编程学习中。
一、预习
其实预习这部分,不需要太多时间,预习只是预习即可。重点的是学习和复习的作用占比最大。
但是第一次接触某知识,那么预习也相当重要。
我简单将预习分为:重点和难点。
-
举个例子:当某天的课程,在晚上通过视频或者文档预习了,发现自己完全不知道的地方,那么就是重点。如果是看了之后,有些理解,有些不理解,那么这里就可以归为难点。
总结一下:
重点:看了后完全不理解的地方。
难点:看了后只理解部分的地方。
不难看出,我们是按照个体的能力差异进行划分的,目的是掌握知识。
二、学习和输出
【核心书读的薄,然后厚,最后薄】
有人会问,为什么把学习和输出放在一起?
其实是费曼学习法,强迫自己讲解代码,假装要讲给完全不懂的人。
输出的时候以动态笔记作为核心,今天学习了什么一定要输出,一篇技术博客。其实每天学习的知识很可能都是“面”,如何理解呢?
好的一篇技术博客一定是采用单线结构。
把问题说清楚的关键,在于你的思想是否清楚。
-
当想清楚了一个问题,只要掌握几个基本诀窍,就可以写出一篇好的技术文章。当然前提是得把问题想清楚。
我们当天学习的知识一定是一个“面”,这个“面”往往代表了很多个知识冗杂在一起,而不是单纯的线性结构,能把知识讲透。
就好比,去景区去旅游的时候路线繁多,而不知道要选择哪一条进行游览。往往是由导游带领一条最火热的路线进行游览,那么我们也只能跟随导游游览最普遍的一条道路。
就像读书一样,先读书,然后写笔记,把书读薄;后续又读了其他书,又扩展原先的笔记,这样把书读厚;原先扩展的笔记到达一定程度,最后我们以单线结构再讲出来,一次只讲解一个知识点,以该知识点讲解为主线,力争将一个点知识讲透。
目的:最终要耐心梳理出一条线索,把某条知识讲解出来;
书读厚的过程,也是就笔记扩展到一定程度,那么一定是一种网状结构,像我们的思维一样一团乱麻,这时候需要将网状结构的思维,抽丝剥茧,整理出单线结构。
最后发出的一篇好的博客一定是一种单线结构,一个个单线结构多了,一条条梳理开,最后可以转为层次结构,像逻辑图一般,知识就有逻辑可循了。
三、复习
其实就是对抗大脑的遗忘机制,只有不断的反复。
三阶段复习法:
一阶段
第1遍:对照笔记复现
第2遍:脱离参考资料,编写代码,或者复现功能,直到写到非常丝滑,写该代码或项目完全没有挑战。
第3遍(针对算法题):限时编码
-
肌肉记忆训练:对经典算法(如快速排序)每天手写一遍,持续一周。
-
错题:建立错误代码库,每月分析错误模式,针对高频错误设计专项训练
其他:
一、写不出代码的困境
1.逆向拆解法:遇到复杂功能时,从输出结果倒推实现步骤 例:开发计算器 目标:实现(2+3)*4=20 拆解:
-
解析括号优先级
-
字符串转表达式
-
运算符调度
2.橡皮鸭调试法:对遇到的问题进行口头阐述,往往在讲述过程中就能发现思路盲点
3.最小可行单元法:将大问题拆解为可验证的小模块 例:开发购物车系统 先实现「添加商品」→「显示清单」→「计算总价」分步验证
拆为小demo慢慢再添加功能。
核心还是需求分析。
二、提问
提问前必做三件事:
-
准备具体报错信息(截图+代码片段)
-
展示已尝试的解决方案
-
说明自己的分析思路
建立问题优先级象限:
-
紧急且重要(如项目卡壳)→ 立即联系
-
重要不紧急(如概念困惑)→ 预约深度讨论
定期学习复盘:每两周与导师回顾学习轨迹,调整学习路径。
参考:阮一峰的网络日志