---
title: "学习要会调节摩擦力"
author: "Shawn Jiang"
lang: zh
date: 2026-08-10
canonical: https://tplog.dev/zh/essay/learning-friction/
translations:
  en: https://tplog.dev/en/essay/learning-friction/
  ja: https://tplog.dev/ja/essay/learning-friction/
---

# 学习要会调节摩擦力

很多人谈学习效率，习惯把一切都做得更快。资料最好自动整理，答案最好马上出现，遇到问题最好点一下就能解决。AI 出现以后，这种倾向更明显了。

可学习并不总是越顺越好。

有些知识需要反复调用，过程太顺，人很难留下印象。有些学习任务又夹着大量机械劳动，硬扛只会耗掉时间和耐心。我们要分清两种摩擦。一种逼着人思考，一种只让人疲惫。

## 想学 AI 写代码，可以先走一遍老路

现在有很多人想学 AI 写代码，想用 AI 做网站、做应用、做自己的产品。这个愿望很具体，到了该动手的时候，问题却来了。

第一步应该学提示词，还是先学 Python？要不要研究大模型原理？Java 还有没有必要学？前端、后端、数据库又该从哪里开始？

大学生尤其容易困在这里。每天都能刷到新的模型、新的开发工具和新的产品案例。这个人说以后不需要程序员了，那个人又说一个人加 AI 就能做完整产品。信息看了很多，编辑器却一直没有打开。

这时最有用的办法很朴素。静下心来，先学一门编程语言。

AI 普及以前，编程培训班采用的那套学习顺序，其实很适合今天的初学者。先学变量、类型、条件判断和循环，再学函数、类、接口、异常与集合。接着写几个小项目，学数据库，学怎样做一个前后端能够交互的应用。

今天很少有人只为了掌握 Java 而学 Java。更实际的目标，是借助 AI 写代码、做出自己的产品。Java 在这里是一种主动增加摩擦力的方式。沿着 Java 基础、MySQL、Maven、Spring、Spring MVC、MyBatis 和 Spring Boot 走一遍，你会碰到类型、依赖、接口、数据库和日志这些绕不开的问题。过程慢一些，却能让你看懂一个程序怎样组成、怎样运行，又会怎样出错。等 AI 生成代码时，你才有能力判断它写得对不对。

下面是 Java 官方教程用来介绍 class 的 Bicycle 示例。一个类里有字段、构造方法和普通方法。代码很短，初学者仍然要弄明白 `private`、`int`、`this` 和构造方法分别在做什么。自己敲一遍，再修改字段和方法，这就是有用的摩擦。

<figure class="figure">
  <img src="/images/essay/learning-friction/java-class-definition.webp" alt="Java Bicycle 类的定义示例，包含字段、构造方法和 speedUp 方法" width="1200" height="980" loading="lazy" decoding="async" />
  <figcaption class="figure-caption">图片根据 dev.java 官方教程的 Bicycle 示例整理</figcaption>
</figure>

Bilibili 上已经有大量免费的完整课程。找一套播放量高、章节齐全、近几年仍有人维护的课程，跟着往下学就行。课程不必反复比较。看完一节就敲一遍代码，改几个参数，再故意删掉一行，看看程序怎样报错。报错信息先自己读，十几分钟还没有头绪，再去问 AI。

这些摩擦值得保留。手动写代码会让你熟悉语法，自己查一次错误会让你知道程序怎样运行。项目做得慢一点也没关系。你正在训练以后使用 AI 时最需要的判断力。

等你知道一个请求怎样进入 Controller，Service 在哪里接手，数据怎样交给数据库，AI 写代码才会变得好用。它可以帮你补重复代码，解释陌生报错，也能快速写出一个功能的初稿。你看得懂，才知道哪些代码可以留下，哪些代码需要重写。

很多人担心自己学的技术很快过时。对初学者来说，这种担心通常来得太早。今天学 Java，明天即使换成 Python 或 TypeScript，变量、函数、数据结构、接口、数据库和调试经验仍然跟着你。先把一门语言学到能独立写出小项目，比同时收藏五条学习路线有用。

## 学外语时，可以把无效摩擦删掉

外语学习适合采用另一种办法。

不少人学英语，把大量时间耗在准备学习上。看到一个单词，先查词典，再搜索例句，然后复制翻译、整理格式、录入卡片。十分钟过去，只处理了两三个词，真正开口读和回忆的时间很少。

这些工作做得很辛苦，对英语能力的帮助却有限。

学外语需要大量接触和重复。一个词见过一次通常记不住，要在不同句子里多碰几次，也要隔一段时间再回想。查资料、复制内容和调整格式只是准备工作。准备做得再精致，也不能替代阅读、听力和复习。

这时就该用工具把过程压短。以 DuoCards 为例，阅读文章、观看带字幕的视频，或者在网页上碰到生词时，可以直接把单词和短语存成卡片。软件补充释义和例句，根据记忆情况安排重复，再让同一张卡片进入听力、填空、阅读和对话练习。学习者省掉的是查找、复制和整理材料的时间，仍然要亲自辨认、回忆和使用这些词。

<figure class="figure">
  <img src="/images/essay/learning-friction/duocards-practice.webp" alt="DuoCards 的练习入口，包含 Ask、Speak、Listen、Test、Comprehension 和 Roleplay" width="683" height="1024" loading="lazy" decoding="async" />
  <figcaption class="figure-caption">保存下来的卡片可以直接进入不同练习，省去重复准备材料的步骤</figcaption>
</figure>

这类功能是否有用，可以看它删掉了哪一步。自动生成例句、安排复习和准备练习材料，减少的是工具切换与资料整理；开口发音、理解句子和主动回忆仍由学习者完成。工具缩短了准备阶段，没有替代目标能力的调用。

## 看这一步究竟练了什么

判断一种摩擦该留还是该删，可以问自己一个问题。这一步是否迫使我调用正在学习的能力？

手写一段 Java 代码，会迫使你理解语法和类型。自己追踪一次报错，会训练调试能力。这些摩擦值得保留。

为了一个英语例句翻十分钟网页，只会让人更熟悉搜索和复制。整理卡片格式花掉半小时，也不会让你更熟悉那个单词。这些摩擦可以交给工具。

AI 能帮人绕过许多麻烦，但学习者要决定哪些麻烦可以绕过。想用 AI 做产品，就先把编程基本功补起来。想学好英语，就少做整理工作，尽快回到阅读、听和说。

下次觉得某一步太慢，可以先写下它实际训练的能力。若答案是语法理解、调试、回忆或表达，就保留这段阻力；若答案只是搜索、复制和调整格式，就交给工具。

## 资料来源

- [Java 官方教程中的 class 定义](https://dev.java/learn/classes-objects/creating-classes/)
- [DuoCards 官网](https://duocards.com/en/)
- [DuoCards 的 AI 与语言学习介绍](https://duocards.com/en/blog/how-to-use-ai-and-chatgpt-for-language-learning-in-2026/)
- [DuoCards 的个性化卡片与间隔复习介绍](https://duocards.com/en/blog/duolingo-vs-duocards/)
