小提示:本文古法手作,除案例展示部分外,无任何 AI 工具参与创作,请放心阅读。


一年前我写下了在少数派的第一篇文章《论什么是真正的自学》,讲了讲我关于学习的一些理解和方法,现在回看,有些观点我依然认同,另一些观点已经有了更深入的认知。

另外,生成式 AI 几乎已经进化成了新一代的互联网基础设施,显然,在 2025 年的今天,要谈学习也必须带上 AI 一起讲,这篇文章也正是这样,所以,这一次我们再来聊聊:

AI 时代,到底应该如何自学一门技术?

1. 为什么而学?

在一切开始之前,先问自己:

我学「某事」是为了什么?是要解决生活中的哪个「具体问题」?

这个「某事」可以替换为编程、绘画、健身、乐器……

然后再回想一下之前各种学习失败的案例,失败的根本原因到底是你学习不够努力,方法不够科学,还是你其实根本就不知道自己「为什么而学」?或者说,你其实是在用假装学习,去逃避某些你真正需要去解决的底层问题。

1.1 先搞清楚问题是什么

像「学习编程」这件事,很多人的目标看似是很清晰的:我学编程就是为了找工作或转行,或者是为了提高做事效率,要么就是单纯觉得编程是很 cool 的一件事……

就先说说「学编程为了找工作」这个例子,此处的问题是「找到工作」,这就是一个无法用编程去解决的宽泛问题,找工作?这个问题太大了,你又不能写一行代码直接生成一个工作出来。而且能不能找到合适的工作,跟你本身的编程技术有一定关系,但不是决定性的。

就像《魔兽世界》里集合石组队,申请列表里一大堆各种强力选手,队长挑来挑去,这时左下角弹出工会好友私聊:「拉我」,外面那十几号人就只能被无情拒绝。随后就看到论坛有人发帖:「申请了一下午进不去组,这游戏还能玩吗?」底下回帖:「治疗职业随便进组啊,怎么没人玩治疗呢?」然后玩坦克的也来插一句,最后发展成一场骂战……

这还只是网络游戏里构建出来的一个小型就业市场,现实生活只会更加复杂。你是真正热爱编程,还是被一堆培训机构忽悠,觉得程序员工资高有前途?那如果工资不高还愿意干吗?这不是在规划自己的职业,而是「投机」,抱着投机心理去学习,大概率得不到什么好结果。

而且,「找工作」只是根本问题的一个子集,最后还得要问自己:「我到底想成为一个什么样的人?」

同样,你健身到底是为了啥?是真的想获得强壮的身体,还是因为各种不健康的生活习惯引发的焦虑?如果是后者,不如先想想,自己最近每天晚上是几点睡的,是不是每天把奶茶当水喝。

所以,先搞清根本问题到底是什么,然后你会发现,可能需要去做的是另一件事,之前都是在浪费时间。

1.2 你要的是结果还是过程?

经过第一层梳理,应该已经能把一个大问题具体化了,如果一开始完全就走偏了,那就先把方向搞对。

如果思考过后,问题的形态也已经确定下来了,那它现在应该是非常清晰的:最后想要一个什么结果,这个结果应该是什么样的,由哪些部分构成……它的实现手段之一可能包括某种技术,而你为了解决这个问题,需要去学习这门技术。

到了这个阶段,依然要再次确认,是否真的需要开展学习?因为任何问题的解决方法,可能都有更简单的那一种。就比如你需要一个 todo list,市面上的软件调查了一圈,没有想要的,都太复杂了,不够简洁,嗯,可能需要学编程去自己做一个出来。

但我们换个角度,直接买本便利贴,把每天的任务写下来贴在屏幕旁边,这问题不就解决了吗?好吧,你就是想要一个「软件版」的 todo list ,那现在 AI 生成一个简单的小工具也很容易,所以又要想想,如果 AI 交付的结果就符合你的预期,你还愿意花时间去学吗?你想要的是那个结果,还是做这件事的过程?

再次思考过后,你非常确定:我就是想从头开始「自己动手做」。在这个问题上,相比简单直接的现有解决方案,更想搞清楚这件事的底层逻辑是什么,掌握并运用原理,自己从零开始一点一点把答案写出来。只有满足以上描述,才能基本确定,你是需要学,且真的想学这个东西。

1.3 自学的核心要素:主动性

以培训班为代表的这种「动机不纯」的学习,为什么成功率那么低?一是前面提到的,大部分学员根本不知道自己究竟在干什么,都是来投机的,而非真想学技术。二是他们缺乏完全自发的主动性,这种主动性才是让你走完整个学习过程的最关键因素,也是面对困难时让你坚持下去的动力源。

即使是各种项目驱动的自学教程,为什么也很难坚持下来,因为这个项目本质上讲「跟你没关系」,它不是来源于你生活中的实际问题,而是你凭空制造了一个问题,然后产生了这个问题和你有关的错觉。

学英语为啥老是 abandon?因为这事本质上讲是非必需的,明天醒来你并不会突然被丢到某个英语国家去,会不会英语,对生活其实并没有多大的影响。除非有件你特别想做到的事,必须依靠英语这项技能才能做,只有这种情况你才能真正的动起来。

这种主动性和艺术创作的心理动力是差不多的,这是创造而不是考试,你要确保这个过程没有那种「有人赶着你走」的感觉,只有这个项目和你产生了深层链接,你知道这是你自己的东西,你才不会轻易的放弃它,也不需要什么外部力量去驱动你把它做完。

到这里,可以总结一下,一个问题能否转换成学习项目,需要符合以下条件:

  • 这是一个具体、清楚、需要去解决的实际问题
  • 解决这个问题可以通过学习某种技术
  • 确定是要通过自己对技术的学习去解决这个问题

如果前置条件已经满足,那学习项目已经创建好了,就是你要去解决的这个问题。下一步就是,在学习过程中应该注意什么,采用哪种学习方法。

2. 技术是手段而非目的

2.1 学编程 != 学编程语言

现在,我们的学习项目就是:通过学习「XX 编程语言」构建一个「 todo list 」软件。

所以接下来应该是,要学哪门编程语言,怎么理解各种语法和概念,要看哪本书,掌握什么底层原理……

恭喜你,如果你按照这种思路去学习,一辈子都学不会。这种一上来就直接去背各种概念,各种公式的,是本末倒置,是应试思维,会把你引上弯路,在自学中,我们首先要做的就是把应试思维从大脑中完全移除。

很简单的道理,你玩《英雄联盟》的时候,还要先找本教科书吗?上面写着「什么是补兵」、「什么是 gank 」、「什么是防御塔」……

不会的,首先你要做的是,通过新手教程,掌握这个游戏的最基本操作,大概明白屏幕下方这堆花花绿绿的图标有什么用,这时你已经把各种概念学了个差不多,然后,直接开一把人机对战操练起来,真正的游戏理解都是在每局对战的实践过程中学到的。

当然,到了后期,你还是需要了解各种英雄的具体数值和斩杀线,了解兵线运作的底层原理等等,但那些东西跟现在的你没关系,你先搞明白这个游戏的玩法再说。

同样的,代码本身在编程的过程中,是占比最低的那部分,各种关键词、语法和内置函数,这些都是在项目实操中顺便记住的东西,学习编程真正的难点,是在编程之外,即:如何培养编程思维。

2.2 编程的本质

编程的本质是什么?其实就是把解决一个具体问题——这个从锁定问题到得出答案的过程——从人类语言换成编程语言重新描述一遍,把这个动态的执行过程用静态的编程语言固定下来。

编码的过程就好比使用一门外语去写文章,而把这篇文章写好,难度分为三个层级:

  • 首先要克服的是使用非母语进行写作的困难,即掌握编程语言的关键字,语法,这是最简单的部分
  • 然后要学习和总结准确和优美的表达方式,在编程领域就是各种代码规范,各种设计模式……这些经验性的东西,主要靠练习和总结,用时间去堆
  • 最难的部分,写文章的思路,这个东西每个人多少都有点自己的领悟,但没人能完整的把它讲明白

我们要学习的重点并非某个具体的编程语言,而是使用编程语言去书写答案的技能,这一整个过程中生成的思维模型,才是我们要去掌握的。

或者说,根本就没有所谓的「编程思维」,真正需要培养的,是「解决问题的思维」。

而解决问题,靠的是综合能力,即元级别的思考,meta 层面的知识。你某某语言的 API 背的再溜,换个问题,换个场景,换个语言,没有现成的解决方案,你还能把这个问题的来龙去脉分析清楚,然后拆解成一个个逻辑链,最后用新的编程语言把这些逻辑链还原出来吗?

所以,别纠结学这个语言还是学那个语言了,最重要的是思路,思路,思路!

3. 先做总体设计

好吧,「大道理」可能大家已经有点听腻了,我们开始「干货」的部分。

从文章第一节走到现在,其实做的就是一件事:解决问题,这个过程中使用了一个适用于所有问题的思维模型:先认清问题是什么,然后把这个问题细分为一个个小问题,然后再认清小问题是什么,然后继续拆解……直到无需再细分为止。

还是用《英雄联盟》打个比方,每局游戏都有一个大问题:打爆对面的基地。而这个大问题被拆解后产生的小问题,就是你从开始到结束都在干的事:开游戏前选哪个英雄,带什么天赋符文,进入游戏后,对线,击杀,推塔,打团,拿中立资源……每个阶段玩家都清楚自己该干什么,而且每解决一个问题都能立刻拿到反馈。

游戏流程是总体设计的产物,而现实中的问题,需要我们自己去当那个设计师。

所以我们现在再来看一下问题是什么状态,然后把它细分:

  1. 我们想要一个 todo list,这个 todo list 应该长什么样子,由哪几个部分组成,有什么功能?
  2. 大概从上到下可以分成三个部分:
    1. 顶部大标题显示:x 年 x 月 x 日的待办事项
    2. 中间是每个事项的展示部分
    3. 最下面是个按钮,功能是添加新的待办事项
  3. 每个待办事项应该长什么样?可以分成左右两个部分:
    1. 左边是标题,显示要做的事情
    2. 右边有两个按钮
    2.1 第一个是「编辑」,可以编辑标题文字
    2.2 第二个是「完成」,点击后表示这个待办事项已经完成
    2.3 还应该有一个「删除」,处理多余的待办
    3. 一个事项完成后,应该切换标题的样式,表示已经完成,可以用中间划线这种
  4. 整个软件运行的过程发生了哪些事?
    1. 打开软件,界面上显示「大标题」,「事项列表」,「添加按钮」三个组件
    2. 因为是第一次打开,事项列表应该是空的
    3. 点击添加按钮,列表会多出一个事项,默认是空标题,需要输入标题
    4. 待办事项应该实现的功能:
    4.1 点击「编辑」按钮,可以修改待办的标题
    4.2 点击「完成」按钮,切换待办的完成状态
    4.3 点击「删除」按钮,将待办从列表中移除
  5. 软件运行中,哪些信息是「会改变的」?
    1. 标题会根据每天的日期变化
    2. 待办事项的数量
    3. 待办事项的标题、完成状态、以及是否「存在」,即添加和删除

看到了吗,就是这么一个简单到不能再简单的 todo list,都有这么多要考虑的东西。

你以为这种看上去一览全局的小项目,直接上去干就行,但即使是最微小的含糊不清,互相之间也是指数乘算,只要出现这么几个未经处理的含糊,整体的混乱度马上就会突破临界值,进而影响整条逻辑链上的所有内容,最后各种混乱信息大量占用你的「内存」,让你越做越头痛,直到最后没办法继续下去。大部分的弃坑都不是因为项目有多难,而是缺了这个最基础的整体设计。

人类发展这么多年,很遗憾,肉体并没有怎么进化,工作记忆还是就那么可怜的一丁点,要想不让你的内存爆掉,方法只有一个:老老实实把占用内存的信息转移到「硬盘」里,写下来,写清楚。

而人处理图画的能力又远高于文字,所以写下来还不够,最好是再画下来:

你看,现在我们到底想要的是一个什么样的结果,就非常清楚了,接下来只要一步一步把设计方案实现出来就行。

4. AI 辅助自学的要点

到这一步,也终于该写写代码了,当然,还有半篇文章都没提起的 AI。

毫无疑问,AI 可以为自学过程带来相当之大的提升,它解决了许多痛点,尤其是在从零到一的方面。

其实对于大部分初学者,最难的地方也就是从零到一,因为真正优秀的新手教程实在太少了,那种上来先让你背「gank 到底有几种方法」的就不多提了,即使是实践为主的教程,你学习的时候,也不是在做你真正想去做的那个东西,这就很难让人坚持下来。

AI 的出现改变了这一切,这就是前面我为什么说要准备自己的项目,在 AI 的帮助下,你完全可以定制一个专属自己的新手教程,并且把控其中的每一个教学节点,不用再去翻文档,不用再先做一个跟你毫无关系的东西,现在你可以同时做两件事:解决自己的实际问题,并且在这个过程中学习你想学的技术。

接下来,以 todo list 这个案例,我们大概模拟一下这个实现过程。


首先输入一个基本的 prompt,对 AI 做一个总体的约束。

然后,告诉它我们要实现的最终结果是什么,以及第一步该干嘛。

对于多个选项,让 AI 按照我们的要求再次确认。

只要是你不懂的点,都应该去询问 AI。

这里出现问题,AI 只在代码中对每行进行了一些简单注释,并没有具体解释每行代码,所以我们需要告诉它进行更为细致的解释。

如果代码运行不符合预期,直接问 AI 应该如何修改,以及为什么。

如果 AI 一次性给出太多答案,你可以回退到上一步,把握对整体流程的控制。

你也可以根据自己的理解先写出代码,然后让 AI 检查你的代码并加以解释。

你看,这 AI 编程是什么高大上的东西吗?无非就是把问题想清楚,说清楚而已。限于篇幅,其他部分我就不多展示了,也没必要,还记得什么最重要吗,思路。例如在当前的案例中,我把详细阐述和类比这两个学习方法告诉了 AI,那你完全也可以让 AI 给你编个顺口溜,把关于「对象」这部分的概念串联起来,方式是多种多样的,这部分就当抛砖引玉,留给各位结合自己的场景多想多试了。

其实使用 AI 的过程中,唯一要注意的,也就是对问题和答案的约束,即:

  • 我的需求到底是什么
  • AI 应该以哪种方式进行回答

还有就是,不要被 AI 带着走,这个过程始终应该是你来主导的。

这个 todo list 跑通之后,你也大概能明白写代码到底是怎么一回事了,真正的知识都是来源于现实交互中那些无法言说的微小细节,通过自己完成一个项目,边做边学,还有 AI 针对当前进度的实时反馈,我们就把各种概念和应用场景直接联系了起来,这样学到的才是真东西。

这个项目完成之后,你就可以在此基础上,询问 AI 如何继续完善,让它给出建议,探索更高级的知识,比如增加新功能,可以把每天完成的任务输出为一张图片之类的。

当然,这个案例也就是个新手教程的体量,可能你想要的是一个非常复杂的应用,但整个流程该怎么走,我已经讲清楚了,剩下的就是结合实际,灵活变通,这就是你自己的事了。

最后,如何衡量我们用 AI 学习的进度,有一个简单的检验标准:你去问 AI 「为什么」的次数应该越来越少,问题的含金量应该越来越高。我们学习的最终目的是掌握技能,在这个过程中对 AI 的依赖性应该是逐渐减少的。

5. 我对 AI 的一些看法

从上面的案例我们也能看到,用 AI 编程,或者干各种事,绕不开的就是语言沟通中必然会出现的那些问题,AI 能做的事,也受限于语言能够表达的范围,AI 的上限取决于人的上限,最终还是要看人拿它来干啥。

想更好的用 AI 辅助学习,相比各种精修细调的 prompt,我们更应该去了解各种教育模式,知道什么是好的学习方法,搞清自己适合的学习类型……这些最根本的东西,知道这些,你自然也明白怎么让 AI 去帮助自己。

所以,不管 AI 如何发展,外界怎么变化,都影响不到那些长期自我探索的终身学习者,因为他们都有解决问题的底层能力,包括但不限于:

  • 媒介素养:能够用好各种信息渠道,识别各种噪音(如各种粗制滥造的 AIGC),提取有效信息
  • 表达能力:学会好好说话,才能写出好用的 prompt
  • 审美:知道什么是优秀的设计,才能让 AI 做出好看的原型
  • 产品思维:用 AI 做个 app 很简单,做个好用又有用的 app 很难
  • 市场营销:发帖,推广,炒作,无论使用哪种方式,你能把做好的 app 卖出去

这就叫做「以不变应万变」。

在现在这个阶段,AI 的本质,其实依然是执行人类决策的工具,只不过随着 AI 的发展,人机协作的过程会更加流畅,我们对于其交付的结果会更加信任。假如真有一天,AI 不再需要人的指挥就能独立做事,那我们也不用讨论这些有的没的了,赶紧派人去找约翰・康纳吧。

结语:如何成为「大佬」

任何技艺的成长基本都是这张图的模式,从零到一这个坎最难迈,劝退率最高,但只要过了这一关,入门期的技术成长是最明显的,但很多人基本也就停留这个阶段附近了。

为什么我给入门期的最高分只有 50?看看我们日常生活中的各种产品,有多少能称得上是及格的?答曰:「又不是不能用,凑合凑合得了呗。」于是我们就得到了这样一个草台班子的世界,大家你凑合我,我凑合你,互相糊弄,互相伤害。

还有这么一些人,他们无法接受凑合,不仅要知道 what 和 how,还想知道 why,于是就带着各种问题和思考去主动学习,这些外人眼中的「大佬」,只是比其他人多往前走了几步而已。

而最后一个阶段不是留给「正常人」的,走到这里还能继续的人,他们在所属专业领域里的自驱力不仅是热爱,甚至是偏执,他们眼中的世界可能和普通人完全不同了,这个阶段想要提升,基本只能靠顿悟。顿悟之后,那种极为深刻的理解已经上升到了哲学层面,所以去看大师们写的书,不只讲技术还要和你讲人生。

对于我们这些普通人,努努力完全可以摆脱凑合的行列,想成为大佬就需要用心,而想成为大师,就靠机缘和悟性了,不可强求。这篇文章就到这里,希望对你有所启发。


相关链接:

文章:也许学校根本没有教你如何学习:论什么是真正的自学

插图制作:Excalidraw