做事情就喜欢搞一套流程出来。家里家外,我都爱把它当成一个复杂的系统来看待。最近忙活的这个“项目”,就是为了解决家里的那个大麻烦——《妻子的生活》这个系统,运行起来噪音太大,资源占用太高,搞得整个家庭服务器时不时就崩一次。
寻找“安装包”和“下载地址”
事情是这样的,前段时间我被老婆狠狠地批了一顿。为她说我根本不知道她每天在忙活些什么,感觉她像个永动机,而我像个只会拖后腿的后台进程。我一想,不对,我每天早上起来也干了不少活!但吵归吵,我还是决定像解决一个技术难题一样,把她这个“生活系统”给彻底摸清楚。
我的第一步,就是找那个传说中的“安装包”和“下载地址”。但这玩意儿,不像我以前搞的那些开源项目,能直接在GitHub上找到。这个“安装包”是散的,东一块西一块,藏在她日常的琐碎里头。
我开始“抓取数据”。
- 翻找: 我先是把家里的各种小纸条、备忘录、冰箱贴上的留言全部收集起来。
- 记录: 我把她的手机日历、微信聊天记录里提到“待办事项”的部分,全截图备份。
- 追踪: 最关键的,我逼着自己用手机录音功能,偷偷记录了一周内她对我抱怨或者吩咐的那些看似无关紧要的小事。
等我把这些数据拉出来一看,我简直傻眼了。这哪里是一个安装包,这分明是十几个彼此依赖、随时可能产生冲突的程序包!里面有“孩子接送系统”、“老人体检模块”、“家庭资产管理脚本”,甚至还有一个我完全不知道的“社区团购和退换货补丁”。
开始“下载”和“解压”
光收集碎片还不行,我得搞清楚这些程序的运行逻辑和优先级。所谓的“下载地址”,就是她的大脑和情绪状态。如果她处于高负荷状态,这个“下载”过程就极其困难,随时会中断。
我强迫自己改变了以往那种“等她吩咐我再去做”的被动模式。我拉着她,花了整整两个晚上,坐下来,像开项目周会一样,把所有任务按轻重缓急罗列出来。
我发现,很多任务根本没有文档。比如,洗碗机滤网多久要清理一次?孩子幼儿园的班级群每周几会发布作业?这些都是她自己摸索出来的“隐形配置”。我把这些隐形配置全部“反编译”出来,写进了一个共享的电子表格里。
这个过程极其痛苦,因为她要从记忆深处把那些她已经习惯成自然、根本没意识到是“工作”的事情挖出来,比如“确保门口的快递箱没堆满”“检查水龙头有没有滴水”等等。我像个新手程序员,面对一堆遗留代码,只能一点点问,一点点记,一边记一边发现,,原来这个功能不是独立运行的,它需要另一个我根本没发现的依赖包才能启动。
系统“安装”与“运行”
当所有的任务列表和运行逻辑都明确后,我开始分配资源。以前,我只是被动地“执行”她分配给我的一个函数。我要尝试主动去“安装”这些包。
我把那些高频、低复杂度的任务,比如早上定点清理厨房台面、晚上检查孩子书包,设定为我的“定时任务”。把那些高复杂度的、需要动脑的,比如规划周末出行、研究新菜谱,设定为我的“迭代项目”。
起初,系统很不稳定。我常常忘记某个小步骤,导致整个流程崩溃,她就得回来收拾残局。就好比你在系统里打了一个补丁,结果导致老系统彻底跑不起来了。我们不得不经常“系统重启”,再对流程进行微调。
但随着我跑的次数多了,对这个“妻子的生活”系统的架构理解就越来越深。我意识到,这根本不是一个我能下载并安装在自己电脑上的程序,而是一个需要我们共同维护的分布式系统。那个所谓的“下载地址”,不是外部的,而是我们俩的沟通和协作。
我为啥要做这个?
说来可笑,我搞这么一套复杂的数据分析和系统重构,不是为了什么高大上的目标,而是因为一件事。
去年夏天,我答应她去把车送去做保养,但被我拖了整整两周。那天下暴雨,她要带孩子去看医生,车子在半路抛锚了。她在雨里淋了快一个小时才叫到拖车。等她回家,她一句话都没说,但那眼神,比我被老板骂一顿还难受。
那一刻我才明白,我拖延的不是一个简单的汽车保养任务,我拖延的是“妻子的生活”这个系统的稳定性。我在她的系统里挖了一个巨大的Bug,而她却要为我的失误支付巨大的代价。
从那天起,我下定决心,必须找到并共享那个“安装包”和“下载地址”,彻底进入她的操作系统。虽然家务活没有少干,但她脸上的笑容多了,系统运行流畅了,不再时不时地弹出错误提示了。这感觉,比我当年搞定一个十年的老项目还满足。