自研产品最诚实的终点,不一定是产品

自研产品最诚实的终点,不一定是产品

这些年我给自己做过不少东西。它们大多在“做完”那天就到了顶点:功能齐全,逻辑正确,然后被我搁在一边,很少再打开。真正每天还在用的,只有一个我自己做的番茄 App。

一个奇怪的事实是:它不是我做得最难的,也不是功能最多的。恰恰相反,它简单到有点寒酸。但在那些功能更完整、更复杂的工具都悄悄沉默之后,只有它活了下来。我想先弄清楚,它凭什么活下来。

番茄 App 为什么活了下来

它活下来,靠的不是某个亮眼的功能,而是一条环环相扣的因果链。

链条的起点是熟悉。我没有另起炉灶设计一种新的番茄钟,而是照着我早就用惯的那类应用重做了一个。第一次打开它,我不需要学任何东西,它的节奏正好落在我已有的习惯上。熟悉意味着很低的启动成本——而一个工具会不会被用第二次,往往就取决于第一次用起来有多不费力。

熟悉之所以能保持,是因为我够克制。重做的时候,我只留下自己真会用的那几个功能,其余一概砍掉。别的番茄应用堆着统计、社交、成就、无穷的配置项,那些东西对某些人也许有用,对我只是噪音,每一个我不用的功能都在悄悄抬高我找到自己那一块的成本。克制很难,因为加一个功能总有一个听起来合理的理由,而“不加”这个决定没人替它辩护。但让这个 App 一直被用下去的,恰恰是我狠心没加进去的那些。

因为只对准我一个人,我可以把每个细节都调到贴合自己的手感,不必为想象中的其他人做任何折中。别人的产品要在无数偏好之间取折中,我不用折中,只要对准一个人。这种彻底的个人化,换来的是即时的回报:我坐下、开始、专注一段,当场就得到一段被保护起来、不被打断的时间,和一个清楚的开始与结束。我不必等到某天看统计才觉得它有用,它在使用的那一刻就已经还了本。即时回报是让人愿意再打开一次的理由——每一次使用都不是为遥远的好处投资,而是当下就有所得。

而正是这些“再打开一次”,让最后一环成为可能:数据在使用中自然沉淀下来。我什么时候开始读书、读的是哪些书,这些记录不是我特意去填的,而是我照常使用时顺手落下的影子。这一点很关键:如果记录需要我额外维护,它迟早会在我忙、我累的那天第一个被牺牲掉;正因为它是行为的副产品,而不是一件额外的任务,它才能长期无痛地积累。日子久了,这些沉淀又反过来让工具越来越贴合我,越来越难被替代。

把这条链看完整就会发现:熟悉降低了开始的门槛,克制守住了这份熟悉,个人化让每次使用都足够舒服,即时回报让我愿意一次次回来,而一次次回来才让沉淀成为可能,沉淀又让我更离不开它。它不是靠某个功能活下来的,是靠这条链自己转了起来。

能力不等于被使用

番茄 App 教我的道理,很快在另一件小事上被反过来验证了一遍。

OpenClaw 我很早就装好了,能力一直都在,但我用得并不多,也谈不上顺手。它像一个我知道、却没真正进入生活的工具:需要用的时候要专门打开它、切换到一个单独的地方、把自己重新放进它的语境里。这几步都很小,但叠加在“我本来只是顺手想处理一件小事”这个念头之前,就足够让我一次次选择算了。

最近我把它接入了微信,变化来得很直接:我明显更愿意用它,体验也好了很多。值得停下来想清楚的是,这段时间它的功能几乎没有增加,我能让它做的还是原来那批事。真正变的,只是它出现的位置——它不再要求我先离开正待着的地方再去找它,而是直接出现在我已经在的地方。

我做了很多年后端,习惯的验收标准很清楚:功能实现、逻辑正确、接口稳定。按这套标准,OpenClaw 早就“做完”了。但它一直没在我的生活里真正活起来,缺的不是能力,是能力抵达日常的那条路。这不是说稳定和正确不重要——它们是一切的地基,一个结果不可靠的入口,再顺滑也只是让人更快地失望。我要补的不是地基,而是从地基通向日常的那段路。

于是我愿意把能力和使用当成两件事看。能力是存量,写进代码里就一直在,不会因为没人用而减少;使用是流量,只在有人真的把它用起来的那些时刻发生,一停就归零。我们习惯为存量骄傲,因为它看得见、留得住;但一个工具对生活的实际影响,几乎全由流量决定。能力决定它理论上能做什么,摩擦决定它现实中被用多少次。价值不是在功能写完那一刻产生的,是在每一次真实使用里一点点兑现的——没有使用,功能只是一种还没变现的可能。

回头再看番茄 App,它活下来的那条因果链,本质上就是一条把摩擦压到极低、让存量顺畅变成流量的通道。它不是能力最强的,却是唯一一个我够得着、也愿意天天够的。

我是第一位用户,但只是一个样本

这两件事让我慢慢认定一个做个人项目的起点:先别去想象一个模糊的“别人”,先从自己出发,先让自己用得舒服、用得高频。

好处很实在——我不必凭空猜测用户。为一个想象出来的人做设计很危险,因为我可以把任何我喜欢的功能都合理化成“用户应该会需要”,而这个虚构的用户永远不会站出来反驳我。我那些做完却没用起来的东西,很多就败在这里:为一个不存在的人,解决一个我猜出来的问题。当我把自己当用户,需求就不再是猜的:我知道自己什么时候真的卡住,哪一步让我烦躁,什么东西我会一次次回来用。而且我是会持续使用的那种用户——哪里不好,用不了几天我自己就会因为难受而发现。

但这里有一条必须划清的界线,否则一个好起点会变成陷阱:把自己作为方法,绝不等于把自己当成所有用户。我只是第一个真实的用户,一个方便、诚实、随时在场的样本,但终究只是一个样本。我用得顺,只能证明这个东西对我这样的人有效,证明不了它对所有人都有效。我最先被硌到的痛点,未必是这个领域里最重要的痛点;我用得顺的设计,也可能只是顺应了我的坏习惯。作为唯一的用户,没有人反驳我的偏见,也没有人提醒我:那些我早已习惯、甚至绕过去都不自知的障碍,对别人可能是迈不过去的坎。

所以我逼自己把三样东西分开。一样是我的高频真实问题:它频繁出现、让我真切难受,值得为我自己动手,因为需求的强度是真的。一样是我的个人特例:我用得顺,只是因为它恰好长在我特有的习惯上,换个人也许根本不需要,甚至觉得别扭。还有一样是可迁移的共性:某个我遇到的问题,剥掉我的特殊性之后,在很多人身上以不同形式反复出现。样本诚实,不代表样本没有偏差。只有当我能从自己的具体经历里认出那份可迁移的共性,并把它和纯粹的个人特例分开,我才有资格去想:这个东西该不该离开我。

私用、开源、产品化:三种归宿,不是三级台阶

于是就撞上那个真正的问题:一个我自己已经每天离不开的东西,要不要让它离开我,去更多人那里。

我一度默认这是个进度问题——私用是第一级,开源第二级,产品化第三级,东西够好就该沿着台阶往上走。想清楚之后我觉得台阶这个比喻本身就错了。私用、开源、产品化不是一条必然向上的升级路线,而是三种不同的价值兑现方式,各自面向不同的人,承担不同的责任。

私用的价值核心,是彻底贴合一个具体的人。番茄 App 好用,恰恰因为它只对准我,不做折中。而它的好用,建立在大量我心知肚明、却从没写下来的隐含上下文之上:我的习惯、我的节奏、我能容忍什么、我不在意什么。这些东西对我透明,对别人却是缺失的。私用之所以轻,正因为它可以把这一切留在作者脑子里,不必说明、不必兼容、不必解释。

开源改变的是谁能看见、谁能拿走。它交付的不是一份开箱即用的完整体验,而是一份能被理解、被复用的方案。它默认使用者有能力、也愿意去填补我没替他准备好的上下文。所以开源真正要我多做的,往往不是把产品打磨得多完善,而是把藏在脑子里的隐含假设显影出来:讲清它解决什么问题、依赖什么前提、什么情况下根本不适用。我不必为别人的最终结果负责,但必须为把话说清楚负责。最糟的开源,是把一堆只对作者有意义的代码直接倒出来,摆出一副“拿去用”的姿态,却没交付复用所需的那份说明——它比诚实的私用更糟,因为私用至少什么都没承诺。

产品化的责任最重,重到几乎是另一件事。当我把东西推给我不认识、也无法预设其处境的人,我就得替他们把每一个曾经留在脑子里的上下文都补齐。它要求我承担部署和服务:它得一直可用,得应付我从没设想过的用法,得在坏掉时有人管。真正的工作量常常不在那个核心功能上,而在核心之外那一整圈让陌生人也能用起来、出了问题有人负责的东西上——那圈责任,往往比里面的核心还大。

所以我不再问“做到了哪一步”,而是问一个东西的价值有多少能在离开我之后依然成立。如果它的好几乎全来自对我一个人的贴合,那它最诚实的归宿就是私用;如果它内核里的问题足够普遍,只是被我的习惯包裹着,那它值得开源,让别人拿走内核、自己重配外壳;只有当那个问题既普遍、我又愿意连同周围那一整圈责任一起扛起来,产品化才真正成立。

拿这把尺子去量番茄 App,结论反而让我踏实:它是我做得最“成”的一个,却恰恰该停在私用。它的好用重度依赖我熟悉的流程和我砍功能时的私人取舍,这些几乎没法原样迁移给别人。这不是缺陷,是它成立的方式。做成,和该不该外推,本来就是两个独立的问题。

先活下来,再谈去哪里

我现在手上正要面对这个判断。我想把从番茄 App 和微信入口里得到的东西,用到给自己做的个人信息中枢、秘书这类系统上,避免再犯“做出来了、自己却不用”的老毛病。它们有没有一天会走向更多人,我此刻不急着回答。我先要做的,是让它们过掉番茄 App 过掉的那一关:先成为我自己每天真会用的东西。顺序不能颠倒——如果一个东西连作者自己都留不住,那讨论它要不要走向更多人,就是在为一份还不存在的价值分配责任。

所以如果说这些年我真的学到了一点什么,那就是:对一个自研产品最诚实的期待,不是它有一天能服务多少人,而是它今天还在不在被用。先活下来,再谈去哪里。成功不必意味着走向更多人——它更多时候意味着,我终于为一个东西找到了它诚实的归宿。而对大多数只为自己而造的东西来说,那个归宿,可能就是安静地留在我自己的日常里。