返回博客
2026年2月17日Sergei Solod4 分钟阅读

我独自做了一个 SaaS 产品。开启付费后,工作的性质变了

我用晚上、周末和不少假期独自做出了这个产品。支付上线后,bug、onboarding、内容管理、留存和信任不再是“以后再处理”的问题,而是运营真实产品的一部分。

SaaSSolo 开发产品上线PaymentsReliability产品运营

这个产品基本是我一个人完成的。我主要利用晚上、周末,以及比我愿意承认的更多假期来开发它。很长一段时间里,即使它已经在 Web 上运行,我仍然把它当成一个个人项目。

支付功能上线后,这种感觉立刻变了。代码并没有突然变得更高级,但我对产品承担的责任变了。一旦有人可以付钱,一个坏掉的流程就不再只是“以后再修”的 edge case。Onboarding、moderation、retention、信任和可靠性不再是未来的问题,而是产品此刻承诺的一部分。

这是这次上线给我最重要的教训:一个人把功能丰富的项目做出来,和真正运营一个产品,是两种不同的工作。

Solo 开发真正的瓶颈变成了注意力

开发这个产品的那段时间,我几乎从社交媒体上消失了。这不是 launch 策略。产品决策、实现、edge case、流程测试和 release 准备,都在争夺同样有限的时间。

我现在更理解 solo development 的这一面了。瓶颈并不总是我写代码有多快,而是我能把多少注意力分配给产品里不断增加的状态、状态转换和失败路径。

Build 成功并不能回答这些问题。一次支付成功也不能。

支付改变了我对 bug 的定义

在支付上线前,我还可以把一些不完善的地方看成“以后再修”。支付上线后,这种想法对我来说就不再成立。付费产品并不意味着必须没有任何 bug,那不现实。但当另一个人已经把钱交给产品之后,一个已知问题长期不解决的代价就不同了。

Onboarding 和 moderation 也是一样。开发阶段,它们很容易被看成围绕“核心功能”的辅助系统。但在 production 中,只要用户会直接经历它们,它们就是功能体验的一部分。Retention 也是类似:第一次使用体验不错,并不能证明产品已经给了用户再次回来的理由。

支付没有证明产品已经完成。它只是让我看到,“完成”这个词背后其实藏着多少工作。

上线给了我另一种信息

Release 之后开始的是不太适合放进漂亮截图里的工作:只有发布后才暴露的 bug、坏掉的流程、用户出现后才真正成立的 moderation 问题,以及远比做好第一次体验更难的 retention 问题。

我也尽量不把这些信号解释得太过头。上线后的 bug 并不自动说明 architecture 很差。Retention 有问题,本身并不能诊断 product-market fit。一个 moderation 问题也不能证明整个系统都不安全。症状会告诉我该去哪里调查,但不会自动告诉我原因。

真正变化的是证据的质量。上线前,我测试的是“我认为用户会怎么做”。上线后,我必须面对“用户实际怎么做”。Release 不是不确定性消失的时刻,而是某些最重要的不确定性终于变得可观察的时刻。

我现在使用的 post-launch 循环

现在,比起把 launch 故事包装得更漂亮,我更在意上线后的工作:支付带来的经验、坏掉的流程、moderation 挑战、用户行为、retention 中的意外,以及那些让产品逐步变得更可靠的小修正。

  1. 观察真实流程。 不假设我设计的路径就是用户真正会走的路径。
  2. 区分症状和原因。 某一步失败能说明问题发生在哪里,但不自动说明为什么发生。
  3. 优先处理影响信任的失败。 支付、访问、onboarding 和 moderation 的失败成本更高,所以优先级高于纯视觉问题。
  4. 先修最小的已确认问题。 与其根据猜测重构整个系统,我更愿意先消除一个已经确认的摩擦点。
  5. 修完后重新检查用户体验。 代码改动可能技术上完全正确,却仍然没有解决用户面对的问题。

这不是一套普遍适用的 framework。它只是从“做产品”转向“运营产品”以后,对我最合理的一种工作纪律。

Launch 改变了我的“事实来源”

我现在最在意的区别,是已经把产品做出来已经准备好运营产品。开发关注系统是否能按设计工作。运营关注的则是:真实的人使用它、误解它、离开、回来、付钱,或者走进我没预想过的路径时,会发生什么。

所以我不再把 launch 看成终点。上线前,大多数证据来自我的假设和测试。上线后,产品开始通过真实行为、失败和重复使用来给我答案。