DailyTick 开发实录 —— 开始

2017-01-04 08:19:28来源:cnblogs.com作者:福柯人点击

第七城市

2009 年我读了李笑来老师的《把时间当朋友》,知识了柳比歇夫的时间记录法。当时激动坏了,马上动手实践起来。一开始的时候,是用一个小本子,走到哪儿都带着。完成一件事,就记录一下花费的时间。这样的做法持续了一周多的时间,我发现每天浪费在 Google Reader 上的时间大幅度减少了。那个时候,我使用的是一部 Nokia S40 手机,可以上网。于事,又在淘宝上买了一个 PHP 空间,用 PHP(好像是Yii2)做了一个在线版的。一直用到过年(这书是夏天发布的)。然后就悲剧了。卖我 PHP 空间那个店跑路了,我的大概一两个月的数据就那样没有了。当时非常的受打击。一下就没有心情做记录了。

大概又过了一年,我有了一台 S60 的手机。然后尝试过用各种方法再写一个时间记录的工具。但都感觉很难用,还不如手记的方便。后来因为学业之类的问题,这个工具也就没有继续做了。

2014年左右,我的手机已经换成了 Android,那时候设计了一个叫 ToDo-Doing-Done 的时间记录工具,和现在的 aTimeLogger 有一点像。只是我多了一个 ToDo 的功能。这个东西也是各种方案去尝试,体验都差得我自己都不想用。

到了2016年,我重新开始尝试做时间记录。一开始尝试使用 WPS 的手机版来记录,也用过 Google Docs,还有番茄土豆,最后还是使用了 aTimeLogger。在记录的过程中,我反复思考和感觉自己在时间记录上有什么样的需求。aTimeLogger 能不能完全满足我的需要。最后,我想到了现在这个项目:DailyTick。

aTimeLogger 做为时间管理的工具,已经是非常好用的了。其实还有一个也不错的,而且 UI 做的比 aTimeLogger 好看多了的 Mr.Timer。但是,仔细看李笑来老师的文章,你会发现,他反复强调的一点是:时间是不能管理的,能管理的只是我们自己的注意力。我反复思考、对比他所谓“时间不能管理”这个说法和主流的时间管理概念有什么不同。我一开始的感觉,这不都是一样的事情吗?不就是规定自己一天中的哪段时间应该干什么。然后严格执行这个计划。比如:看书1小时,写作1小时,给某某打电话30分钟。或者就算用番茄工作法,也不过是把这个时间变成一个番茄时间而已啊?!

然后我又仔细回忆柳比歇夫的故事,慢慢想通了一点(也可能是我想错了):在柳比歇夫的故事里,并没有提到他计划干什么事情需要多长时间。他只是在记录自己做每件事情的时间。然后对这些时间进行统计。也就是说,我们要把自己的生活在时间这个维度上数字化。我应该是在2016年5月到6月这个时间段里想通这个问题,并开始设计 DailyTick 的。但一真没有时间动手开发。在那之后,我尽量用 aTimeLogger 模仿 DailyTick 的思想去记录每天的行程。然后在周末的时候整理、统计,对比本周和前一周的各项记录项目和时间使用量。看看哪个多花了时间,哪个少花了时间,哪个可以削减,哪个应该增加。如此一直从9月搞到12月。

我发现 aTimeLogger 最大的问题就是统计不方便,记录也太麻烦。先说记录麻烦:每当要开始一个任务的时候,总有一个难题,就是这个事情是什么分类的事。如果记得太粗,你能看到的每天的时间花费都是非常整块和时间。而这段时间里的效率没法分辨。如果记得太细。那就需要在干这个事情的时候,去找到对应的类别。而有的时候,一件临时插进来的事情,很可能找不到分类。如果这个时候你要新创建一个分类——哈哈,你懂的。

再来说一下统计的功能。aTimeLogger 是把一天里(或者一周、一年)按照分类来加总,形成一个饼图。就如刚才说的,如果你要统计得细,那就需要创建很多的分类。虽然 aTimeLogger 可能考虑到这个问题,提供了一个分组的功能。但分组的选择有时候也是一个灾难。比如你创建了一个“工作”分组,里面有“打电话”、“发邮件”和“面谈”。那么不常用的工作可能会被你折叠到“工作”这个分组的内部。一段时间不用,甚至会忘记一个类别在哪个分组里(如果分组和类别太多和话),然后还要一个分组一个分组的找(好像又说回到上一个话题了)。总之就是统计功能太单一。我的做法只能是在备注里写上工作或者学习的内容,然后周末再自己一条一条的加起来。由于这种方式很麻烦,一段时间之后,我就放弃了,只记录“工作”、“阅读”、“学习”这样的整块的时间,不再统计细部的时间了。

那么,DailyTick 的设计哲学是什么呢?我举了个比较形象的例子(其实是我不想画图了^_^):你有一个圆形的钟表。表转一圈是24小时。早晨8点起来,你在表盘上画了一个记号。然后去洗漱。洗漱完——可能是花了10分钟——你回来,又在表上做一个记号。诸如此类。当然,你还需要一个本子,用来记录每个记号代表的事件。同时,还可以给这个事件做一个标签。于是,这个时间记录就丰富起来。

比如:8点30分从家出门,步行到公交站,记录了一下(事件:走路到公交站,标签:走路、通勤);坐上公交,到了公司,再记录一下(事件:坐公交到公司,标签:公交、通勤)。看到了吗?你不但可以记录做了什么事(就像 aTimeLogger 的分类一样),还可以给每个事件增加新的统计纬度。比如,如果你经常出差,还可以在标签里记录事件发生的地点,这样你就可以知道自己一个月在哪个城市待的时间最长。

也许你会说:我要上公交了,哪儿有时间做记录?!所以,这里的记录方式非常简单:你只需要在通知栏里点一下,就相当于刚才在表盘上刻了一个记号,等你到了公司,把把事件和标签补上(感觉像刻舟求剑)。也许你还会说:我记录了一堆,都忘了哪个事情对应的是哪个时间了。那我好像帮不了你了。只能提醒你:要经常做好记录,不要等一天的最后再记录,那样很多事情都记不得了。另外,标签这个事情,其实只要事件记录了,标签什么时候加并不重要。这个可以在一天的最后,边回忆一天的工作,边加上标签。我会把最常用的6个标签和最近使用的6个标签直接显示出来,剩下的就只能自己输入了(可能会有 autocomplete)。

有了这些记录和标签,再做统计就方便多了。当然,如果你统计也不想做,我应该会推出一些增值服务:把一段时间的记录导出成,比如 PDF 文件、Excel 文件。当然既然是增值服务了,这部分是要收费的。

DailyTick 会使用 Xamarin 来开发,客户端的源码是开放的。和另一个项目 CoreCRM 一样,开发的过程也会记录在这个博客里。服务器(也就是所谓的增值服务)是不开源的。当然,在客户端,这部分通信的代码也不开源。可能会留一个接口文件。

DailyTick 的 GitHub 地址:https://github.com/holmescn/DailyTick


第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台