如何学习
前沿 · 实践前沿 kp-024

实践方案:编程与技能类学习的完整工作流

一句话定义

技能类学习的流水线:最小内核(教程+worked example)→ 小项目循环(做→卡→查→复盘)→ 交错复习(代码重写与重构)→ 公开输出——核心原则是"概念从项目里长出来,而不是先学完再做"。

为什么重要

"教程地狱"(tutorial hell)是技能学习第一死亡区:视频刷了 200 集,独立写 50 行就瘫痪。病根是把 kp-013 的四判据全部丢掉了——无弱点定位、无边缘难度、无反馈、无重复修正。本方案给出每个阶段的替代动作,套路同构于 kp-023,可平移到设计、写作、乐器等一切"做中学"领域。

前置知识

kp-005 认知负荷、kp-008 检索、kp-013 刻意练习、kp-015 迁移。

核心概念

  • 教程地狱:连续消费教程获得的"观看流畅感"(kp-022)替代了动手能力;判定标准:离开教程能否独立完成同型小任务。
  • 项目驱动 + 最小内核:不追求"学完再动手",而是维护一个 5% 的"最小内核"知识清单(当前项目马上要用的),其余知识按需入场。
  • Worked example → 完成问题 → 独立问题 三段式(认知负荷研究的最优序列):先照着完整示例走一遍(降负荷),再补全半成品,最后从零独立做。
  • 代码重写(retrieval 的技能版):合上参考实现,凭记忆+文档重写刚学的组件——写不出的地方就是理解断点。
  • 复盘驱动:每个调试超过 1 小时的 bug 都值得写三行复盘(现象/根因/下次怎么早点发现)——这就是程序员版的 kp-014。
  • 原理 / 机制

    阶段 0  最小内核:只列"接下来两周会用到的"概念清单(kp-005 负荷预算)
    阶段 1  Worked example:逐行敲示例(不是复制粘贴),每行加一句自己的注释
    阶段 2  小项目循环:做 → 卡住 → 先自查 20 分钟 → 查资料/AI → 解决 → 三行复盘
    阶段 3  交错与重写:隔周重写旧代码(提取)、混合练习不同模块(kp-010)
    阶段 4  公开输出:写实现笔记/提交 PR/做分享(kp-012 外行讲解 + kp-016 联结感)

    为什么 worked example 对新手优于直接解题(阶段 1 的依据):新手工作记忆被语法与环境占满,直接解题=盲目试错挤爆负荷;示例提供了可仿真的完整路径。关键切换信号:当你能不看书复述示例思路时,立即切到阶段 2 的独立任务(否则触发"例题效应"反噬)。

    公式 / 模型 / 图示

    项目循环的反馈设计(把 kp-013 四判据落到编程):

    ① 目标明确:本周只攻一个能力点("独立完成带登录的小 API")
    ② 边缘难度:预估 70–85% 功能能独立写出,30% 需要查
    ③ 即时反馈:测试驱动(写测试→实现→变绿)是天然反馈器;
       没有测试就靠"跑起来+人工验证清单"
    ④ 可重复修正:同一项目做两个变体(换个数据源再做一遍)

    错误预算管理:允许自己每天有"合法的愚蠢"(把 API 用错、变量名拼错)——错误是边缘难度的信号,出现率 0% 说明任务太简单。

    直观类比

  • 学车:没有教练会先让你刷 200 集教学视频再上路(教程地狱);也不是第一天就上高速(负荷爆表)。正确路径:教练示范(worked example)→ 副驾陪同上路(小项目+即时反馈)→ 独立开(独立任务)→ 换车开(变体迁移)。
  • 代码重写 = 健身的自重训练:不借助教程外力,纯用自己的"知识肌群"完成——第一次摇摇晃晃,第三次就稳了。
  • 实例 / 案例

  • 逃离教程地狱的 8 周实录(社区典型路径的抽象):第 1 周:跟一个完整 todo-app 教程逐行敲+注释;第 2 周:不看视频,只看自己的笔记重写一遍(第一次全面暴露断点);第 3–5 周:自选小项目(给重写版加一个新功能,如本地存储)——卡壳时间预算 20 分钟;第 6–8 周:第二个变体项目 + 把踩坑写成 3 篇笔记。终点状态:能独立从零写出 300 行可用小程序——与刷完 50 集视频但写不出 50 行的对照组形成鲜明对比。
  • 复盘的价值实例:某学习者把"npm 依赖冲突"的三行复盘沉淀后,三个月后在同事环境复现同样报错时 10 分钟解决——kp-015 的迁移实例:复盘存的是深层结构(锁文件与版本区间),不是表面症状。
  • AI 时代的修正(详见 kp-025):AI 可以当"即时答疑+示例生成器",但生成代码必须手敲一遍并解释,否则又回到观看流畅感。
  • 常见误区

  • 收藏教程清单当学习计划:清单是输入侧库存;没有项目循环,库存永远不变现。
  • 追求"系统性学完"再动手:对技能类,"系统学完"是幻觉——知识网格只有在项目压力下才会被编织起来。
  • 项目贪大:第一个项目超过 2 周就会烂尾;用"两周内能跑起来"作为规模上限。
  • 卡壳即问 AI 要完整答案:跳过了 20 分钟自查(提取+元认知),AI 直接给答案等于 worked example 变成了抄示例——保留"先想后问、问完重写"的顺序。
  • 自测题

  • 教程地狱的病理是什么?用 kp-013 四判据逐条指出缺失。
  • 三段式(示例→完成→独立)的切换信号是什么?
  • 为你当前的技能学习设计阶段 2 的"小项目循环",写明反馈机制与错误预算。
  • 参考答案 · 先自己作答再展开
  • 病理=观看流畅感替代动手能力。四判据逐条缺失:跟着教程走(无明确弱点目标)、内容在舒适区(无边缘难度)、不动手不报错(无即时反馈)、一遍过(无可重复修正)。
  • 切换信号="能不看书复述示例的思路";此后继续看例题会触发例题效应反噬(对已入门者反而降效),应立即切独立任务。
  • 参考:本周只攻一个能力点(能独立完成带登录的小 API)/预估 70–85% 可独立写出/反馈=写测试或"跑起来+人工验证清单"/同项目做两个变体;错误预算=允许每天有"合法的愚蠢",错误率 0% 反而说明任务太简单。
  • 与其他知识点的关系

  • kp-005/kp-013:负荷预算与四判据是整套方案的骨架;
  • kp-010/kp-015:交错与迁移在"变体项目"上落地;
  • kp-020:固定时间块保住阶段 2 的循环不断线;
  • kp-025:AI 使用规则的技术版。
  • 延伸阅读

  • 《程序员修炼之道》(The Pragmatic Programmer)——复盘与工具心态
  • Renkl 的 worked example 研究(教学设计视角)
  • swyx《Learn In Public》——公开输出的原始阐述