那张表格
一张纸质表格平息不了争论
我们用的也是最常见的那种:名字写在左边一列,日期排在上面一行,积分用笔加上去。只要有人站在表格前面,它就管用,而一年里有很长一段时间没有人站在那里,因为我在挪威工作,家人在匈牙利。
更深的问题并不是距离。用笔写下的一笔积分,只记录了积分被给出去这件事,却没有记录它是因为什么给的。一个月之后,总数就成了一个谁也解释不清的数字,而一个谁也解释不清的数字,孩子完全有理由拿来争论。
缺口
学校的应用只汇报学校布置的内容
它们会告诉我布置了哪份作业,以及有没有交上去。这就是它们的用途,而且它们做得很好。
但它们都不包含我们想在课程之外额外增加的阅读,不包含额外的数学,也不包含其他任何我们在家里认为重要的事情。这些付出没有地方记录,也没有办法给它们附上任何东西。
这个模型
一个家庭就是一个小型的运作组织
当我不再围着表格打转,结构就变得很清楚了。家庭奖励制度其实是一套包含四个步骤的流程。
- 有人布置任务,并说明它值多少积分。
- 另一个人声称自己已经完成了。
- 有权限的人批准这次提交。
- 余额随之变动,旁边记录着变动的原因。
学习在这份清单里和其他任何事情等值。二十分钟的阅读,定价方式和批准方式与清空洗碗机完全一样,而这正是关键所在:它不再是一场关于学校的单独争论,而变成了一件标好价格的工作。
于是同一份记录就有了三种视图。家长这一端负责布置任务并批准任务。孩子这一端显示自己应得多少积分、一项奖励要花多少积分,可以提交任务、查看积分明细,却不能修改其中任何内容。Apple TV 应用把余额显示给整个房间,同时完全不能批准任何东西,因为握在孩子手里的遥控器不该给这个孩子自己的家务签字。
没有人能给自己发积分,也没有人能悄悄改动历史记录。真正终结争执的是这一点,而不是任何一项奖励。
重写
第一个版本带着一张我要一直付下去的账单
我最初用 FlutterFlow 做了好几个月,配上自己的后端和自己的数据库。它能用。然后我认真算了一笔账:拥有那个数据库到底意味着什么。
保存孩子的数据不是一个存储问题,而是一项长期义务。按照 GDPR,每一种处理目的都要有合法依据。因为涉及未成年人,还要做影响评估。要有一套留存计划,到期就删除,而不是等谁想起来才删。发生数据泄露要在72小时内通报。删除请求必须一路执行到备份里。隐私声明在每一次功能改动之后仍然必须属实。在美国,COPPA 针对13岁以下的用户又加了一层要求,其修订后的规则已于2026年4月起全面强制执行。
在当初拍板做这个产品的人都早已换了工作之后,这些义务还要继续履行下去。对一个由一个人独自完成的应用来说,它是整个项目里最大的一笔经常性成本,而其中没有任何一项能让产品变得更好。
所以重写的版本改用 Xcode,把数据放进每个家庭自己的 iCloud。不需要账户,我这边没有任何服务器保存东西,没有跟踪,也没有需要我保护或者可能被我弄丢的数据库。Apple 为这个应用给出的标注是“未收集数据”,之所以能这样标注,是因为另一端确实什么都没有。
丢掉几个月的成果并不好受。但只要把那份长期义务老老实实地算进成本,它仍然是更便宜的选择。有 Claude Code 承担大量重复工作,这次重写从推倒重来到上架 App Store,只用了大约三周。
在家里
真正改变的是什么
争吵停止了,这在我的预料之中。我没有料到的是孩子开始做计划。一个显示在屏幕上、每次变动都有明确理由的余额,能让孩子把一个数字在脑子里记上好几周,而攒钱正是从这里开始的。
我儿子今年上学,还不会认字。他已经发现阅读就是能拿到积分的地方,所以现在急着想学会阅读,理由和学校毫无关系。他在攒钱买一辆车,一辆真的车。我还没有告诉他那要攒多久。
我女儿现在的阅读量和做数学题的数量都比用表格的时候多,她在攒钱买画材,价格是她自己定的。他们两个都不觉得这是学校的功课,而这正是它唯一能奏效的原因。