8个月前,我开始了一项项目,初步设定了一个非常清晰的范围。一个AI代理,帮助独立的个人教练在WhatsApp上管理他们的客户。每日跟进消息、运动提醒、进展跟踪、回答同样的常见问题等。清晰的范围,预计4周时间。

这是我实际上在8个月前开发的内容,直到我意识到这一点:

一个定制的客户关系管理(CRM)系统,因为我觉得教练们需要在一个地方看到所有客户。一个移动应用,因为我觉得教练们会想在手机上使用。一个Web控制台,带有图表,因为我觉得可视化进展会很有价值。一个视频会议调度功能,因为一位教练曾经提到过它。一个付款跟踪模块。一个营养日志附加组件。一个定制的分析控制台,带有教练们用来展示给客户的同类保留率。

其中没有一个是原始范围内的内容。所有这些在当时都觉得有道理,但并不是核心产品价值的来源。

教练们实际上需要的是简单的东西。他们的客户每天都会收到一个WhatsApp消息。客户回复消息后,代理会给出反馈和激励。教练在每周末会收到一个总结。就是这样。就是整个价值。

3周前,我删除了所有其他内容。CRM代码、移动应用、控制台,所有的内容。仅保留了WhatsApp代理和一个非常简单的管理员视图。

当前的栈:Claude Sonnet用于代理,Supabase用于数据,Photon Codes用于WhatsApp路由,因为多个客户在一个WhatsApp号码上有一些特定的复杂性我不想自己编写,Langfuse用于可观察性,Stripe用于计费,Vercel用于landing页面。这就是所有的内容。

去掉所有额外内容后的开发时间:11天。它在每个可衡量的方面都比8个月前版本更好,因为它只做了一件事并且做得非常好。

我不断陷入的陷阱是,每个功能都觉得它会减少流失或增加价值。其中一些可能会在某种程度上减少流失或增加价值。但是,维护8个功能的总成本在作为一名独自开发的开发者时是不可见的,直到它把你压垮。每个功能也是一个bug表面、一个支持票表面、一个入职流程表面,和一个分散开发者的核心环节的干扰。

作为一名独自开发的开发者,你的真正优势是专注和速度。额外的功能是你优势转化为缺点的东西。不知道我需要学习这个教训多少次。