翻译解读 · 2026-06-06

一个 App 可以是一顿家常菜

Robin Sloan 为四口之家做了一个消息 App,五年不更新却仍在运行。这篇文章重新定义了"成功的软件"——不是用户量,而是主权、完成和回家的感觉。

~3500 英文原文词数
12 min 预计阅读时间
博客文章 来源类型
★★★ 思维深度

全文翻译

Robin Sloan, "An app can be a home-cooked meal", 2020年2月。2025年2月五周年更新。

你听说过这个叫 BoopSnoop 的新 App 吗?

它在 2020 年 1 月的第一周上线,几乎立刻就被三个不同时区的四个人下载了。此后的这些年里,它一直稳定保持四个日活用户,零流失率——一个响亮的成功,超越了创建者的每一项预期。🙂

我为我的家人做了一个消息应用,而且是和他们一起做的。它极其简单;我们爱它;没有任何其他人会使用它。我想分享一些关于我如何以及为什么做它的笔记,既是(a)给其他考虑类似项目的人一个推动,也是(b)就软件这件事提出一些更大的想法。

几乎不存在

我的故事从另一个 App 说起,现在已经不存在了,叫 Tapstack。

打开 App,你看到的是手机摄像头的实时画面。下方是一个头像网格,有些代表个人,有些代表群组。我的网格有四个格子:妈妈、爸爸、妹妹,还有一个把三个人都包含进去的群组。就像 Snapchat 或 Instagram 一样,你点击拍照,长按录视频。手指一抬,消息就飞出去了——没有编辑,没有预览。角落里有一"叠"消息等着你,看完之后就被丢弃了。

它简单到几乎不存在。Tapstack 更像是一块透明的玻璃,而不是我用过的任何其他 App。

有好几年,Tapstack 是我家主要的沟通渠道。这个 App 不适合实际的书信往来或后勤协调;它的强项是"在场感"。我曾偶遇 Tapstack 的一位设计师,他们告诉我这个 App 似乎特别受散居各地的家庭欢迎:一个侨民应用。因为没有线程,没有历史记录,消息不背负"需要回复"的重担。真的,它们只是一个载波,承载着另一种情感,而那种情感始终如一:我在想你

一张端着咖啡的自拍、一张冰封池塘的照片、一段侄子们嬉闹的视频:我在想你,我在想你,我在想你。

我从没觉得 Tapstack 吸引了大量的用户。我认为这家公司从来没赚过一分钱。App 里没有广告,他们也从没让用户付过费。

为什么他们不让我们付费呢?

2019 年,随着月份流逝而 App 没有收到任何更新,我感到了不断上升的恐惧。果然,秋天的时候,Tapstack 宣布关闭。它给用户提供了一种导出数据的方式。然后优雅地离场了。

我不得不说,那真的是一个很棒的 App。

新的挑战者来了

我们全家一致认为需要找个替代品。虽然我的第一直觉是在 Instagram 或 WhatsApp 上建个群组,但一想到我们温暖的频道会被所有那些垃圾内容包围、侵蚀,我就觉得比失去 Tapstack 还要悲伤。

所以,与其将就一个企业级的消息应用……我为我自己人做了一个。

这个 App 是一个"魔法窗口"——拍照、拍视频,然后传送给家人。消息排队等候,一旦被查看——永远是全屏的,没有干扰,没有催促你评论或分享——就消失。就是这样。这个 App 基本上没有界面。有一个拍照按钮,角落里有一个安静的绿色角标,显示有多少条消息在等待。

以下是一些稍微技术性的观察:

  • 更简单,不是更复杂。与 Tapstack 不同,我的 App 不需要登录系统,不需要联系人管理。它已经确切地知道谁在使用它。(Clay Shirky 说过:"情境化软件不需要被个性化——它从一开始就是个人的。")
  • 开源组件是礼物。核心的摄像头交互是现成的开源组件。没有它,这个项目不可能实现。
  • 后端几乎什么都没有。一个 AWS S3 bucket 存照片和视频,几个 Lambda 函数处理分发。简单到优雅。
  • 永远的 beta。通过 TestFlight 分发,一个舒适的、永恒的测试版。

在现实世界里,我花了大约一周,而且大概一半的时间花在与各种代码签名、身份配置以及我都不知道是什么的东西搏斗上。我烧了些香,扔了些骨头,Xcode 的众神允许我通过了。

I burned some incense and threw some bones and the gods of Xcode allowed me to pass.

在家做饭

很长一段时间,我很难说清楚自己是什么样的程序员。我写了大半辈子代码;我能让很多有趣且有用的事情在电脑上发生。与此同时,如果让我当一天专业软件工程师,我活不过一天。让我管一个关键数据库,你回来时会看到一个冒着烟的弹坑。

做完这个 App,我明白了:

我是编程界的"家常菜厨师"。

I am the programming equivalent of a home cook.

"学编程"这个号召的基础是市场价值。"学编程"被建议为一条上升之路、一条出路。"学编程"提供经济杠杆,职业转型。"学编程"写进你的简历。

但让我们换一个说法:"学做饭"。人们学做饭不只是为了成为厨师。有些人确实如此!但更多的人学做饭是为了吃得更好,或者更实惠。因为他们想传承一种传统。有时候他们学是因为无聊!甚至是因为他们享受和教他们的人在一起的时光。

"学做饭"的理由溢出了清单,而且只有少数与市场有关。烹饪超越了买卖,触及了几乎所有的人类经验。它连接了家庭生活与好奇心;连接了历史与文化;连接了关怀与爱。

当你把编程从"必须专业、必须可扩展"的要求中解放出来,它就变成了一种完全不同的活动,就像在家做饭和在商业厨房做饭根本不是一回事。

When you liberate programming from the requirement to be professional and scalable, it becomes a different activity altogether, just as cooking at home is really nothing like cooking in a commercial kitchen.

我可以向你报告:这种不同的活动给人带来的回报,几乎和为你爱的人做饭的回报一模一样,而且还有另一种感觉,是这个领域特有的。我一直在努力寻找词语来形容它:

这个我为我的家人做出来的消息应用,它不会改变,除非我们想让它改变。不会有突然的改版,不会有广告的洪流,不会有为了追逐一个我们无法理解的用户群的转型。这种感觉是什么?独立?安全?主权?它仅仅是……回家的感觉吗?

What is this feeling? Independence? Security? Sovereignty? Is it simply… the feeling of being home?

2022年2月更新:两年后,我的家人仍然每天都在使用 BoopSnoop。应我母亲的要求,我添加了一(1)个功能。

2023年2月更新:没错,仍然每天都在用!

2024年2月更新:还在 boop,还在 snoop。TestFlight build 26。

2025年2月更新:我没有对这个 App 做任何改动,这感觉棒极了。TestFlight build 30!

杂志长文

三重视角重构:叙事解读 + 批判分析 + 精选评论

核心问题

一个只为四个人使用的 App,为什么值得做?它揭示了关于软件的什么本质?

沉默的证据

当"家常菜厨师"老到不能再做饭时,谁来做?底层平台的规则变了呢?

一个流亡者的宣言

Robin Sloan 的起点是 Tapstack——一个极简的阅后即焚消息 App。四年里,它承载着他一家人的"我在想你"。然后它死了。没有付费用户、没有商业模式、没有广告收入,自然也就没有活下去的理由。

这个死亡触发了 Robin 的核心洞察:你依赖的每一个免费商业 App,都是一颗定时炸弹。它不会因为你想让它活着就活着。它会因为融资轮次、DAU 增长、广告主需求——任何与你无关的理由——而死掉或变异。

Instagram 曾经是一个照片分享 App。Comixology 曾经是一个漫画天堂,被 Amazon 吞噬后变得扁平无趣。Robin 在五周年回顾中写道:

这些 App 基本上在我"发布"的那天就完成了,而且,与现代商业软件不同,它们被允许就这样完成。

These apps are substantially finished the day I "launch" them, and, unlike modern commercial software, they are allowed to just: be finished.

"被允许完成"——这五个字击中了一个荒谬的现实:现代商业软件永远不被允许完成。它必须持续更新、持续迭代、持续追逐新的增长指标。它永远在变成别的东西。

"家常菜厨师":身份的重构

Robin 花了很久才找到自己的身份认同。他不是专业软件工程师——"让我管一个关键数据库,你回来时会看到一个冒着烟的弹坑。"但他也不是新手。他找到了完美的隐喻:编程界的"家常菜厨师"

"学编程"的叙事几乎完全是经济导向的——简历、杠杆、转型。但"学做饭"的叙事完全不同。人们学做饭是为了吃得好,为了传承,为了和教他们的人在一起。这个隐喻的力量在于它重新框定了"成功"。BoopSnoop 的成功标准不是 MAU、ARR 或融资轮次,而是:四个人每天用它说"我在想你"。零流失率。

五年后:从"可用性"到"主权"

2025 年,Robin 写了五周年纪念文章。他说,"家常菜 App"最被低估的属性不是可用性、可塑性或特异性——而是主权(sovereignty)。他观察到,五年里几乎所有的 App 都在他眼前变异了——AI 的闪光碎片嵌入了所有东西。而他的家常菜 App,每一个都在做它该做的那一件事,没有闪光。

压力测试

这篇文章有三个值得审视的隐性假设:

  • 技术能力的幸存者偏差。Robin 花了一周做出 BoopSnoop,但他低估了大多数人的技术门槛。即便在 2025 年,AI 工具降低了编码门槛,"从想法到可用产品"的距离对非程序员来说仍然很长。
  • 平台依赖被低估。BoopSnoop 依赖 AWS S3、Lambda 和 iOS TestFlight——这些都是企业级基础设施。主权是相对的:你摆脱了 WhatsApp 的产品决策依赖,但接受了 Apple 和 Amazon 的平台政策依赖。
  • "完成"的浪漫化。"允许软件完成"听起来很美,但忽略了安全补丁、操作系统兼容性、API 弃用等现实问题。Robin 能做到五年不改动,部分原因是他的 App 极度简单,部分原因是运气。

精选评论

Blake Watson

延伸实践者

独立开发者,2022 年写了延伸文章《The Joys of Home-Cooked Apps》,分享了自己的家常菜 App:给家人用的购物清单、自制书签工具、护理人员排班 DSL。

不一定要泛化一个解决方案来让更多人使用。你可以只为自己做。

Not every idea needs to be a product or a package.

Robin Sloan

五周年反思

2025 年更新中提到 AI 工具(Claude 等)像是"超级食物处理机",极大增强了家常菜厨师的能力。并提到 Maggie Appleton 对概念的理论延伸。

随着时间推移,最被低估的属性是主权——而不是可用性、可塑性或特异性。

Availability, tractability, specificity: all great. But don't sleep on sovereignty.

苏格拉底对话

通过对话探索"家常菜编程"的核心张力

学生
我一直用 WhatsApp 家人群,也挺好啊。为什么要自己做一个?
老师
WhatsApp 五年前的界面和现在一样吗?
学生
不一样……加了 Stories,加了频道,加了 AI 聊天。确实越来越臃肿了。
老师
你选择它的时候,它是一个干净的消息工具。但现在它变成了别的——你同意这种变化吗?
学生
我没得选。它在不知不觉中就变了。
老师
这就是 Robin Sloan 说的"主权"问题。你用的不是你选的那个产品,你用的是它决定变成的那个产品。但我想问你——BoopSnoop 真的独立吗?它跑在 AWS 上,通过 TestFlight 分发。如果 Apple 改变了 TestFlight 的政策呢?
学生
嗯……所以它其实也有依赖,只是依赖的是更底层的平台,而不是另一个消息 App。
老师
没错。主权是一个光谱,不是二元的。你永远无法达到完全独立,但你可以选择你的依赖层——依赖 AWS 比依赖 WhatsApp 的决策层更稳定。一个改变政策的原因可能是法规合规,另一个改变产品的原因可能是 DAU 增长压力。
学生
那个"家常菜"的隐喻呢?感觉挺浪漫的,但是不是忽视了大多数人不会编程的事实?
老师
这是最重要的质疑。2020 年这个门槛确实很高。但 2025 年呢?
学生
有了 Claude、Cursor 这些工具……门槛确实降低了。
老师
Robin 自己也说了——AI 工具就像是"超级食物处理机"。以前你需要刀工才能切的菜,现在机器一秒搞定。但"家常菜"的核心不是技术能力,而是意图——你做的菜是为你爱的人做的,不是为了上米其林指南。每次他们打开它,看到的不是一个公司的产品,而是你做的东西。这种情感密度,是任何商业 App 无法复制的。
学生
这让我想到一个问题——如果 AI 让每个人都能做家常菜 App,会不会出现一种新的"个人软件"生态?
老师
这正是现在正在发生的事。但这个问题,留给下一个来做家常菜的人来回答吧。

个性化洞察

基于你的身份、项目和关注领域,提炼最切合的发现

身份映射

1. 你已经在做"家常菜"了

你的知识库系统、skills 体系、dual-store 脚本——这些是典型的"家常菜 App"。它们只为你工作,解决你的具体问题。理解"家常菜"的哲学,能帮你更自觉地扩展它。

把你的 skills 系统理解为"家常菜厨房"——每个 skill 是一道菜,wiki 是食材库。做新工具时先问:家常菜还是上餐厅?
杠杆升级

2. AI 让家常菜编程从愿景变现实

Robin 2020 年花一周做 BoopSnoop。你已经在用 Claude Code 实时编写和迭代工具,拥有更大的杠杆。"学编程"的经济叙事正被 AI 改写。

列出你日常中反复做的、让你烦躁的数字任务。用 Claude Code 花 30 分钟做最小版本,只解决你自己的问题。
产品哲学

3. "被允许完成"——反直觉的产品观

商业软件永远不能完成——必须持续迭代。但个人软件可以"基本完成后就这样了"。四个人用、五年不动的 App 也可以是巨大的成功。

给每个项目定义明确的"完成标准"。一旦达到,允许它完成。把精力放在做新的家常菜上,而不是不断改进同一道。
风险管理

4. 画出你的依赖图谱

你的工具链也有依赖:Claude API、飞书 API、Obsidian、Hugo。你越依赖单一平台,数字主权的根基就越脆弱。

关键数据保持本地优先 + 多格式导出。API 层面做好 key rotation 和 fallback 方案。