MVP 开发原则

做 MVP 时该坚持的原则和该避免的坑

MVP 的重点不是"最小可用",而是"最小可验证"。只要它能帮你验证一个关键假设,就已经完成了第一版的任务,不需要一开始就做得很完整。

三个核心原则

1. 只做核心功能

所有不能帮助你验证核心价值的功能,都先砍掉。

好的例子:

  • Airbnb 最早只是一个静态页面 + 邮件沟通
  • Dropbox 最早只是一个演示视频
  • Stripe 最早只支持 7 种货币

坏的例子:

  • 第一版就做多语言支持
  • 第一版就做完整的用户权限系统
  • 第一版就做数据导出功能

2. 代码不需要优雅

第一版先让它能跑。重构是有用户之后的事。

可以接受的做法:

  • 把配置写死在代码里
  • 复制粘贴代码
  • 用最简单的数据结构
  • 不写单元测试

不可接受的做法:

  • 完全不能运行
  • 改一个地方要改十个文件
  • 没有任何错误处理

3. 时间分配:开发 10%,设计测试 30%,营销 60%

很多技术人会把 90% 的时间花在开发上,但这通常不是 MVP 阶段最划算的分配。

正确的时间分配:

  • 开发核心功能:1-2 周
  • 设计和测试:3-5 天
  • 准备营销内容:1-2 周
  • 找第一批用户:持续进行

4. 先跑流程,后写代码

萨希尔·拉文吉亚在《小而美》里自创了一个词:「流程化」(processize)。意思是:在写代码之前,先手动帮几个真实用户解决问题,把每一步记录下来。

Gumroad 最早就是一份 2700 行的 Python 脚本。萨希尔手动收集每个人的 PayPal 信息,月底一个一个转账。丑得不行,但能跑,而且有人付钱。等验证了需求,他才把流程自动化。

这个顺序很多人搞反了:直接跳到写代码,结果做出来的东西没人要。正确的是:先人工跑通 → 记录成流程 → 最后才自动化。

每次你想加新功能时,用这四个问题拦住自己:

  1. 能用一个周末做完并交付吗?
  2. 能让客户的生活变好一点吗?
  3. 有客户愿意为此付费吗?
  4. 能快速得到反馈吗?

四个问题里有一个答案是「不能」,就先别做。它们在逼你做一件事:克制。克制在早期就是竞争力。

常见的过度设计

不要一开始就做的事

  • 不要:微服务架构
  • 不要:完整的 CI/CD 流程
  • 不要:性能优化
  • 不要:国际化
  • 不要:完整的错误监控
  • 不要:数据库读写分离
  • 不要:缓存层
  • 不要:负载均衡

可以等有用户再做的事

  • 用户权限系统(先只做管理员)
  • 数据导出功能
  • 批量操作
  • 高级搜索
  • 数据统计面板
  • 邮件通知(先手动发)

技术选型原则

优先选成熟稳定的方案

MVP 阶段不适合顺手练新技术。你要验证的是需求,不是证明自己会用某个新框架。

推荐:

  • React / Vue(不要用刚出的框架)
  • PostgreSQL / SQLite(不要用新数据库)
  • Cloudflare / Vercel(不要自己搭服务器)

不推荐:

  • 刚发布的框架
  • 小众的数据库
  • 自己搭建的基础设施

借鉴现有模板和开源项目

别一上来就从零开始写。模板和开源项目不是偷懒,它们能帮你少踩很多基础坑。

推荐做法:

  • 找一个接近的开源项目
  • 找一个 SaaS 模板
  • 找一个 Starter Kit

不推荐做法:

  • 自己设计整个架构
  • 自己写所有组件
  • 自己实现所有功能

模板、免费额度和现成工具只是加速器,不是产品竞争力。它们帮你更快补齐登录、支付、部署、统计、邮件、存储这些底座,但真正让用户留下来的,还是你的核心场景、交付结果和对目标人群的理解。

选模板时可以用一个更朴素的标准:24 小时内能不能去掉演示内容,跑通一个真实用户流程。如果第一天都卡在环境、文档和陌生抽象里,它就不适合当前这个 MVP。

不要纠结语言和框架

能跑就行。Rust 和 Go 的性能差异,在 MVP 阶段通常没那么重要。

竞争力来自窄而深

独立开发者很难靠功能数量和大公司竞争。更现实的竞争力来自这几件事:

  • 更窄的人群:只服务一个明确角色,而不是所有用户。
  • 更深的场景:理解这个人群的语言、流程、禁忌和预算。
  • 更快的反馈:用户一句话,你当天就能改。
  • 更清晰的取舍:知道哪些功能不做,避免产品被需求拖散。
  • 更强的内容资产:用教程、案例、模板和公开构建不断解释你的产品。

所以第一版不需要证明你能做很多功能。它要证明:你能不能把一个具体问题解决得足够顺手,让目标用户愿意回来。

什么时候该重构

只有在这些情况下才考虑重构:

  1. 有付费用户了:说明产品方向对了
  2. 代码改不动了:改一个功能要花一周
  3. 性能真的有问题:用户抱怨慢
  4. 安全问题:有明确的安全风险

记住这句话

老板说"能用就行",很多时候是对的。程序员一上来就想"要考虑扩展性",反而容易把第一版做重。

在 MVP 阶段,扩展性不是问题。没有用户才是问题。