0%

量化自我之路

起因

我第一次接触量化自我是在2010年的时候,读到李笑来先生的《把时间当做朋友》,里面提到的《奇特的一生》这本书,书中记录了柳比歇夫是如何几十年如一日地将自己的时间开销以数字化的方式记录下来的。当时出于好奇进行了实践,采用与柳比歇夫类似的方式,把时间开销详细地记录下来。

说实话这并不是一件很容易的事情,实践过后会发现很多问题。我自己总结来说,最大的问题在于这种记录方式对于精神的集中度要求会很高,在进行一些纯粹的工作时也许影响不大,但是在进行很多琐碎事情时,很容易让人举步维艰。

举例来说,如果一天的时间只投入在5~10件事情上,那记录的成本就很低,诸如投入一到两小时以后,回过头来记录,1小时35分,写博客。但是如果投入的事情很多,时间比较发散,没有计划性,那这件事情的成本就会很高,每5~10分钟就要回过头去想想自己刚才在做什么。

最终我的第一次尝试在实践了大约2周时间后终止了。因为在这个实践的过程中,自己反而被锁在了时间的牢笼里,每分每刻都在想着自己要做什么。一旦规划好了,就投入到目标的事情上去。等事情做完,又想着马上该接上的下一件事情是什么。

这次尝试终止以后,很长一段时间里我没再把这件事情当回事。对于一般的任务管理来说,采用GTD工具对我来说已经够用了。直到工作后的一些年份里,我开始意识到时间的开销管理开始成为一个问题,我觉得有必要像管理收支一样,对时间的开销进行记录。于是我又回到了量化自我的实践上来。

当然,实际上量化自我所收集的数据,并不仅限于时间的开销,我整理的方法也会包含其他各方面的数据。只不过对于时间的记录和分析,是我做这件事情的初衷。

收集数据

线上时间开销数据

在现在这个时代,人们花在线上,或者说屏幕前的时间真的越来越多了。这也使得这部分的时间统计变的非常的简单。

针对桌面端来说,有非常多的应用可以自动记录时间的开销。目前来说,在pc和mac上,我都会使用RescueTime这个应用。只要设置成开机自启动,这个应用就可以在后台静默地记录所有的时间花费。(除了桌面端以外,也支持android。)另外,除了记录,RescueTime提供的在线服务还可以查看时间开销的统计报告,其中比较有价值的部分在于,它还会自动根据活动的类型进行(积极/消极)分类。

RescueTime还提供了付费服务,会有更多的时间管理和数据管理上的功能。不过这部分我没有接触过,出于对数据自主性的考虑,我写了一个简单的程序,每月通过RescueTime开放的API接口,把自己的数据下载回本地,以csv文件存储,并保存在私有的代码仓库里。

它的缺点在于,本地运行的静默程序不包含任何数据交互的功能,所有的数据都是上传到服务器上,在web端才能查看。如果觉得个人私密数据不想上传,ActivityWatch是一个可以考虑的替代品,不过我没有具体用过,不好对其功能做具体评价。

另外如果使用的是纯粹的苹果生态圈,也可以考虑系统自带屏幕时间(ScreenTime)。缺点是对于第三方浏览器(chrome、edge、firefox),无法统计到具体网站,只有自带的safari是会将花费在浏览器上的时间,穿透到具体站点上。这一点对于通常使用定制app的移动端无所谓,但是对于浏览器使用较为频繁的桌面端还是有些影响。假以时日各大浏览器若是都能支持屏幕时间的话,倒是一个不错的方案。

另外,使用系统自带的屏幕时间,想要获取原始的数据,也是需要费一些手段的。这个项目似乎可以做到这一点,不过根据sof上的这个帖子的说法,可能还需要关闭SIP才行。一个更合乎常理的途径是通过这个地址直接向苹果索要数据,不过我尝试了两回向苹果索要数据,其中并不包含屏幕时间的数据。

对于移动端,在android上我也使用的是RescueTime。不过即使有精神洁癖不想用,问题也不大,android系统本身也会记录应用的使用时间,想必找个法子记录在本地或者是导出都是比较简单的。

至于iOS系统,和上面提到的mac一样,虽然有现成的系统功能会记录这些数据,但是却无法便利的拿到。因为我目前iOS设备使用并不多,所以在这件事情上并不是太关注。后续如果需要的话,我打算的做法是用一台旧iOS设备越狱,通过iCloud同步主设备的数据,然后从文件系统中拿到相关数据,以此来尽量避免对日常使用的影响。不过即使如此,通过iCloud同步的数据依旧存在因越狱引起泄露的风险。最好还是由苹果提供这些数据,毕竟这下数据本来就属于用户,希望以后苹果能完善这块数据的供给吧。

线上其他数据

数字世界的数据,除了上面这些常规的记录以外,另外一项补充的是截图。在Windows上我使用TimeSnapper,而在mac上则是之前提到过的一个自己编写的定时脚本,并不是多么特别的功能,不过作为对于数字记录的补充,有时候留有几张简单的截图,能够更好的理解自己在那个时候在做什么。

移动端似乎没有类似的软件,确实是一个遗憾。不过我想android端倒是存在自己编写程序进行记录的可能,有必要的话倒是什么时候可以试着写一个。

线下时间开销数据

线下的记录不像线上那么方便,可以自动记录,返璞归真的做法当然可以用纸笔。稍微便利一点则是可以用手机app。

android上我长期使用过的是TimeMeter,通常我会给事前就做好分类,设置成桌面快捷方式,在开始前点一下,结束的时候再点一下,就完成了基础的记录,需要有额外的信息则再添加一点备注。

ios上与之类似的app是TimeLogger,虽然iOS本身不支持设置快捷方式这种操作,不过这款app搭配apple watch使用的话,倒是可以做到不用解锁手机就能进行时间记录。而且某种意义上,这似乎也确实是手表应该具备的理所应当的功能。

运动与生理数据

在可穿戴设备丰富的今天,这些数据的收集也变成理所当然,甚至可能是量化自我的一大重点。我个人从最早的智能手环时代开始就有使用穿戴设备,到目前为止,华为的智能手表gt2在产品层面上是足够让我满意的。能收集的数据包括运动记录(我常用的是室内室外跑步、游泳、骑车、划船),睡眠时间,日常热量消耗,心率(并不是很准确)等等,应该算是覆盖全面了。而手表相对较好的续航能力,也使得我不用时常操心什么时候要给手表充电。这一点在我原来使用apple watch时是个麻烦事,频繁的充电使得我必须把充电时间选择晚上,但这么一来就会使得睡眠的记录变的不完整。

值得一提的是,华为提供的数据记录app运动健康本身并不支持数据导出,我不知道是出于封闭生态圈的考虑还是什么。当然也有一些hack的手段,比如github上的这个项目有提到。不过由于华为官方提供了用户自主索要数据的通道,我个人更倾向于采用这种合乎规矩的做法。唯一的缺点就是从提出申请到提供数据,通常需要等待一周左右。从我个人经验上来说,比向苹果索要数据要短一点。另外从两家公司的实际做法上来说,华为在个人数据的保护上似乎也做的更妥当一些。在提出申请时,会需要用户提供账号密码、手机验证、邮箱验证、身份信息验证等四道验证。在提供的数据包上,也会要求用户提供密码进行加密保存。

具体数据的索要方式是在app中按账户中心->隐私中心->获取您的数据副本。获取的数据相当齐全,不过由于是json格式,在作为分析数据前,通常还需要进行一些处理。

财务收支数据

我个人认为这是挺重要的一个数据,至少在财务自由之前,我还是关心钱赚了多少,花了多少的。

比较意外的是,我发现要做这个统计并不容易。举例来说,我能不能通过支付宝账单统计我花了多少钱呢?不能,因为支付宝上的钱有的来自银行卡,有的来自信用卡,有的来自花呗,有的来自余额宝,还有的钱我是不通过支付宝花出去的……而有时候通过支付宝的支出是偿还信用卡,有的是消费,有的是转账,这其中关系错综复杂,而更关键的问题,支付宝是不会记录这笔钱从哪来,花到哪去的……

最终为了终结这些混乱的资金流向,我对个人的资产账户做了一系列精简,包括关掉花呗,关掉不必要的信用卡,互联网金融产品等等。最终只保留一个存款账户作现金收支,以及一张信用卡作为信用消费使用。

这样一来,我只要简单的统计存款账户的资金流向,和信用卡账单,就可以统计到全部的收支情况。所幸这两项数据,在招行的专业版网银客户端上都可以比较容易的拿到。

最后的记录则是通过简单的数据清洗脚本,转成标准csv文件,在经过人工复核(主要是确认开销类别)后,再通过定制脚本,转化成beancount账本。

beancount是一个用于复式记账的领域专用语言,对于复式记账,这里就不展开介绍了,有兴趣可以自行了解一下。单纯的使用来说,并不需要太多的财务知识,使用beancount的好处,我个人认为就和使用markdown写作一样,数据的自主性较好,仅此而已。

当然在财务这块,我个人感觉做的还不是太好。就目前来说,我的记录效果也仅限于能够分析自己当前的净资产状况是怎么样的,过去几个月里自己的开销主要是什么。我个人更希望能够将数据用于对于未来开销预算的分析上,不过因为每个月都有些不同的开销和收入项目,感觉并不是那么容易。

分析与回顾

除了财务数据是单独使用fava这个专用于beancount的可视化工具,以及截图这种非常规格式数据以外,剩余的数据在收集完之后,都是按标准化格式进行保存,以便于分析。

这里我使用的分析工具是tableau,这是一个专用的BI领域工具,不过在数据分析领域也非常合适。相对于制作固定的可视化图表,使用BI工具在进行数据分析上更具有灵活性,可以快速制作图表,必要时可以针对特定数据进行定制分析。早先我也试过使用excel,主要缺点在于每个月制作新的excel文件需要花费一些精力,而tableau的dashboard在制作好以后,后续只要将新的数据文件存放在特定的目录下,就可以自动读取、展示。

缺点的话,一方面是软件本身的授权价格并不便宜,如果制作的图表或是仪表盘想要在移动端查看,那还需要单独部署 tableau server,server端的授权本身就是一笔不小的开支,而要支撑这种量级的软件部署,服务器的开销也并不小。而若是使用公开的tableau public则必须将数据公开才行。由于这类数据涉及过多私人数据,我个人并不太倾向于在公开网站上发布。

好在即使只在桌面端使用,对于我的分析场景来说,也已经足够了。我通常会每月进行一次数据收集和清洗,并进行分析和回顾,一方面看看有没有什么可以改进的地方,另一方面也是让自己重新感受一下,过去的一个月我都做了什么。