1. 先想清楚:学习这件事,为什么需要一套“方法论”
先抛个问题:你有没有过这种体验——收藏了一堆教程、买了好几本“神书”、报了名参加训练营,结果几个月过去,真正内化成自己能力的东西少得可怜?不是你不够努力,而是你一直在用“原始人”的方式处理“现代”的知识。知识本身是结构化的,但很多人的学习过程完全是随机的、散装的,今天看到一篇好文章收藏,明天刷到一个视频点个赞,看似学了很多,实际上脑子里还是一团浆糊。
我做了多年技术开发,也带过不少新人,见过太多人卡在同一个地方:代码能跑,但换个场景就抓瞎;笔记记了好几本,但遇到问题还是不知道怎么下手。后来我慢慢意识到,学习能力强的人和普通人的差距,往往不在于智商,不在于记忆力,而在于有没有一套成体系的学习方法论——你用什么方式拆解问题、用什么方式组织知识、用什么方式验证自己是不是真懂了。
那这套方法论到底是什么?往深了说,它跟“API”的设计思想有非常强的相似性。API——应用程序接口——是软件世界里最伟大的抽象工具之一。它把复杂的内部实现封装起来,对外暴露一组清晰的调用接口,你只要知道“输入什么、得到什么”,就能用它组装出复杂的功能,根本不需要关心内部是怎么实现的。学习方法论本质上也是这样:你把海量的知识封装、抽象、建立起调用关系,然后你就能把知识当成积木一样组合起来解决新问题。
这篇文章想跟你聊的,就是把这两件事放到一起:学习方法论的内核是什么,以及如何用“API思维”去理解学习、设计自己的学习系统。我会结合实际开发中的例子和经验,拆解一套我自己用下来很顺的学习框架,包括怎么评估一个知识值不值得学、怎么把知识拆分成小单元、怎么建立“调用”它的能力、怎么做反馈和修正——以及最后,怎么把别人写好的“知识API”真正用到你自己的项目里。适合正在学技术、或者学什么都觉得进度慢、学完就忘的人参考。
2. 学习系统的整体设计:从接口、实现到调用关系
2.1 为什么说学习类似于“调用API”
你回忆一下,自己在工作中真正用得熟练的技术栈,是不是都有一个共同特征:你很清楚它“能干什么”,也知道在什么场景下“该调它”,哪怕内部原理你没完全吃透,你照样能把它用得飞起。比如很多人天天用某个前端框架写页面,但不一定读过它的源码;每天都在用某个网络库发请求,却不清楚底层连接池是怎么管理的。这不丢人,这才是正常的。
这恰恰就是API思维的精髓——你不需要理解每个细节,你只需要理解接口的约定。编程里的接口约定通常包含三样东西:输入参数、输出结果、可能抛出的异常。放在学习上,对应的是:一个知识点在什么场景下派得上用场(输入),用它能得到什么结果(输出),以及它有哪些局限性、什么时候会失效(异常)。如果你学一个知识的时候,能很快答上来这三件事,你对它的掌握程度就已经超过大半数人了。
但也别矫枉过正。真正的高手不是“只调API、不看实现”的调用者,而是会“按需深挖内层实现”的人。我们需要的是分层学习——多数时候站在“调用者”的角度去理解一个知识,等它真正成了你的高频依赖项,再花时间往底层钻。这个顺序很重要,很多人学东西学不下去,就是因为一开始就想直接干底层原理,结果被复杂度劝退。
2.2 学习系统的三层架构:接口层、实现层、应用层
我自己私底下爱把一套完整的学习系统拆成三层,类比软件架构。这三层缺一不可,而且顺序不能乱。
接口层(Interface):这是你对一个知识的“表面认知”。包括概念定义、适用场景、基础用法、代表作或经典案例。在这一层,你学的是“怎么调、调了之后大概能得到什么”。
实现层(Implementation):这是知识的内部机制。包括原理推导、底层数据结构、算法逻辑、架构设计的取舍、边界条件。在这一层,你学的是“它为什么能跑起来,它的瓶颈在哪里”。
应用层(Application):这是用知识解决真实问题的能力。包括把它组合进自己的项目、改造它以适应新的场景、调优它的参数、选择何时不用的判断力。在这一层,你已经不是在“学知识”,而是在“用知识做东西”了。
很多人学习失效的原因,是永远停留在接口层。他们熟悉各种名词、概念,能看懂文章里讲的原理,但从来不亲手把它放进一个真实场景里去“构建应用”。所以一到面试、答辩,或者独立做一个需求的时候,就露怯了。而另一类人则相反,一上来就钻实现层,把一个简单的事情搞成学术研究,迟迟落不了地。真正有效的学习,应该从接口层快速进入应用层,然后按需回补实现层。这是一个动态循环,不是一个线性的三步走。
2.3 设计你自己的“知识调用协议”
既然把学习类比成API调用,那我们就需要一套自己的“协议”,用来统一管理知识的调用。我管这套协议叫“四个W一个H”。每次接触一个新知识点,或者学完一个模块,我会强制自己回答这几个问题:
- What:这个东西到底是什么,它是干什么的?用一句话(最多三句话)说清楚。
- When:在什么场景下应该想到用它?什么场景下不应该用?
- Why:为什么它能解决这类问题?它背后的核心思路或原理是什么?
- How:具体怎么上手?第一步做什么,第二步做什么?
- How much:搞懂它需要什么前置知识?大概要投入多少成本?
这五连问就像一份“知识接口文档”。答得上来,你就相当于把知识点注册进了自己的知识库;答不上来,说明你还停留在“见过”的阶段,谈不上“会用”。我建议你可以准备一个文档,每学一个新知识点就按这个格式填充,不用长篇大论,每项写两三行就够。关键是逼自己输出,因为输出的过程就是整理思路的过程。
注意:这个方法看起来简单,但真正执行起来需要一点“中二精神”。别高估自己的记忆力,写下来和“以为记住了”完全是两码事。
2.4 为什么“先框架后细节”是最高效的路径
很多技术新人问我的第一个问题是:某某技术该从哪里开始学?我通常不直接回答,而是问他们:你先看过它的整体结构了吗?他们大多摇摇头。这就是问题所在。你想了解一座城市,正确的做法是先看地图、了解城区分布和主干道,再走进具体的街道、看具体的店铺。而不是下飞机就随机钻胡同。
学一个领域也是一样。先搭建一个粗糙但完整的框架,把主干道和板块分清楚,然后再往具体模块里填充细节。比如学一个开发框架,先搞清楚它分哪几个核心模块、这些模块之间怎么传递数据、各个模块的定位和边界,然后深入到某个模块的具体API和用法。这样你学的每个细节都是有“坐标”的,不会迷路。反之,一上来就死磕某个细节,你会陷入“只见树木不见森林”的困境,而且很容易遗忘——因为你脑子里没有一个能挂住这个知识的钩子。
这就是我为什么强调“整体设计”要先行的原因。不是所有细节都值得在第一轮学完。先完成接口层的广度覆盖,再去补应用层和实现层的深度,效率会高得多。
3. 核心细节拆解:知识的封装、输入输出与异常处理
3.1 把知识“封装”成独立模块
我经常跟人说:别用“文件夹思维”管理知识,要用“封装思维”。文件夹思维是把资料扔进一个命名好的盒子里——大多数人记笔记就是这么记的,标题分类分得挺勤快,但内容与内容之间是没有交互、没有关联的,你存了就等于丢了。封装思维不一样,它要求每个知识块是一个自洽的独立模块,具备自己清晰的输入、输出和行为边界,就像代码里一个函数。
举个例子,你在学“缓存”这个东西。不要只记“缓存就是把数据放内存里加速读取”这一句话,而是要把它封装成一个完整的知识单元:
- 输入:什么数据适合缓存(读多写少、实时性要求不高),缓存的大小限制,缓存失效策略。
- 处理逻辑:读缓存时先查内存,未命中再查数据库并回填;写数据时先更数据库再失效缓存。
- 输出:对调用者来说,表现为“查询更快了、响应时间更低了”,但代价是可能读到脏数据。
- 异常情况:缓存穿透、缓存击穿、缓存雪崩分别是什么,怎么应对。
你看,一旦这样封装,你学到的就不是一个名词,而是一个可以“搬走”的模块。以后你在另一个项目的代码里看到缓存,你就能快速把它迁移过来用,因为你掌握的是一套完整的行为逻辑,不是一句抽象的概念解释。
3.2 输入参数:识别一个知识的“适用边界”
判断一个人是不是真的懂某个技术,我有个土办法:问他“你什么时候不用它”。能回答出“不用它”的场景,比能回答出“用它”的场景,更能说明他懂。因为任何一个技术方案都有前提条件和适用范围,没有银弹。
拿关系型数据库和NoSQL来说。很多人会背“关系型数据库支持事务、NoSQL适合海量数据高并发”,但这个认知太粗糙了。一个进阶学习者要给这个知识定义清晰的“输入参数”——什么条件下选择它才是合理的:
- 数据之间有强关联、需要多表关联查询、需要强一致性和事务支持 → 选关系型数据库。
- 数据量大到单机存不下、写并发极高、对强一致性要求不高,但要求高可用和水平扩展 → 考虑NoSQL。
- 数据模型灵活多变、速度要求高、不需要复杂的查询语言 → 文档型NoSQL更合适。
这种“参数化”的思考方式,才是学习的核心。因为你只有把知识的适用条件琢磨清楚了,才能在新问题面前快速匹配。很多时候,你学了很多技术但不会用,不是因为你不知道它们的功能,而是因为你不知道它们的“输入条件”长什么样。这就好比你知道工具架上有扳手也有改锥,但如果你不清楚当前螺丝是十字还是六角,你自然说不上来该用哪个。
3.3 输出结果:从“学会”到“能交付”
学习有没有产生输出,是衡量你是否真正“会”的一道分界线。“嗯这个我看懂了”和“我能把它做出来、讲出来、教给别人”之间,隔着一条巨大的鸿沟。所谓懂了,很多时候只是“感觉懂了”——跟着别人的思路顺了一遍,觉得逻辑通顺,就误以为是自己会了,其实那是别人的逻辑在跑,你的大脑只是乘客。
我强烈建议用“费曼式输出”来验证自己的掌握程度:试图把这个知识讲给一个完全不懂的人听,如果你能让他听明白,说明你真的理解了这个知识的层次结构;如果你讲起来断断续续、嘴里都是说不清楚的黑话,那说明你还没把它内化成自己的东西。或者,更硬核一点,直接拿它去解决一个实际问题——写一个小程序、搭一个小的演示系统、完成一个数据分析任务,反正要“动真格的”。知识只有在真实使用过程中,才会跟你的既有经验发生嫁接,变成你思维的一部分。
这里顺便提一个我在带新人时常用的方法:让他们在学完一个技术模块后,给自己出一个小项目,强制包含这个模块的核心用法,项目不用大,但必须自己从零写。写不出来就回头看文档,再写,直到跑通。这个过程的“痛苦感”是很真实的,但恰恰是这个痛苦,才能刺激真正的成长。
3.4 异常处理:最常见的“学习故障”及对策
写代码,我们总要处理异常分支:网络超时、参数非法、资源不匹配。学习也一样,有几种高频“异常”,如果不好好处理,整个学习系统都可能崩溃。
第一个常见异常叫“收藏即学会”。解决办法是强制设定期限:收藏的资料必须在24小时内打开、整理、输出三行摘要。如果连这个都做不到,当时的收藏根本没有意义,清掉就好。
第二个异常叫“进度焦虑”。看到别人学得快,自己就狂赶进度,导致前面地基打不牢,后面全面崩盘。解决办法是建立“完读率”和“复用率”两个指标,周期复盘,少看别人的表面进度。学习不是赛跑,是搭积木——上面的积木再漂亮,底下的积木是虚的,迟早塌。
第三个异常叫“纸上谈兵”。学了一堆概念,一动手就卡壳。解决办法很简单,把学习资源的比例控制在:理论理解占30%,动手实践占70%。每天必须有一次“手比脑子快”的练习时间——先别想那么多,先敲起来再说。
这三个异常对应到API上,就像是“超时重试”、“限流降级”、“熔断保护”。你要给学习系统预设好兜底方案,才不会在情绪波动或现实压力下直接崩溃。
4. 实操过程:从零搭建一个“个人知识调用系统”
4.1 Step 1:建立原始知识索引
我目前实践下来最顺手的知识管理,不是靠大脑记忆,也不是靠某个单一笔记软件,而是建立一套“原始索引 + 主题笔记 + 项目档案”三层结构。
原始索引层是你接收信息的入口。它像一个API网关,统一接收你从文章、视频、课程、书籍里看到的“知识请求”。我建议建一个简单的表格或文档,实时记录以下字段:来源(哪个链接、哪本书)、时间、笔记原文里的核心观点、为什么我当时觉得它有用。这一步不要做深度整理,当流水账记就行,目的是不丢信息。
然后定期(每周或每两周)做一次索引清理,把原始索引里仍然觉得有用的条目,升级到“主题笔记层”,并顺手按照上面说的“四个W一个H”格式补全。这样一来,原始索引是你的“输入缓冲区”,主题笔记是你的“长期存储层”,两层之间定期同步,知识不会堆在入口处腐烂,也不会因为迟迟不整理而越积越乱。
4.2 Step 2:为主题笔记定义统一的格式规范
没有格式规范的笔记库,很快会变成垃圾场。我给自己的主题笔记定了一个模板,你完全可以抄去用:
- 一句话定义:这个知识点是什么。
- 适用场景与时机:什么情况下用、什么情况下别用。
- 前置依赖:要真正掌握它,需要先了解什么。
- 核心流程/步骤:拆解成3-5个步骤,每个步骤配一句操作要点。
- 关键参数/细节:那些“魔鬼藏在细节里”的东西,比如常见配置、默认值、注意事项。
- 输出例子:我亲手做过的、能证明我确实用过它的实例。
- 踩坑记录:我犯过的错,以及对应的规避逻辑。
这个模板的好处在于,它天然强迫你用“接口文档”的视角去整理知识。很多人写笔记只有“概念摘录”,没有“操作步骤”,更没有“自己动手的案例”,这种笔记信息密度极低,复习起来毫无用处。而一旦你把“踩坑记录”写进去,你的笔记就有了“异常处理分支”。下次再遇到类似场景,你的笔记会直接告诉你“别走这条路”。
4.3 Step 3:用“项目驱动”的方式触发知识调用
这一部分是真功夫。光有笔记不算会,你得在真实项目中反复调用它。打个比方,API设计得再优美,如果没人调用它,它就是一个死接口。知识也一样,它需要在你的脑子里被多次调用、组合、修改,才算真正“活”了。
所以我强烈建议你自己运营两三条“学习生产线”:每个学习周期,挑一个里程碑式的小项目,让项目需求倒逼你调用你正在学的知识。比如你刚学完一个图表库,那就做一个可视化报表;你刚学完一种数据结构,就把它用到一个小工具里解决一个排序/去重需求。项目规模不必大,但必须能“跑起来”,必须能看到实际输出。
我个人的习惯是每学一个新知识的头两周内,至少在一个最小项目里调用它一次;一个月内,再做一次扩展性的二次改造。这种“间隔重访”比集中刷十遍笔记都管用——因为它是在不同情境里反复激活同一个知识节点,符合记忆形成的底层规律,也符合API被“多方调用”才会成熟的规律。
4.4 Step 4:建立反馈闭环,持续修正“接口”
我见过太多人学习是“不可迭代”的。他们学完就算,从不复盘。这相当于你把一段代码部署上线,却从来不看日志——出不出问题、性能好不好,全凭感觉。成熟的学习系统必须包含一个反馈闭环,至少要跑通这三步:
- 观察:我最近用这个知识解决实际问题时,成功率和效率如何?在哪些场景下卡壳了?
- 归因:卡壳是因为我前置知识不够、概念理解错了,还是因为上次实践太浅?判断清楚再行动。
- 修正:回到主题笔记,把“认知升级”补进去。更新“踩坑记录”,优化“适用边界”的描述,甚至重新调整整个知识分类的框架。
这个“观察-归因-修正”的循环,就相当于软件版本迭代。你每一次的重访,不是简单地“再看一遍”,而是以新的认知水平去重新评估这个知识节点,顺手把旧笔记里那些模糊不清的描述改掉。久而久之,你的知识库就不再是你“存进去是什么样就是什么样”的死文档,而是会随着你水平提升而持续演化的“活系统”。
5. 常见问题与排查技巧实录:绕开这些学习系统的“运行故障”
5.1 学得快忘得快,笔记记了像没记
这是被问得最多的一个问题。我的排查思路是这样的:先别归咎于记性差,先看看你“提取”知识的频率是不是太低了。大脑的记忆规律是,存储强度随时间上升,但提取强度随时间衰减。所以对抗遗忘的靠谱手段是“间隔提取”,而不是“反复重读”。
具体的解法是:建一个“随机抽查表”。把学过的知识点做成一个个问题卡片,每周随机抽5个,不看书直接作答。做不出来的就去翻笔记,并在卡片上留一个“复述失败”的标记。下个星期专门复习那些失败标记多的知识点。这个机制类似于“自动化测试”,用最小成本反复触发你“提取”知识的能力,效果比你花一整天“复习”强得多。
5.2 学了很多,但遇到问题想不起来用
这个问题的根源通常出在“知识没有挂靠场景”。如果你学的时候只是孤立地学概念,没有给它建立一个“触发场景”,那到了真实问题面前,你的大脑根本不会联想到它。我以前带新人时,经常看到他们学完某个工具,到了实际开发里用了另一套笨办法,因为“压根没想到还有这玩意儿”。
解决办法也很直白:在学习笔记里,专门给每个大知识块加一个“断言清单”——列出我未来遇到什么情况,我应该第一时间想起它。比如学完缓存,写下:凡是遇到“列表查询越来越慢、数据库压力大”这种关键词,我要想到缓存;学完消息队列,写下:凡是遇到“削峰填谷、异步解耦”这类需求,我要想到消息队列。这就是训练“条件反射”,把知识从“存储器”里搬到“调用决策表”里。
5.3 自制力不够,很难长期坚持一套方法
说实话,我自己的习惯也不是一夜养成的。学习方法的落地,最忌讳“全套上马”。你上来就要严格执行“四个W一个H”加“项目驱动”加“随机抽查表”,大概率坚持半个月就崩了。正确做法是“渐进增强”:第一个月,只做“一句话定义+适用场景”两项;坚持住了,第二个月再加“核心步骤”,第三个月再加“踩坑记录”。
另外,建立一个“硬性触发钩子”。比如设定闹钟,每隔一天提醒自己做一次“知识API五连问”;或者加入一个同行小组,每个月互相分享一次“个人知识接口文档”。外部约束在初期是非常必要的,别太信自己的意志力——我到现在写笔记也需要日历提醒,不然一忙就忘。
5.4 为什么我学“实现层”总是卡住,要不要继续死磕
死磕底层原理是很多人的执念,但学习路径里有一个重要原则:接口层和应用层未建立之前,死磕实现层是最低效的行为。先会用、先做出东西、有了直观感受,然后再反过来看实现原理,你会发觉很多当初看不懂的地方一下子就通了。
如果卡在一个原理上超过两小时,我的建议是:立刻切走。把它挂在一个“待回补”清单上,先往下推进别的部分,隔几天再回来。因为学习的“顿悟”经常发生在你带着问题做了大量看似无关的实践之后——你的潜意识一直在后台计算,缺的往往只是一个关键拼图。不要逼自己在一次性连坐式学习中把一切搞懂,这不现实,也没必要。
5.5 笔记做了一堆,但没什么复用价值
如果你发现你的笔记除了给自己一点“安全感”外,几乎没有被后续项目调用过,那它大概率是“摘录型笔记”。这种笔记的本质是搬运,不是加工。加工的标志是什么?是你把原文里的信息揉碎重组,加入了自己的判断、补充了自己的例子,并明确指出了它跟其他知识的连接点。
以后记笔记前可以问自己一个问题:如果我把这段笔记发布出来,别人看了能照着做吗?如果答案是不能,说明内容还不够“接口化”——缺乏输入输出、步骤和实践反馈。那就回去重写,直到它像一个可调用的接口,而不是一段摘抄。
6. 拿“学习方法论”去学技术的具体案例拆解
6.1 案例背景:从零上手一个跨平台UI框架
我拿一个特别典型的场景来说:一个同事要学一个跨平台UI框架,完全零基础,但他有一个两周后要交付的模拟项目。他是怎么做的呢?第一步,他用了“先框架后细节”的思路,先看了官方教程里的“概览+快速开始”,只花了一个小时,把组件树、状态更新、事件绑定这三个核心概念跑通了。第二步,他没有继续往下深挖文档,而是直接打开编辑器,照着官方demo敲了一个简单的页面出来,先让项目“活”起来。第三步,他在写页面的过程中遇到不会的布局、不会的交互,回头查文档、查社区例子,一个问题一个问题击破。两周后,项目顺利交付。
这个过程踩中了所有核心方法论:接口层快速进入、应用层迎面痛击、实现层按需回补。他不是靠“看完全部文档再动手”成功的,而是靠“先动起来,再在真实需求驱动下精准补课”成功的。
6.2 框架知识怎么用“API文档思维”学习
任何技术框架都可以当成一组“API集合”来学习。以现代UI框架为例,核心API就那么几个大类:数据状态、模板渲染、事件处理、生命周期、副作用管理。如果你心里先有一个“输入-输出”的认知框架,学起来会特别快。比如:
- 数据状态:输入是一份数据模型,输出是界面对用户输入的状态响应。
- 模板渲染:输入是数据和模板语法,输出是DOM结构。
- 事件处理:输入是用户操作事件,输出是执行回调、更新状态。
- 生命周期:输入是组件挂载/更新的时机,输出是你在对应时机执行的逻辑。
你会发觉,一旦把每个概念都整理成“输入-输出-适用场景”,学习一个框架的语法细节就不需要死记了。你只需要记住“我要做什么”,然后查那个类别的API就行。脑子是用来思考的,不是用来背API签名和参数默认值的。我每次看到有人一行行抄API文档做“学习笔记”,都替他心疼时间——那其实是在做搜索引擎本来就能做的事,不是在做学习。真正的学习发生在你把它用到自己的场景里、解决具体问题的时候。我后来整理笔记的核心习惯就是:每个技术点必须配一个“我自己的例子”,哪怕是三行代码,也比抄十页文档有价值。
这里再补充一个“重写示例”的小技巧。看别人的代码示例时,看完第一遍,合上屏幕,强迫自己从头默写一遍。写不出来的地方,说明你还没抓住这个示例的精髓。默写的过程就是在模拟一次“知识调用”,比你对着屏幕读三遍有效得多。这也是把别人的“API”变成自己的“API”的关键转轮。
6.3 实际效果与注意事项
这套方法用在实际学习上,效果体现在两个地方。一是启动速度快。因为你不再追求先完备再行动,所以从“不会”到“做出第一个能跑的东西”之间的时间被大大压缩了。二是遗忘率降低。因为你不是死记硬背,而是通过解决真实问题把知识跟场景挂钩,记忆提取线索非常丰富,自然记得牢。
当然也有几个注意事项。第一,这种方法不太适合“打地基类”知识,比如基础语法、基础数学,这类知识没有办法绕过大量的训练和重复,别指望“框架思维”能让你跳过基本功。第二,别把“项目驱动”搞成“项目堆砌”,如果你只是为了做项目而做项目,做完一个丢一个,不复盘不沉淀,那你依然没有形成知识网络,只是在生产一次性垃圾代码。第三,要学会主动管理“未知清单”,明确记录那些你暂时不想深究的黑盒,并在名单上注明“未来某天我要搞懂它”。这个清单本身就是你学习的路线图。
7. 最后想说的几句经验之谈
方法讲到这里,该讲的逻辑都讲了,该给的模板也给了。但我想在最后多说一点自己的体会。
很多人误以为“学习方法论”是一套万能公式,拿到就能立刻变学霸。其实不是。方法论的真正价值,是给你一个检测和修正自己行为的手段。它不会替你去读书、去敲代码、去熬过那些枯燥的基础训练,但它能在你迷茫的时候帮你定位问题所在:你学不下去,是因为没建立框架;你学了就忘,是因为没有提取练习;你不会应用,是因为没有构建项目触发条件;你效率低,是因为没有形成反馈闭环。一旦你能用这套“诊断逻辑”来解释自己的学习困境,你就能主动做出改变了。
最后分享一个我一直沿用的“两小时法则”。任何新知识,从接触它到做出第一个成品,我给自己定的目标是不超过两小时。这个成品可以是一个三分钟能讲完的小demo、一篇几百字的笔记、一次复述录音。它不需要完美,但必须是“完整地走完一个最小闭环”。这个法则逼着我不断克制贪多求全的欲望,也逼着我每一次学习都必须留下“可调用的产出”。两小时法则帮我看清了学习的本质:**不是输入了多少,而是输出了多少。**希望这套思路也能帮你重新审视自己的学习过程,找到属于你自己的“调用方式”。
只要你不是躺着收藏、看完就忘,而是每一次都努力走到“输出”这一步,学习效率一定会有肉眼可见的变化。调整一下姿势,然后动起来吧。