TODO List 进化史

断断续续和 TODO 斗争了好几年了,私人的 TODO 比较少,主要是工作方面。工作上遇到过站会、日报、周报、月总结等等,每次都要回想一下最近做了什么,这个过程很痛苦。而且还经常接单,被打断,被插入 Bug、需求等等,所以一直在寻找快捷、简便、清晰、易于管理的 TODO。

环境信息
Fantastical2 11.0
PopClip: 2019.10(3032)


在探索 TODO 最佳实践的过程中,我的历程大概是这样的:TODO 类 App → Alfred 插件 → 日历 → 文档 → PopClip + Fantastical2。其中日历和文档都是用的飞书的(顺便打个广告,用了飞书发现市面上同类应用,真的一个能打的都没有)。

在我心里,对一款好的 TODO 应用(或者一个好的 TODO 流程)至少具备以下特点(后续也会用这个标准来打分,另:仅代表个人评分,不喜可以讨论,但不可以骂人):

标准 描述
颜值 颜值即是正义
多端同步 开站会不能抱着电脑吧,这时候需要用手机做小抄(这里的多端主要指 macOS/iOS/iPadOS/Web)
快速唤醒 是否能一键唤醒,唤醒和添加的操作步骤,决定了 TODO 是否能长久生存
一枝独秀 能脱颖而出的原因
一票否决 当然,这个不是特点了。这是指致命缺点,直接导致扣 41 分

Stage1:TODO 类 App

日程、TODO,或者可以用来记录内容的 App,用过不少,有些是本身功能不全面,有些是没充值信仰导致功能不全,有些是用法可能不对,不是最佳实践。虽然没能成为最终的方案,但它们各有特色(为了写博客,又去把这些 App 下了回来,重新体验了一波):

名称 一枝独秀 一票否决
Todoist 颜值高、平台完善、快速唤醒不足
公共插件丰富
过期任务能一键延期到今天
没有 mini 窗口,一键唤醒整个 App,并且 macOS 桌面还会切过去,窒息
评论付费
新增任务没有默认日期
任务时间不能是时间段
已完成与未完成不能很好共存
Things 颜值高、平台支持不足、快速唤醒不足

Area 和 Project 的概念用来管理目标非常方便,比如要达成的目标下,还有哪些 TODO
有 Area/Project/Header/Tag 等,归类方便,比如优先级
可以选中多个 TODO 批量操作
同样没有 mini 窗口,只能唤醒整个 App
时间管理很麻烦,TODO 无法按时间段规划
无法按月查看日历,不方便回顾
无法自动/一键延期 TODO
Notion 颜值高、平台完善、快速唤醒不足

瑞士军刀般的 App,TODO + Agenda + Bear + Trello 的大合集
组件非常丰富,建议大家直接去官网看
竟然可以对文章加锁,简直福音
功能丰富,上手成本较高
流畅度、启动和加载速度相较于 Bear 略差(毕竟功能太多)
从 TODO 的标准来看,易用性不是很好
Agenda/Bear 颜值高、平台支持不足、快速唤醒不足

适合用来做有主题或有日期的记录
比如会议记录、文档记录、做了一个梦
由于日常 TODO 太过零散,主题的存在不仅没能突出目标,还把各个 TODO 分割开,导致不方便查看
Trello 颜值略逊、平台完善、快速唤醒不足

卡片流的管理方式。
适合做专项 TODO,或者项目管理
移动端的卡片流很丑
如果用来做 TODO,无论哪种卡片管理都会造成没有优先级、手动移动卡片这些问题
缺乏日期概念,无法回顾

Stage2:飞书日历

在入职新公司以后,飞书作为了日常办公软件,整合了 IM/日历/在线文档。看飞书的频率明显高于各种 TODO 类 App。于是想到 TODO 最重要的亮点:

  1. 存在感:随时出现在视野当中,防止因为被打断而忘掉高优的事情
  2. 易用性:要做一件事,首先能想到记录在 TODO 当中

既然这样,飞书日历算是一个很好的选择。除了个人日历以外,飞书支持订阅他人日历,如果有权限,可以看到别人都在做什么(甚至可以用来做人力甘特图),于是基于飞书日历 OpenAPI 与 Alfred,自己写了一个流程:

  1. Alfred 支持两个关键字:tododone。分别用于新增 todo,以及完成 todo;
  2. 无论是哪个指令,都调用接口,列出当前还未完成的 todo;
  3. 将新增的 todo 放在当周周六,把周六作为所有 todo 的存放池;
  4. 每周六晚上,自动将本周未完成的 todo 迁移到下周。

最终效果

Alfred 唤醒:

飞书日历月视图:

平时用的更多的是周视图,能展示每天的会议安排:

虽然是在工作中用飞书,但我也注册了个人账号。公司内部有好些大佬都在飞书提供的 Docs 上分享自己的读书笔记,这种形式非常适合个人分享与记录。除此之外,飞书的机器人与小程序是墙内为数不多的流程自动化工具,非常推荐(但其实飞书的 OpenAPI 文档写得惨不忍睹,慢慢来吧)。

放弃了

内网中,对飞书出 TODO 功能的呼声非常高,但不知道 PM 怎么想的,这么重要的功能一直没有提上日程。在使用了一个月的飞书日历后,遇到了不可抗力,最终放弃使用飞书做 TODO 管理:

  1. 飞书的窗口,一直固定在 macOS 的某个 window 上。也就是说,每次用快捷键打开飞书,都会导致 mac 窗口混乱,无法忍受;
  2. 虽然有 Alfred 缩短了唤醒日历的路径,但每次呼出 TODO 的时候,都会有一个请求 TODO 列表的过程。虽然不到 1s,但真正使用的时候,还是非常在意这个时间的;
  3. Alfred 每个 item 提供的选项太少,只能选中,或者 Option+选中。对于日历的操作并不是很快捷;
  4. 每天的 TODO 很多,但飞书只能展示两条,剩下的需要手动展开窗口。这有形中给 TODO 的查看多了一个步骤;
  5. 同样是窗口问题,在日历作为窗口单独弹出后,mac 这个窗口就更惨不忍睹了;
  6. 飞书的 Tab 切换并不是很流程,从聊天 Tab 切到日历 Tab,存在肉眼可见卡顿。

Stage3:PopClip + Fantastical2 + 飞书日历

PopClip + Fantastical2 + 飞书日历 三件套到底是什么?解决了什么样的问题?再来回顾一下之前列举的 App,以及自己实现的飞书日历流程的几个致命问题:

  1. 唤醒不够方便,不够快;
  2. 新增 TODO 麻烦,要填写的东西太多。很多时候,就只是想新增到当前日期;
  3. 展示方式不友好,需要手动展开;

其中,最为重要的又是唤醒方式。对此我找到了一个非常好的 App —— Fantastical2。这是用快捷键唤醒 mini 窗口的样子(窗口可以拉很高,一般我拉到和桌面一样高):

除此之外,它的主窗口和 Lark 日历非常像,建议大家去官网上看。而 PopClip 是用来增强文字选中的,方便将选中文字直接同步到 TODO 中,感兴趣可以参考我上一篇博客「PopClip 插件」。

接下来,就是三件套的数据流转问题了:

Fantastical2 有两种方式承载 TODO,一种是 Event,一种是 Reminder。我更倾向于 Event 而不是 Reminder:

  1. Event 是事件能跨天,而 Reminder 更像是提醒,聚焦于时间点;
  2. Event 能直接同步到日历,Reminder 同步的貌似是 Apple 家的 Reminder.app(这个不太确定,毕竟 Google 也有 Task,没具体研究);
  3. Reminder 的新增流程更麻烦,需要填的内容比较多;
  4. Reminder 有两个天生的字段:优先级与是否完成。Event 没有也不要紧,可以用多个日历区分开(比如上图看到的多个颜色的 Event);
  5. Reminder 要查看 TODO 和 DONE 的事情,需要勾选「查看已完成」,个人希望是否完成都能在一屏展示。

通过以上对比,发现 Reminder 在 TODO 的使用中,优势不大,所以最后选择使用 Event 模式。

数据同步

其实不同步数据也 OK,但我比较喜欢在飞书上也能看到 TODO,所以选择使用 Google 日历进行同步。也就是说,在 Fantastical2 上绑定 Google 账号,然后 Lark 也绑定 Google 账号。这样新增的每个 Event,都能在两个 App 上看到进展(当然,还可以在 Google Calendar 上看到)。

功能增强

还有一个重要的功能 Fantastical2 无法支持,就是 Todoist 的一键延期。事情 Delay 是非常常见的,毕竟忙起来以后,不能给每个 TODO 分配合理的时间,高优事情的插入,总会打乱这个顺序。这就会导致很多 TODO 还停留在以前的时间,不方便查看。

对于这个问题,可以通过 Google 的 OpenAPI,每天将 Delay 的事情,自动同步到今天。这也是使用 Google 账号进行管理的好处,毕竟 Google 的 API 还是很完善的。

最后

这个流程体验了一个多月,目前没什么致命的毛病。但要说完美,还是有一定差距的。比如最重要的:Fantastical2 记录的事情太过琐碎与零散,无法看到整体进展。最近在看 《OKR 工作法》,头条也是双月 OKR 的管理方式,回头看看我的 TODO List,并不知道这个双月目标是什么?做的事情是怎么一步步完成目标的?当前距离目标还有多远?

也就是说,这种 TODO List 的形式,更适合记录,而不适合规划。如何将两者于一身,还在探索过程中,敬请期待。