编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 质量保障

  • 产品思考

    • README
    • 产品思维入门指南
    • 用户需求分析方法
    • 功能优先级排序法
    • 最小可行产品设计
      • 一、MVP 到底在说什么:不是做半个产品
        • MVP 的铁三角
      • 二、从假说到实验:MVP 的正确起点
        • 2.1 没有假设,就没有 MVP
        • 2.2 假设的写法——必须包含数字
        • 2.3 工程师写假设的天然优势
      • 三、MVP 的成本控制:你能做到多小?
        • 3.1 五级最小验证手段
        • 3.2 三个经典的"别写代码"案例
        • 3.3 代码 MVP 的最小化技巧
      • 四、MVP vs MLP:什么时候够用,什么时候要惊艳
        • 4.1 两者的定义
        • 4.2 什么时候必须 MLP
        • 4.3 决策框架:MVP 还是 MLP?
      • 五、快速迭代:从 MVP 到 v2 的节奏
        • 5.1 迭代的四个阶段
        • 5.2 "两周规则"——工程师的铁律
        • 5.3 上了线不是结束——"空跑"的禁忌
      • 六、综合案例:一个积分系统的 MVP 设计
        • Step 1:明确假设
        • Step 2:砍到最小验证手段
        • Step 3:代码实现的最小化
        • Step 4:判断验证结果
      • 七、工程师做 MVP 的常见坑
        • 坑 1:为 MVP 写的代码"反正是临时的"就不管质量
        • 坑 2:MVP 偷偷变成了"我想做的功能"
        • 坑 3:MVP 做了,但没做数据埋点
      • 八、小结
    • 产品数据指标设计
    • 竞品分析方法实践
  • 软实力

  • 开发流程

  • Git应用

  • 技术模版

  • 技术规范

  • markdown

  • mermaid

  • license

  • 博客部署

  • 技术招聘

  • 测试经验

  • 技术
  • 产品思考
杨充
2019-08-30
目录

最小可行产品设计

# 最小可行产品设计

MVP vs MLP、验证假设、快速迭代——第一个版本只做一件事

# 一、MVP 到底在说什么:不是做半个产品

MVP(Minimum Viable Product)被误解最多的概念之一。

常见的错误理解:

❌ MVP = 功能砍一半,先上线再说
❌ MVP = 质量很差的版本("反正以后会改")
❌ MVP = 只是"Beta 版"——先让用户用着,收集反馈再迭代
1
2
3

真正的 MVP 含义:

✅ MVP = 用最小的成本,验证最核心的假设
                ↑             ↑
          不是"功能少"    是你到底想证明什么
1
2
3

MVP 的输出不是"一个能用的产品",而是"一次验证过的学习"。你上线的每一个功能,都应该对应一个你想验证的假设。如果你的 MVP 上线后什么都没学到——不管功能做得多好,这次迭代是失败的。

# MVP 的铁三角

       假设(Hypothesis)
        /              \
       /                \
  最小成本              可验证
(Minimum)          (Validatable)
       \                /
        \              /
         学到东西(Learn)
1
2
3
4
5
6
7
8

三个要素缺一不可:

  • 有假设——不是"我想做个 XX 功能",是"我相信做 XX 能让 YY 指标提升 ZZ%"
  • 最小成本——能用一个按钮验证的,不要做一个页面
  • 可验证——上线后能拿到数据,而不是上线后"感觉用户挺喜欢的"

# 二、从假说到实验:MVP 的正确起点

# 2.1 没有假设,就没有 MVP

大多数产品需求长这样:

"做一个用户积分系统,用户签到、消费都能获得积分,积分可以兑换优惠券。"

你如果直接开始设计数据库表、写接口——你跳过了 MVP 最核心的一步:你到底想验证什么?

先转换成假设:

假设 1:用户会因为积分激励而增加消费频率。
假设 2:积分兑换优惠券比直接发优惠券的用户留存更高。
假设 3:积分体系能降低用户流失率(因为有积分绑着,舍不得走)。
1
2
3

三个假设,哪一个是当前阶段最需要验证的?如果用户根本不在乎积分,假设 2 和 3 都不用做了。所以第一步只验证假设 1。

# 2.2 假设的写法——必须包含数字

模糊的假设没有验证价值。假设必须有量化的预期结果:

❌ 模糊假设:
"用户会喜欢一键下单功能。"

✅ 可验证假设:
"上线一键下单后,从商品详情页到下单成功的转化率将从 12% 提升到 18%,
且一键下单使用率超过 30% 视为验证成功。"
1
2
3
4
5
6

好的假设公式:

我们相信 [做什么] 会带来 [什么变化]。
当 [什么指标] 在 [什么时间内] 达到 [什么数值] 时,视为验证成功。
1
2

# 2.3 工程师写假设的天然优势

产品经理的假设往往是"用户想要 XX"——主观。但你可以把假设建立在你看到的系统数据上:

产品经理的假设:
"用户想要深色模式。"(来源:竞品都有)

工程师的假设:
"后端日志显示,晚上 10 点到凌晨 2 点的活跃用户占 35%,
而目前纯白界面在高亮度屏幕上刺眼程度可能影响使用时长。
如果能做深色模式,预期夜间用户平均时长可提升 10%。"(来源:Nginx 日志 + 设备亮度 API)
1
2
3
4
5
6
7

后者比前者可验证性强得多,也更难被质疑。


# 三、MVP 的成本控制:你能做到多小?

# 3.1 五级最小验证手段

不是所有验证都需要写代码。从低到高:

级别 手段 成本 验证强度 适合验证什么
L1 纸上原型——画草图给用户看 1 小时 ⭐ 概念是否被理解
L2 落地页测试——做一个介绍页,看有多少人点"感兴趣" 半天 ⭐⭐ 需求是否真实存在
L3 假门测试——按钮放上去但不实现,看点击量 半天 ⭐⭐⭐ 功能需求强度
L4 手动后台——开发不做,你人肉代替 1 天 ⭐⭐⭐⭐ 复杂流程是否走得通
L5 最小代码实现——只做核心路径 3-5 天 ⭐⭐⭐⭐⭐ 真实使用行为

原则:永远从最低级开始。L1 能验证的,绝不做 L2。

# 3.2 三个经典的"别写代码"案例

案例 1:Dropbox 的 3 分钟视频 MVP

Dropbox 在写一行代码之前,创始人 Drew Houston 做了一段 3 分钟的演示视频,展示"文件自动同步到所有设备"的概念。视频发布到 Hacker News 后,beta 注册用户从 5000 暴涨到 75000。

→ 验证的假设:"人们需要跨设备文件同步。" 成本:3 分钟视频。如果做完整产品再做验证,成本可能是 6 个月。

案例 2:Zappos 的"手动 MVP"

Zappos 创始人想验证"人们愿意在网上买鞋"。他没建网站、没搞供应链、没写代码。他只是去本地鞋店拍了照片,放到一个简单的网页上。有人下单——他就去鞋店买那双鞋,自己寄出去。

→ 每双鞋亏一点钱,但验证了核心假设:"网上买鞋的需求真实存在。" 之后才建了完整平台。

案例 3:假门测试——微信"摇一摇"的逻辑

如果你想验证"用户需要手机摇一摇来搜索附近的人",不用先写陀螺仪监听 + 蓝牙 BLE + 地理围栏。先做一个按钮叫"摇一摇找人",用户点了弹窗"功能开发中,感兴趣的留下手机号"——看有多少人点。

→ 如果没人点,省下了 2 周的开发成本。如果有人点,你还可以直接电话回访:"你希望在什么场景下用这个功能?"

# 3.3 代码 MVP 的最小化技巧

当你确定必须写代码时,这三条规则能帮你砍掉 80% 的非必要工作:

规则 1:不做权限系统

❌ "先做一个 RBAC 权限模型,支持管理员、运营、普通用户三个角色……"
✅ "第一版只有管理员能用,硬编码判断登录邮箱是不是 @company.com。"
1
2

权限是 MVP 最大的成本黑洞——表设计、中间件、前端按钮显隐,一套下来 3 天没了。但你的 MVP 只有 5 个内测用户——你不需要权限系统。

规则 2:不做"通用方案"

❌ "支持导入 CSV、Excel、JSON 三种格式,支持自定义字段映射。"
✅ "只支持你给运营的那个 Excel 模板(固定的 3 列),列名写死。"
1
2

做通用方案意味着枚举所有可能情况——但你连用户到底用不用这个功能都不知道,枚举什么呢?

规则 3:不做"异常处理"——只做"已知异常"

❌ try-catch 包住整个方法,各种边界条件都处理。
✅ 只处理你在手动跑通主流程时实际遇到过的异常。其他异常让它 500——有日志就行。
1
2

MVP 阶段,用户量少,影响面小。一个没处理的异常造成的伤害远小于你花 3 天做防御性编程浪费的时间。


# 四、MVP vs MLP:什么时候够用,什么时候要惊艳

# 4.1 两者的定义

MVP(Minimum Viable Product)     MLP(Minimum Lovable Product)
最小可行产品                         最小可爱产品
      ↓                                    ↓
"能用就行,验证假设"                 "第一印象就要让人喜欢"
      ↓                                    ↓
B2B 内部工具 / 替代方案明确         C 端消费品 / 强竞争市场
1
2
3
4
5
6

MVP 和 MLP 不是互斥的——是同一个产品在不同市场阶段的策略。

# 4.2 什么时候必须 MLP

场景 为什么 MVP 不够 例子
C 端社交产品 冷启动期用户没有容忍度——第一个体验不好就走了,没有"下次" 微信朋友圈第一条评论就有动画
强竞争赛道 竞品功能完整——你的 MVP 对比起来就是残次品 打车软件:滴滴已经能实时看司机位置,你的 MVP 只显示"已派单"——用户不会等你迭代
品牌敏感型 用户对品质有预期——粗糙的第一印象会损害品牌 苹果做任何新功能都不能"凑合能跑"
情绪价值为主 产品卖的不是功能,是体验 游戏、内容社区、设计工具

# 4.3 决策框架:MVP 还是 MLP?

用两个问题判断:

问题 1:用户有没有"替代方案"?
  有 → MVP 即可(只要比替代方案好就行)
  没有 → 考虑 MLP(用户对比的是"期待",不是"竞品")

问题 2:用户会不会给第二次机会?
  会 → MVP 即可(B2B 工具、内部系统——不用也得用)
  不会 → MLP(C 端一次性体验——卸载就是永别)
1
2
3
4
5
6
7

实操建议(对工程师):即使是 MLP,也只"可爱"在最关键的一两个交互上。

做一个社交 App 的 MLP:
  ✅ 花精力打磨的:信息流滚动流畅度、发布动态的动画、点赞的触觉反馈
  ❌ 不用花精力的:设置页面、个人资料编辑、隐私协议弹窗
1
2
3

"可爱"不是所有地方都精致——是在用户情绪最高涨的那几个触点做到极致。


# 五、快速迭代:从 MVP 到 v2 的节奏

# 5.1 迭代的四个阶段

MVP 上线 → 收集数据 → 决定下一步 → 再次上线
   ↑                                      |
   └──────────── 2 周一个循环 ─────────────┘
1
2
3

不要等"功能完整了再上线"。每一个迭代只做一件事:

迭代 1(MVP):能登录、能发一条动态。→ 验证"用户愿意在这里发内容吗?"
迭代 2:能评论、能点赞。           → 验证"有互动后留存率提升吗?"
迭代 3:能关注用户、有信息流。     → 验证"用户会主动回访吗?"
迭代 4:能发图片。                 → 验证"富媒体会让内容量提升吗?"
1
2
3
4

每个迭代只有一个核心假设。如果你一次迭代同时验证 3 个假设,上线后数据涨了——你不知道是哪个原因涨的。数据跌了——你也不知道是哪个原因跌的。等于白做。

# 5.2 "两周规则"——工程师的铁律

如果一个功能从设计到上线超过 2 周 → 说明它不是一个 MVP,你做出了一个"你以为用户需要"的东西。
1

2 周不是因为技术限制——是反馈周期的限制。超过 2 周,你上线时已经忘了当初的设计决策;用户需求可能已经变了;竞品可能已经做了类似的事。

如果估出来要 3 周——砍功能,不是延期。砍到 2 周以内。你能砍的永远比你想象的要多。

# 5.3 上了线不是结束——"空跑"的禁忌

MVP 上线后最常见的死亡方式:没人看数据。

❌ 迭代结束的标准:
"代码合并到 master,测试通过了,发版了。"

✅ 迭代结束的标准:
"代码上线 5 天后,拿到了足够的用户数据,
验证了(或否定了)迭代开始时的假设,
产出了下一步的行动建议。"
1
2
3
4
5
6
7

一个 MVP 上线后如果没拿到可用的数据——和没上线没有本质区别。你只是把代码部署到了一台服务器上,没有"学到任何东西"。


# 六、综合案例:一个积分系统的 MVP 设计

回到文章开头的例子:"做一个用户积分系统,用户签到、消费都能获得积分,积分可以兑换优惠券。"

# Step 1:明确假设

核心假设:积分激励能让用户的月消费频次从 1.2 次提升到 2.0 次。
验证周期:上线后 4 周。
成功标准:实验组(有积分)vs 对照组(无积分),月消费频次提升 ≥ 50%。
1
2
3

# Step 2:砍到最小验证手段

完整的积分系统需要:签到、消费积分、积分商城、兑换、过期规则、积分明细、排行榜……

全部砍掉,只留一个东西验证假设:

MVP 方案:不做积分系统。直接推送消息:
"恭喜!本月消费满 3 笔赠送 10 元优惠券(限时 7 天使用)"

→ 不做积分累计,不做积分商城,不做兑换。
→ 直接"笔数换券",后台手动发,前端只展示。
→ 成本的十分之一,但验证的是同一个假设:激励能提升复购率。
1
2
3
4
5
6

# Step 3:代码实现的最小化

后端:
  - 查询本月订单数 ≥ 3 的用户 → 一个 SQL
  - 给他们账户发一张固定面额优惠券 → 一个 UPDATE
  - 定时任务每天跑一次 → 一个 cron

前端:
  - 首页展示优惠券到账的横幅 → 一个已有的组件
  - 不需要新页面

总工时:后端 1 天 + 前端 0.5 天 = 1.5 天
对比完整积分系统:至少 3 周
1
2
3
4
5
6
7
8
9
10
11

# Step 4:判断验证结果

4 周后看数据:

如果实验组复购率从 1.2 → 1.8(提升 50%):
  ✅ 假设验证成功。下一步做积分系统有数据支撑了——可以投入 3 周去做。
  
如果实验组复购率从 1.2 → 1.3(几乎没变):
  ❌ 假设被否定。积分激励不是用户复购的驱动力——省下了 3 周的开发成本。
  下一步应该验证别的假设(比如:是不是商品品类太少导致的?配送太慢?)
1
2
3
4
5
6
7
8

无论验证成功还是失败——MVP 都完成了它的使命。你学到了东西。


# 七、工程师做 MVP 的常见坑

# 坑 1:为 MVP 写的代码"反正是临时的"就不管质量

❌ "这个查询循环里调第三方接口——先这样,以后改成异步的。"
→ 这个"以后"永远不会来。三周后线上因为这个超时报错,你忘了当初的"临时方案"。

✅ 同样是临时方案,但加一行注释:
// FIXME(MVP): 同步调用超时风险,迭代 2 改成消息队列异步
// 触发条件:日订单 > 100 时必须改,目前日订单 < 20 风险可控
1
2
3
4
5
6

原则:可以不做异常处理,但要知道什么情况下会出问题。把已知风险写在注释里,设定触发阈值。

# 坑 2:MVP 偷偷变成了"我想做的功能"

需求:做个商品收藏功能(MVP:一个收藏按钮 + 一个收藏列表)
→ 实际做出来的:收藏夹分类、批量管理、降价提醒、收藏商品分享……
→ 多了 4 个功能,没有一个是当初核心假设要验证的
1
2
3

每次写着写着想"再加一个",问自己:这个额外功能是在验证假设,还是在满足我的工程师完美主义?

# 坑 3:MVP 做了,但没做数据埋点

"功能上线了,但是忘了埋点。不知道谁在用、怎么用、用了多少次。"
→ 这个 MVP 白做了——你什么都没学到。
1
2

MVP 的数据埋点比功能本身更重要。 功能可以糙,但数据必须全:

  • 谁用了(用户 ID)
  • 什么时间(时间戳)
  • 做了什么(事件名)
  • 达到结果了吗(转化事件)

# 八、小结

MVP 不是做一半产品——是用最小的成本,跑完一次"假设 → 验证 → 学习"的闭环。

MVP 的正确流程:

1. 写假设    → "我相信做 X 能让 Y 指标提升 Z%"(必须带数字)
2. 选手段    → L1 纸上原型 → L5 最小代码,从低到高
3. 砍功能    → 只做验证这一个假设所需的最少功能,多余的都砍
4. 做埋点    → 上线前先确认数据能不能拿到
5. 上线看数据 → 5 天后出结论:假设成立 / 不成立,下一步做什么
6. 再迭代    → 成立 → 继续做;不成立 → 换个假设
1
2
3
4
5
6
7
8

三条行动原则:

  1. 不写没有假设的代码——每个功能上线前,你都知道它在验证什么
  2. 两周上不了线的功能都不是 MVP——砍到两周以内
  3. MVP 的成功标准不是"用户说好"——是"你学到了新东西"
#MVP
上次更新: 2026/06/15, 14:13:42
功能优先级排序法
产品数据指标设计

← 功能优先级排序法 产品数据指标设计→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式