编程进阶网 编程进阶网
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机的原理
  • 操作系统原理
  • 网络协议原理
  • 数据库的原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 技能之旅
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Kotlin精通
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机的原理
  • 操作系统原理
  • 网络协议原理
  • 数据库的原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 技能之旅
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Kotlin精通
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • 毛选实战心法

  • 小人物的进修

    • 全书快速指引
    • 01.学习的七大原则
    • 02.需求层次的模型
    • 03.一起来做个练习
    • 04.要带上技能地图
    • 05.经营好自我公司
    • 06.信息过载怎么办
    • 07.体系思维很重要
    • 08.宏观学习的方法
    • 09.用海绵法找时间
    • 10.三段分解学什么
    • 11.链式和环式思考
    • 12.玩和教保证效果
      • 01.看一个真实案例
      • 02.学习遇到的困境
      • 03.未能深入地理解
      • 04.学习后要会输出
      • 05.实践学习法介绍
      • 06.模拟实践学习法
      • 07.教学学习法介绍
      • 08.教学学习法使用
      • 09.后来发生的改变
      • 10.今天起改变三点
      • 11.课后作业思考下
    • 13.学习方法论沉淀
    • 14.以结果导向计划
    • 15.目标设立和管理
    • 16.分解目标要明确
    • 17.计划的落地策略
    • 18.结果的检查改进
    • 19.掌握些做事方法
    • 20.高效成长方法论
    • 21.OKR目标规划法
    • 22.SMART目标设定
    • 23.SWOT分析方法论
    • 24.MECE分析法则
    • 25.二八法则的运用
    • 26.三种方案设计法
    • 27.RACI责任矩阵法
    • 28.PDCA执行方法
    • 29.番茄工作法实践
    • 30.六顶思考帽方法
    • 31.金字塔汇报方法
    • 32.STAR摸底分析法
    • 33.五步问题处理法
    • 34.五问根因分析法
    • 35.鱼骨图分析方法
    • 36.四维度总结分析
    • 37.阶段复盘方法论
    • 38.生命线分享游戏
    • 39.语言底蕴的提升
    • 40.阅读的持续提升
    • 41.理解能力的锻炼
    • 42.沟通能力的演进
    • 43.演示幻灯片提升
    • 44.学会高效地提问
    • 45.公众演讲的提升
    • 46.做好技术的演讲
    • 47.专注能力的提升
    • 48.自我自控的调节
    • 49.感知能力的提升
    • 50.记忆能力的训练
    • 51.质疑精神的分析
    • 52.思考能力的提升
    • 53.情商能力的学习
    • 54.写给平凡的你
    • 55.十年回望后记
    • 56.全书金句索引
  • 职场管理进阶

  • 书籍
  • 小人物的进修
杨充
2020-12-25
目录

12.玩和教保证效果

# 12.玩和教保证效果

# 目录介绍

  • 01.看一个真实案例
  • 02.学习遇到的困境
  • 03.未能深入地理解
  • 04.学习后要会输出
  • 05.实践学习法介绍
  • 06.模拟实践学习法
  • 07.教学学习法介绍
  • 08.教学学习法使用
  • 09.后来发生的改变
  • 10.今天起改变三点
  • 11.课后作业思考下

# 01.看一个真实案例

那年公司开始全面切 Kotlin,我提前 3 个月就买课、看书、刷文章。每次有人问我:"会协程吗?" 我都自信地点头:"会会会,看了两本书。"

直到组里来了一个新人,他端着电脑问我:"这个 withContext 切线程后,协程的状态是怎么挂起的?挂起以后线程做什么去了?" 我张了张嘴——

"嗯……就是、它会把任务……扔到另一个线程……然后……"

我说不下去了。新人挠了挠头,回工位自己去查了。那一刻我比他还尴尬。

更打击我的是当周晋升答辩,评委问了一句几乎一样的问题:"协程的挂起和阻塞的本质区别?" 我答了 30 秒就被打断:"你这是网上的标准答案,我想听你自己理解的版本。"

那场答辩我没过。评语里有一句话:

"学习投入可见,但输出能力薄弱、缺乏自己的实践与思考。"

答辩后我去找带过我的一位前辈复盘。她听完我的描述,没说什么,只递了我一张纸:

"你回去找你一个身边朋友,把协程讲给他听 30 分钟。朋友听不懂技术,但你必须让他至少能复述出 3 个要点。如果做不到,说明你根本没学过。"

我后来抽时间试了。讲了 5 分钟我就卡住了——我嘴里全是"挂起函数 / 协程作用域 / 调度器",朋友一脸懵:"你说的这些字我都认识,连起来我一个字都不懂。"

我突然意识到:我不是没学,我是只会'输入',没'输出'过。

那天我把 OkHttp 那张分层图的经验拿过来,强迫自己用大白话重新组织协程:"协程就像一个任务标签,标签可以从一根线挪到另一根线上接着干,期间这根线可以去干别的活儿。" 朋友听完点头:"这个我懂。"

下面这套Play 玩学习法 + Teach 教学习法,就是从那次"教朋友"开始,我一遍遍打磨、最后让我把"看过"真正变成"会了"的方法。

# 02.学习遇到的困境

graph TD
    A[学习困境] --> B[困境1:缺少实践机会]
    A --> C[困境2:学得不深]
    
    B --> B1[平时不学→用时来不及]
    B --> B2[平时学了→等很久才用到]
    
    C --> C1[自己感觉学的差不多]
    C --> C2[跟别人讨论就暴露不足]
    
    B --> D[解决方案:Play玩学习法]
    C --> E[解决方案:Teach教学习法]
    
    D --> D1[模拟实践场景]
    E --> E1[写作+培训]
    
    style A fill:#ffcdd2
    style D fill:#c8e6c9
    style E fill:#c8e6c9

针对不同维度的学习目标,可以分别采用不同的学习方法。不过就算你用对了方法,在学习过程中往往还是会遇到一些难以解决的困难,导致学习变成了"从入门到忘记"。

明明在课堂上听得津津有味,一做题却错漏百出;明明脑袋里涌动着万千思绪,却在需要表达时哑口无言。这其中的原因何在?

为何我们对知识的输入总是热情高涨,而对知识的输出却显得如此冷淡?那么,怎么摆脱这种的学习困境,如何保证我们的学习效果呢?

根本原因在于:我们过于依赖"输入型学习"(看、听、读),而忽略了"输出型学习"(做、写、教)。研究表明,主动输出的学习效果是被动输入的5-10倍。

# 03.未能深入地理解

真正的理解并不仅仅停留在"听过"或"看过"的层面。很多时候,我们过于依赖表面的理解,没有深入地去思考知识背后的逻辑和原理。

如果没有真正地将知识内化为自己的东西,将其转化为自己的思考方式和行为方式。这种浅尝辄止的学习方式,就是在走马观花,虽然看似浏览了很多,但却没有留下深刻的印象。

以学习数学为例,很多人可能觉得数学概念和公式很枯燥,但只要稍加思考,就会发现其中蕴含的深刻智慧。如果我们只是机械地记忆公式,而不去探究其背后的数学原理,那么在做题时就很容易出错。因为题目往往会变换形式,考验我们对知识的灵活运用能力。

判断自己是否真正理解一个知识点,有三个递进的检验标准:能复述——用自己的话把它说一遍,不看资料能说出核心要点;能解释——给不懂的人讲清楚,对方听完能理解;能运用——在新场景中应用它,遇到变化的问题也能解决。

很多人在第一层"能复述"就认为自己懂了,实际上只有达到第三层"能运用",知识才算真正被你掌握。

# 04.学习后要会输出

知识的输入和输出是一个相互促进的过程。通过不断地输出,我们可以发现自己的不足之处,进而有针对性地进行输入。同时,通过输入新的知识,我们又可以为输出提供更多的素材和灵感。这种良性循环,可以帮助我们不断地提升自己的学习能力。

因此,我们需要更加注重知识的输出,通过写作、演讲、分享等方式,将所学知识转化为自己的语言,进一步加深对其的理解和运用。

四种典型输出方式各有定位:写作难度中等、帮助梳理思路,随时可做、没有时间压力,适合日常沉淀;演讲 / 培训难度较高、锻炼效果最好,适合团队分享和技术沙龙;教别人难度高、倒逼深度理解,适合带新人和做导师;做项目难度中高、能把理论转成实践,适合有实践场景的时候。

# 05.实践学习法介绍

从科学学习的角度来看,学以致用的效果是最好的,光学不练学得不深,时间一长可能就忘记了。

在实践中会遇到一个常见的困难,那就是团队当前的工作任务当中并没有相关的实践机会。这种情况下,你学习某个技术就会陷入两难的困境:如果学的话,得不到实践,学得不深;如果不学的话,真的要用的时候又来不及。这时候怎么办呢?

完全放弃肯定是不可取的,因为机会都是留给有准备的人,如果来了一个新的任务正好要用到某个技术,到时候肯定是团队内谁有准备就安排谁,不会等到某个人学习完了再安排任务给他。

所以,需要找到一种方法,在暂时没有实践机会的情况下也能学好技术,这就是 Play 学习法。

# 06.模拟实践学习法

flowchart TD
    A[Play学习法三步骤] --> B[第一步:链式学习法学习技术]
    B --> C[第二步:列举常见场景并搭建]
    C --> D[第三步:在模拟场景中练习]
    D --> E[积累经验为实战做准备]
    style A fill:#c8e6c9

Play 学习法,就是通过模拟实践中的场景来进行学习和训练。主动创造 Do 的机会来提升自己对新技能的理解和记忆。

Play 步骤做法比较简单,主要分为三个步骤:第一步按照链式学习法的方式学习某项技术;第二步列举常见的场景,搭建模拟场景;第三步在模拟场景进行测试、体验和练习。

Play 学习法能够帮助我们更好的学习技术,但这并不意味着它能够完全取代工作中的实践,工作中的实践仍然是非常重要的提升自己的方式。Play 学习法的价值在于:让你在机会来临之前就做好准备。

# 07.教学学习法介绍

graph LR
    A[Teach教学习法] --> B[写作]
    A --> C[培训]
    B --> B1[不需要优美文笔]
    B --> B2[写作帮助梳理学习]
    B --> B3[边写边学即可]
    C --> C1[时间有限的压力]
    C --> C2[现场提问的挑战]
    C --> C3[锻炼效果更好]
    style A fill:#fff9c4

除了缺少实践机会之外,在学习的时候还会遇到另一个常见的困难,那就是学得不深,理解不够透彻。

很多人都有类似的经历:自己学习某项技术的时候感觉学的差不多,甚至都已经在工作中具体实践了,但是一旦跟别人讨论,或者在晋升的时候面对评委的提问,又会感觉很多东西都没有完全掌握。

这种现象背后的原因是,每个人的知识和技能都是有一定局限性的,不同的人理解会不一样,关注点会不一样,所以在讨论或者 PK 的时候自然会遇到各种各样的问题。

就算你有实践机会,也不太可能一两次就把一项技术相关的知识全部用到,总会有认知的盲区存在。Teach 学习法就是帮你发现和填补这些盲区的利器。

# 08.教学学习法使用

总结出学习的四个主要方法:Read、Write、Do、Teach。前面介绍的 Play 学习法是关于 Do 的,而 Teach 学习法对应的则是 Write 和 Teach。

教别人有两种方式,一种当面给别人进行培训,另一种是写成资料给别人阅读,比如书籍和在线课程。所以,Teach 学习法包括两种形式:写作和培训。

技术文章的写作不是文学创作,不需要优美的文笔和有吸引力的情节,看技术文章的读者关注的也不是文字是否优美,情节是否吸引人,而是讲得清不清楚,讲得对不对。是不是一定要等到把某个技术彻底搞明白后才能动笔呢?其实不需要,因为写作本身就是帮助我们学习和梳理的一个过程。

写作的价值不仅在于产出一篇文章,更在于写作过程中对知识的重新整理和深度思考。当你试图把一个知识点写清楚的时候,你会发现那些"以为自己懂了"的地方其实漏洞百出。这就是写作最大的价值——帮你发现认知盲区。

写作可以分成四步走:选题——选择一个你正在学的知识点,标准是自己有话想说、有经验可分享;列大纲——梳理知识的结构和逻辑,标准是大纲能独立表达完整思路;填内容——用自己的话解释每个要点,标准是不抄专业术语、用大白话说清楚;自检——读一遍看是否通顺,标准是一个不懂的人能看懂。

写作的时候,我们没有时间要求,没有现场压力,一句没写好可以重写,今天写不出来可以等到明天再写。但是培训就不同,培训的时间是有限的,有现场压力,听众可能会提出各种意想不到的问题,所以培训对你的能力要求更高,但是锻炼效果也更好。

培训需要你在有限的时间内讲清楚一个主题,你必须对这个主题掌握到一定的程度才可以做到,这就会强迫你去思考跟主题有关的各种信息和可能的问题。

培训比写作更有挑战的三个原因:一是时间有限,你必须在规定时间内讲完;二是现场互动,听众的问题你无法提前预知;三是表达压力,你不能像写文章那样反复修改,说出口的话就是最终版。正是这些压力,让培训成为了比写作更强的学习加速器。

最有效的 Teach 学习法,是"先写后讲"——先把知识写成文章,梳理清楚逻辑和要点,然后以这篇文章为基础做一次培训分享。写作帮你整理思路,培训帮你查漏补缺,两者结合效果最佳。

实际操作建议:每学完一个知识模块,先花 1–2 天写一篇总结文章;然后基于文章准备一个 15–20 分钟的分享;分享后收集听众的反馈和问题,回去修改和完善文章。这样一轮下来,你对这个知识点的理解深度会远超只看不写、只写不讲的人。

**看过 ≠ 学过,学过 ≠ 学会。**只有用 Play 在模拟场景里跑过、再用 Teach 把它讲给别人听过,知识才真的"长在你身上"。

你应该带走的三件事:

  1. 每一个新技术,都欠它一个"小 Demo":不动手就只是"知道",永远到不了"会用"。
  2. 每一段学习,都欠它一篇文章:写不出来 = 没真正理解,写作是最便宜的"自我体检"。
  3. 每一篇文章,都欠它一次分享:能讲到一个外行听懂,就到了费曼说的"真正会了"。

# 09.后来发生的改变

那次答辩失败之后,我每天花 20 分钟给朋友讲一个协程的概念,用他能懂的比喻。"协程像快递员,挂起 = 把包裹放在驿站,自己先去送别的;恢复 = 回来取,继续送。""线程像快递车,一辆车上可以拉多个包裹(协程),车不会因为一个包裹卡住就停掉。"

讲第 5 次的时候,朋友居然能反向问我:"那如果驿站爆仓了怎么办?" 我愣了一下,认真回答:"那就是协程的'背压'问题。" 然后我自己在脑子里也"叮"了一下——这正是我之前没想清楚的地方。

我把每次讲给朋友听的那些类比,整理成 6 篇博客。每篇大概 1500 字,全部不用术语,开头都是大白话。其中一篇《用送快递理解 Kotlin 协程》在公司内部技术站点上拿到了那一周的"最佳新手文章",被推到了首页。更意外的收获是——写第 4 篇的时候,我自己把"挂起函数到底为什么不阻塞线程"这个问题彻底搞懂了,是被我前 3 篇文章里"模糊的地方"逼出来的。

半年后部门组织技术沙龙,主管直接点名:"这一场让小杨来讲 Kotlin 协程,他写的那 6 篇文章我看过,讲得最清楚。" 那场分享 60 分钟,现场坐了 40 多人,没有一个问题把我问住。

下来主管拍了我一下:"半年前那个答辩崩盘的小伙子和今天这个,是同一个人?" 我笑了笑,没说话——其实我心里有答案:只是中间多了 6 篇文章 + N 次"假装教朋友"而已。

# 10.今天起改变三点

graph LR
    A[今天起改变三点] --> B[动手实践一个项目]
    A --> C[写一篇技术文章]
    A --> D[准备一次分享]
    
    B --> B1[找一个实际问题<br/>用所学知识解决]
    C --> C1[把学到的东西<br/>用自己的话写出来]
    D --> D1[给同事或朋友<br/>讲一个知识点]

选一个你最近学习的知识点,找一个实际的场景来动手实践。可以是做一个小 Demo、优化一段代码、解决一个实际 Bug。关键是要"玩起来"——不是照搬教程,而是带着好奇心去探索、去试错。只有通过实践,知识才能从"听过"变成"会用"。

把你最近掌握的一个知识点,用自己的语言写成一篇文章。写的时候要求自己:不抄专业术语,用大白话解释清楚。如果发现某个地方写不清楚,说明你还没有真正理解,回去继续学习。写完后发布到你的博客、知乎或内部知识库。

给你的同事、朋友或团队做一次 15 分钟的分享。不需要等到完全精通才开始,分享本身就是学习的过程。在准备分享的过程中,你会被迫系统地梳理知识,思考听众可能提出的问题。这种"输出倒逼输入"的方式,是保证学习效果最有力的武器。

# 11.课后作业思考下

自检类:

  1. 输入输出比例检测:回顾你过去一个月的学习活动,统计输入(看书、听课、读文章)和输出(写文章、做分享、做项目)的时间比例。如果输出不到 20%,你的学习效果很可能大打折扣。思考如何把输出比例提升到至少 30%。
  2. 费曼测试:选一个你认为自己已经掌握的知识点,尝试用大白话向一个完全不懂技术的朋友解释清楚。如果你做不到,说明你的理解还停留在表面。找出你解释不清楚的部分,重新学习直到能够流畅地用简单语言说明白。

实践类:

  1. Play 学习法实践:选一个你目前只是"了解"但还不"掌握"的知识点,用 Play 学习法进行实践。具体做法:设定一个实际问题→尝试用这个知识点解决→遇到困难回去补课→再次尝试直到解决。记录整个过程,对比实践前后你对这个知识点的理解深度。
  2. 写作+培训双重挑战:选一个你擅长的技术主题,先写一篇 1000 字以上的技术文章,然后基于这篇文章准备一个 15 分钟的分享。完成后对比:写作和讲述对你的理解分别产生了什么帮助?哪种方式对你的提升更大?
上次更新: 2026/07/27, 15:53:15
11.链式和环式思考
13.学习方法论沉淀

← 11.链式和环式思考 13.学习方法论沉淀→

最近更新
01
audit
07-27
02
C++入门教程全章思考题汇编
07-24
03
12.技术团队建设能力
07-21
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 鄂ICP备2024073355号-1 | 鄂ICP备2024073355号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式