← All articles

A Good Product = Fewer Actions — A Realization from Today

When the onboarding cost = 0, the product wins

A Good Product = Fewer Actions — A Realization from Today
On this page 11

A small realization from today: the logic of a good product has only one rule — fewer actions.

The Core Claim

When the onboarding cost = 0, the product wins.

Not “easy to pick up,” not “friendly,” not “feature-rich” — none of those are the point. The point is the number of action steps the user has to take.

A Formula

产品好 = 用户的操作步骤 / 完成任务的次数 → 趋近 0
  • The user needs to read a tutorial → you lose
  • The user needs to memorize a command → you lose
  • The user needs 3 menu clicks → you lose
  • The user opens it and it just works → you win

Counterexample Comparison

❌ A hard-to-use product (many actions)

用户想:把图片发到群里
操作:
  1. 打开 app
  2. 找到"图片"
  3. 选"从相册选"
  4. 选"群组"
  5. 输文字
  6. 点"发送"
= 6 步

✅ A good product (few actions)

用户想:把图片发到群里
操作:
  1. 打开 app 直接拖入图片
= 1 步

A truly good product: the user doesn’t even notice the actions exist.

Three Tests

Next time you finish something, ask yourself three questions:

Question If yes →
Can a new user use it “zero instructions”? If no → redo
How many steps to finish the core task? > 3 → merge steps
Is there knowledge that “must be learned first”? If yes → change it to “learn by doing”

The third one matters most — if a user must learn first in order to use it, that’s a design problem, not a user problem.

A Real Case: facet’s --split Subcommand

When I designed facet’s pnpm facet split, I originally wanted to add a pile of flags — --target, --max-chars, --min-chars.

I only realized after writing it: nobody is going to dig through the docs to tune parameters.

In the end I kept only two parameters:

  • --input (input file, defaults to content/example.md)
  • --output (output file, computed automatically by default)

The default value is the best value, computed by AI. The user can run it without passing any parameters.

  • Onboarding cost: 0 commands to memorize
  • Actions: 1 command + 1 filename
  • That’s a good product

A Real Case: Encrypted Delivery

When encryption was added to facet earlier, I wanted to require:

1. 先打开控制台
2. 设置 KV namespace
3. 设置 secret
4. 写 wrangler.toml
5. 部署
6. 客户端输密码

That’s 5 steps, and it’s too tiring for the user.

So it became:

  • Admin: npx wrangler pages secret put DEFAULT_PASSWORD

  • User: enter 1 password → read it straight away

  • Admin actions: 1 command (set secret)

  • User actions: 1 password field

Two roles, both compressed down to 1 step. That’s product design.

A Real Case: echo vs print

echo "hello" vs System.out.println("hello"):

  • shell: echo, 1 step
  • Java: 5+ characters + quotes + class loading

The Unix philosophy wins on “fewer actions” — not on “more features.”

Antipattern: Easy to Pick Up ≠ A Good Product

A common misunderstanding:

“We built an onboarding tutorial / a welcome screen / a 5-minute getting-started guide”

That’s just wrapping “hard to use” as “looks easy to pick up.” A truly good product needs none of it.

Antipattern Good product
Welcome screen The default config is already optimal
Help documentation The action itself needs no explanation
Tutorial videos The user path is too short to need a video
A “beginner mode” toggle There’s only one mode, simple enough that you don’t need to switch

Your Problem Isn’t “Not Enough Features,” It’s “Too Many Actions”

When many teams hit “users aren’t using our product,” the first reaction is: add features.

The right answer might be: delete features.

Antipattern thinking Good-product thinking
Users can’t figure it out → add a tutorial Users can’t figure it out → delete steps
Users can’t find the entry point → add a menu Users can’t find the entry point → keep only one entry point
Users can’t configure it → add defaults Users can’t configure it → don’t make them configure it

How to Use This Realization

Before you build anything next time, first ask yourself:

“How many clicks/inputs does it take for the user to get this done?”

Count Verdict
0 Perfect (the user doesn’t realize they’re using a product)
1 Good
2 Acceptable
3 Needs careful design
≥ 4 Redo

The target is always ≤ 1.


In One Sentence

The logic of a good product has only one rule: fewer actions.

Deleting steps matters more than adding features. The user not realizing they’re using a product = a perfect experience.

—— A small realization from today, written down here.

🚀相关开源工具与实践
读完不过瘾?把文中思考变成可落地的生产力
🌿

typora-Bloom-theme

写作主题

沉静优雅的 Typora Markdown 主题,为深度写作与美感排版而生 (⭐100+)。

🎨

contrast-guard

工程护栏

把配色对比度做成 CI 护栏:支持 OKLCH,不达标时直接反推安全色值。

🌸

dsh-bloom-theme

DSH 主题

Bloom 莫兰迪 10 套中国风配色,OKLCH 调色,WCAG AA 认证。

webkubor

关于作者 · 栖洲 (webkubor)

把审美做成工程 —— 经得起生产环境检验的 AI 系统、独立开发工作流与极客主题。