OPALL

OPALL-F-008 · STUDY · 已整理 ORGANIZED · 前置:F-003

从抄到改到造:教程看了很多,项目为什么还是做不出来

From copying to building

照抄能跑、一改就崩,问题不在你——抄复制的是结果,项目需要的是决策。从教程到自己的项目之间缺的那一级台阶,叫"改"。

01熟悉的循环THE FAMILIAR LOOP

跟着教程把一个项目敲完,运行,通过。合上教程,想给它加一个小功能,或者换成自己的数据——手停在键盘上,不知道从哪里下手。于是打开下一个教程。

这个循环几乎每个初学者都走过,而且重复得越多越心虚:明明"做过"五个项目了,为什么还是不会做项目?收藏夹越来越满,动手的信心反而越来越少。

先把结论放在前面:问题不在你,也不在教程。在"抄"和"造"之间隔着一级台阶,而这级台阶没有人负责教。这份底稿讲清楚那级台阶是什么,以及怎么自己把它补上。

02一行代码的两层TWO LAYERS

每一行代码都有两层。表层是结果:写了什么。里层是决策:为什么写在这里、为什么用这个写法、别的写法为什么不行、什么条件下这行会出问题。

教程能展示的几乎只有结果层。这不是作者偷懒——决策根本写不完:一个两百行的小项目背后是几百个大小决策,把每个分叉都交代一遍,教程会厚得没法读。作者只能选一条能跑通的路径,把它铺平给你走。

于是,跟教程时的"我懂了",大多数时候是"我看懂了结果"。照抄能跑,因为结果层是完整的;一改就崩,因为改动落在决策层——你要动的那行代码牵着哪些看不见的前提,教程没说,你也没机会问。

这也解释了为什么"教程看了很多"和"会做项目"之间没有必然联系:抄十遍,复制的都是结果;决策,一次也没做过。

03三级台阶THREE RUNGS

抄 · 复现 让别人的东西跑起来 教程负责到这里 改 · 接管决策 动一处,看它崩在哪 缺的那一级 · 没人负责 造 · 定义任务 四样东西自己留全 项目从这里开始

图 F-008 · 从抄到造的三级台阶:教程止步于第一级,项目始于第三级(示意)

把从教程到项目的路摆成三级台阶,每一级练的东西不同。

第一级,抄。对照教程复现,练的是让东西跑起来:装环境、对版本、读报错。这一级有真实价值——很多人连完整复现都没有耐心走完——但它的上限就是复现。

第二级,改。在能跑的基础上动一处:换数据、加约束、调结构。每动一处,都是把一个别人做过的决策接到自己手里。改崩了是常态,而且崩得有价值:崩的位置,就是决策所在的位置——原来这行代码是有前提的,现在你亲眼看见了。

第三级,造。自己定义任务:做什么、不做什么、怎么验证、错了怎么办。到这一级才叫做项目。

教程负责第一级,项目要求第三级,第二级几乎不出现在教程的目录里,也很少出现在课程的作业要求里。"教程看了很多,项目做不出来"的人,多数不是不努力,是从第一级直接跳第三级,摔在了没有台阶的地方。

04怎么练"改"PRACTICING RUNG TWO

练"改"不需要新教程,手上任何一个能跑的教程项目都是练习场。三种改法,从易到难:

改输入。把示例数据换成自己的,把参数改大改小,看哪里报错。练的是看清数据在代码里流经的路径——它从哪进来、被谁加工、在哪落地。

改约束。给项目加一个原来没有的要求:限制一下内存、换一种存储、加一条输入校验。改起来会发现处处受阻,而每个阻力点都在告诉你:这个设计原来是为了什么。

改失败。故意弄坏一处——删一个依赖、断一次网络、传一个非法值——看它怎么崩,再修回来。练的是把报错从噪音读成信息:同一个红色堆栈,练过的人看到的是线索,没练过的人看到的是墙。

每次改动,留一行记录:动了什么、崩在哪、为什么。这份台账就是你从结果层挖进决策层的凭证,它比"完成了五个教程项目"更能说明你会什么。一个够用的标准:同一个项目改过三处以上、每处都说得清为什么,这个项目才算真正属于你。

顺带说 AI。AI 能把"抄"加速到几分钟,但它替你做掉的恰恰是决策——生成得越顺,决策层离你越远。这不是说别用,是用的时候要知道自己站在哪一级:让 AI 替你抄可以,让它替你练"改",练到的是它,不是你。界线的完整划法,见 F-009

05连回判断TO THE NOTES

走到"造"这一级,站内的判断工具已经备好。F-003 讲怎么读别人的项目:找四样东西——任务定义、运行轨迹、验证方式、边界声明。轮到自己造,把这四样反过来给自己的项目留全,它就从"练习"变成了可追问的证据,展开见 N-003 项目如何变成可追问证据。没有实验室和算力,选什么题、怎么闭环,见 N-010 没有实验室怎么做

底稿负责把台阶摆清楚,往上走的每一步,判断在笔记里。

06自测清单SELF CHECK

  • 最近跟完的那个教程,能说出其中三个"为什么这么写"吗?
  • 改崩过东西吗?能说出崩的位置对应哪个决策吗?
  • 手上有没有一个改过三处以上、每处都说得清为什么的项目?
  • 给自己的项目写过任务定义和边界声明吗?
  • 让 AI 写代码时,分得清哪些决策是你做的、哪些是它替你做的吗?