第5章 02: 先读代码,再写代码#

Priya 想做一个个人作品集网站。没有任何编程基础。她的计划很简单:打开一个空白文件,开始敲 HTML,边做边学。她对着空白屏幕盯了四十五分钟,然后合上笔记本电脑。之后两个星期没再碰过。

再次打开电脑的时候,她换了个思路。不写代码了——改成读代码。她找到三个自己喜欢的作品集网站,右键"查看源代码",花了一整个晚上就这么看。不动手打字,不尝试搭建,就是看。

那个晚上结束的时候,她发现了一些东西。三个网站的页头长得差不多。导航栏遵循相似的模式。图片画廊用的是同一批标签。她看不懂每一行代码——差得远——但她开始辨认出"形状"了。

第二天早上,她又打开了一个空白文件。这次,手指动起来了。

为什么输入必须在输出之前#

大多数初学者都会犯 Priya 差点犯的错误——还没吸收就急着产出。坐下来就想写代码、作曲、起草商业计划书——起点是一片空白。

但空白是个错误的起点。

要创造一个模式,你得先能认出一个模式。 这跟死记硬背无关,而是关于接触和暴露。你的大脑需要原材料,才能生成任何有用的东西。

想想小孩怎么学语言的。没有哪个孩子一开口就是语法正确的句子。他们先听——听好几个月——然后才说出第一个词。几千小时的输入,才换来一句输出。

技能学习的逻辑一模一样。输入阶段不是可选项,是地基。

在阈值系统(Threshold System)里,这属于我们说的双轨习得(Dual-Track Acquisition)。认知轨道——理解结构、发现规律、构建心智地图——跟行动轨道并行推进。而在很多技能里,认知轨道需要先跑一段。

先读代码再写代码,就是给认知轨道这个领先的机会。

模式识别训练#

Priya 看那三个作品集网站的时候,她没在"学习"。她没做笔记。她是在训练自己的模式识别能力,虽然她自己都不知道。

模式识别(Pattern Recognition)是大脑在新信息中发现重复结构的能力。一个老练的厨师扫一眼菜谱就知道能不能做成——靠的是这个。一个老司机在事故发生前就能感觉到某个路口危险——靠的也是这个。

对技术类技能来说,模式识别就是从"完全看不懂"到"哦,我明白怎么回事了"之间的那座桥。

具体怎么练:

  1. 读三到五个完成品——你想做什么,就找什么的成品来读。不是教程,是成品。想做网站?读五个网站的源代码。想写商业计划书?读五份真正的商业计划书。

  2. 找重复结构。 什么东西在每个例子里都出现了?什么不一样?别试图理解所有东西,只需要注意哪些在重复。

  3. 给你看到的模式起名字。 非正式的名字也行。“最上面那个东西"完全可以。“处理用户输入的那块"也行。你是在建立一套形状的词汇表。

  4. 比较不同的做法。 发现一个模式之后,看看不同例子怎么处理它的。一个网站用侧边栏导航,另一个用顶部导航栏。同一个模式,不同的实现。

整个过程花几个小时,不是几天。而且它不太像"学习”——因为你什么都没背。你是在校准自己的感知力。

目标不是搞懂每个细节,而是不再被结构吓到。

范例驱动学习#

有个具体方法能加速这个过程。我叫它范例解剖法(Example Dissection Method)。

操作步骤:

第一步:找一个跟你目标类似的完成项目。 不用完全一样——大致接近就行。想做美食博客?找一个现成的美食博客。想做预算表?找一个别人做好的。

第二步:拆成模块。 别像读小说一样从头看到尾。把主要区块找出来。页头、内容区、页脚、侧边栏。每个区块是一个单元。

第三步:对每个模块问三个问题:

  • 这个模块干什么的?
  • 如果我把它删掉会怎样?
  • 这个模块的最简版本是什么?

第四步:凭记忆重建一个模块。 合上范例,试着只靠记忆重新搭出页头——或者导航栏。做不完美没关系。尝试复现这个动作本身,就是在逼迫你的大脑把观察转化成理解。

Marcus 是一个退休会计师,他用这个方法学电子表格自动化。他在网上找了三个自动预算模板,花了两个小时拆解——不改动,只是读和标注。然后他试着从零重建最简单的那一个。

第一次尝试,缺了一半公式。第二次能跑了,但丑得不行。第三次,功能正确,还能看。

三次尝试,总共六个小时。从"我不懂宏"到"我能搭一个基础的自动预算表”。

这就是"先输入后输出"的威力。

全景扫描#

在深入任何具体领域之前,先扫一遍全貌。这就是全景扫描(Panoramic Scanning)——刻意地先广泛浏览,再深入学习。

在技术类技能里,全景扫描长这样:

  • 浏览文档的目录页。 不用读每一页,只看标题。感受一下这个领域里有什么。在开始走路之前,先知道地形的大致轮廓。

  • 快速翻三个入门教程。 不是按步骤跟着做——只是看它们讲了什么主题、什么顺序、什么算基础什么算进阶。

  • 读一个 FAQ 或者故障排除页面。 这类页面暴露了最常见的问题。知道存在哪些问题,就知道了地形长什么样。

  • 逛一个社区论坛。 初学者在问什么?反复出现的抱怨是什么?这给你一张摩擦点地图。

全景扫描对大多数技能来说大概需要两个小时。不会产出任何实际成果。你什么也不会做出来。你就是在看。

但这两个小时之后,你手里有了一样无价的东西:一张粗略的地图。你知道大地标在哪,哪些区域密集,哪些稀疏,该先学什么,该暂时跳过什么。

先全景扫描再深入钻研,是拿着地图探索和闭着眼乱走之间的区别。

这直接对应阈值系统里的阈值校准(Threshold Calibration)。在校准阈值之前,你需要看到完整的版图。全景扫描给你这个视野。

“复制-修改-理解-创造"路径#

每个初学者都会经历一个进程,不管他们有没有意识到:

复制 → 修改 → 理解 → 创造。

大多数人想直接跳到"创造”。他们想从第一天就写原创代码、作原创曲子、设计原创版面。

这就像没读过小说就想写小说一样。

这条路径是这样走的:

1. 复制。 拿一个现有的范例,原封不动地复现。需要的话就逐字逐字地打。别改任何东西。目标是让你的手熟悉作品的"形状"。

2. 修改。 拿你的副本改一个东西。改颜色、改标题文字、改公式里的一个数字。看看会发生什么。每一次修改都在教你那个元素控制的是什么。

3. 理解。 改得够多之后,你开始看懂为什么东西是那样搭建的。你理解了结构背后的逻辑。这种理解来自经验,不是来自看解释。

4. 创造。 现在你可以从零开始了。不是因为有人教了你规则,而是因为你通过重复和变化把模式内化了。

Priya 走的就是这条路,虽然她不知道它有名字。她复制了一个作品集网站的 HTML,改了颜色和文字,挪了模块,搞坏了又修好。三天之后,她从空白文件做出了自己的版面。

没上过课,没读过教科书。读代码、复制、修改,最后创造了自己的。

最快的创造方式是从复制开始——不是因为复制本身有创意,而是因为它构建了创意所需的模式库。

实操方案#

下面是把这套方法应用到任何技术技能的具体计划:

第 1 天:全景扫描(2 小时)

  • 浏览文档目录
  • 快速翻三个入门资源
  • 读一个 FAQ 或故障排除页面
  • 写下你注意到的五件事

第 2 天:范例收集(1 小时)

  • 找三到五个你想做的东西的完成品
  • 存到方便找的地方
  • 先别研究——只是收集

第 3-4 天:解剖(2-3 小时)

  • 对每个范例用范例解剖法
  • 找出重复模式
  • 给主要结构模块命名
  • 记录哪些一致、哪些不同

第 5 天:复制练习(2 小时)

  • 挑最简单的范例
  • 从零复现
  • 打字时别看原文——打完再对照
  • 记录你做对了什么、遗漏了什么

第 6-7 天:修改与探索(2-3 小时)

  • 拿你的副本开始改东西
  • 一次只改一个变量
  • 故意搞坏,再修回来
  • 列出每次修改产生了什么效果

一周结束,你大概花了十到十二个小时。你没有做出任何原创的东西。但你拿到了比原创更有价值的东西:一个关于目标技能结构的心智模型。

这个心智模型就是你接下来一切创造的地基。

代码之外的应用#

这个原则不只适用于编程。它适用于任何需要产出结构化内容的技能。

想写文章?在动笔之前先读五十篇。不是为了内容——是为了结构。注意开头怎么抓注意力。注意最有力的论点放在哪里。注意结尾怎么呼应开头。

想做饭?在动手之前,先读同一道菜的二十个菜谱。注意哪些食材每个版本都有。注意什么在变。注意步骤的先后顺序。

想做 PPT?在开始搭之前先看三十套幻灯片。注意版面模式。注意字体选择。注意每页放了多少文字。

输入阶段到处适用。媒介在变,原则不变。

与阈值的关系#

在阈值系统里,能力阈值(Competence Threshold)是你的技能变得可用的那个点——它能解决你一开始要解决的那个问题。先读再写本身不会把你送到阈值,但它会大幅缩短你到阈值的距离。

没有输入阶段,你是在猜结构。有了输入阶段,你是在认结构。速度上的差异很明显,挫败感上的差异更是巨大的。

Priya 跨过阈值总共花了大约十八个小时。她估计最初那五个小时——读和扫描的时间——至少帮她省了二十个小时的试错。

输入阶段感觉很慢。感觉没在推进。感觉你什么也没产出所以什么也没在发生。

但你确实在推进。你在构建那个让产出成为可能的模式库。

在写第一行代码之前,先读一百行别人的代码。 那不是拖延,那是准备。

明天,选一个你正在学的技能。找三个你想做的东西的完成品。花两个小时去读——不是学,不是背——就是读。

最好的创造者,都是从专注的阅读者开始的。