一个 App 可以是一顿家常菜
Robin Sloan 为四口之家做了一个消息 App,五年不更新却仍在运行。这篇文章重新定义了"成功的软件"——不是用户量,而是主权、完成和回家的感觉。
全文翻译
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 极度简单,部分原因是运气。
精选评论
延伸实践者
独立开发者,2022 年写了延伸文章《The Joys of Home-Cooked Apps》,分享了自己的家常菜 App:给家人用的购物清单、自制书签工具、护理人员排班 DSL。
不一定要泛化一个解决方案来让更多人使用。你可以只为自己做。
Not every idea needs to be a product or a package.
五周年反思
2025 年更新中提到 AI 工具(Claude 等)像是"超级食物处理机",极大增强了家常菜厨师的能力。并提到 Maggie Appleton 对概念的理论延伸。
随着时间推移,最被低估的属性是主权——而不是可用性、可塑性或特异性。
Availability, tractability, specificity: all great. But don't sleep on sovereignty.
苏格拉底对话
通过对话探索"家常菜编程"的核心张力
个性化洞察
基于你的身份、项目和关注领域,提炼最切合的发现
1. 你已经在做"家常菜"了
你的知识库系统、skills 体系、dual-store 脚本——这些是典型的"家常菜 App"。它们只为你工作,解决你的具体问题。理解"家常菜"的哲学,能帮你更自觉地扩展它。
2. AI 让家常菜编程从愿景变现实
Robin 2020 年花一周做 BoopSnoop。你已经在用 Claude Code 实时编写和迭代工具,拥有更大的杠杆。"学编程"的经济叙事正被 AI 改写。
3. "被允许完成"——反直觉的产品观
商业软件永远不能完成——必须持续迭代。但个人软件可以"基本完成后就这样了"。四个人用、五年不动的 App 也可以是巨大的成功。
4. 画出你的依赖图谱
你的工具链也有依赖:Claude API、飞书 API、Obsidian、Hugo。你越依赖单一平台,数字主权的根基就越脆弱。