@用 Omnifocus 搭建任务管理系统

笔者是一个自控力极差的拖延症患者,尝试了各种方式和工具都没能很好的解决这个问题,直到看到此文

根据该文的思路,可以解决笔者目前在执行计划时常碰到的几个问题:

  • OmniFocus + 番茄工作法,辅助自己更好的量化任务(目标)、完成任务
  • 使每一个被丢进todolist 的任务都会被很好的执行。而不像之前:有些任务丢进去后由于没有回顾就忘记了,事后再看见该任务的时候,已经不想做了;有些任务制定的不够清晰,到执行的时候感觉有难度,然后拖着拖着就不做了。

什么是一个好的任务管理系统

首先,任务管理系统的目的是为了更好得完成任务,一切脱离这个基本条件的系统都是不可用的。如果你觉得一个最简单的 Todo List 就能很好地完成任务,那么这就是最适合你的任务管理系统。

在我看来,一个优秀的任务管理系统至少需要满足以下条件:

  • 收集能力
  • 在特定的情况下知道可以做哪些事情

为什么需要至少满足这两个条件呢,或者说这两个条件对于任务管理系统来说,重要在哪里?

收集能力指的是这个任务系统要能够容纳(几乎)所有的内容,一个任务、一条想法、一封未读的邮件、一个笔记、一个链接、没有报销的发票等等。

如果有读过《Getting Things Done》或者了解过 GTD 理论的同学可能就知道,收集 是整个流程中最开始的一环。如果要做的任务散乱在各处,难免会有遗忘的时候,任务没有被收集到,也就没有后面的处理流程了。

具体实践起来并不是真的需要把所有的东西都塞进任务系统里面,例如我使用 Evernote 作为剪裁和笔记的工具,很显然把每条笔记都复制一份到 OmniFocus 中很不现实,但是我会在 OmniFocus 中添加一个「定期清理 Evernote Inbox」的任务,这样就相当于把 Evernote 作为 OmniFocus 的子 Inbox,来统一进行管理。对于一些支持 URL Schema 的应用,完全可以在 OmniFocus 中建立一个链接直接指定,这样在 OmniFocus 中也可以直接打开其他应用中的内容了。

收集能力决定了要处理的内容,第二个条件则决定了一个任务系统是否是稳定可用的。具体的情境来说,你要知道早上的时候该干哪些事,工作的时候该干哪些事,无聊的时候又该干哪些事等。这样,在某一情境下,可以直接进入状态,而不是要花时间思考现在到底要做什么。

一个任务系统如果做好了这两件事情,那么就不会让你身处「感觉有很多事情要做,却不知道要做什么」的尴尬境地了。

任务管理系统的三要素

到现在为止,我还没有讲到具体工具的使用。因为工具是次要的,了解了本质的思想,使用什么工具都没有问题。纵观各种任务管理的工具:OmniFocus、Todoist、Things、org-mode,它们支持的功能也各不相同,Project、无限层级、Defer、Due、Repeat、Context、Label、Tag、Filter、Perspective 等等,有没有被这些名词给吓到?难道我们每切换一种系统都需要再重新学习一遍?

抛开这些名词,我们来分析一下一个任务系统到底是由什么组成的。在我看来,一个任务系统最本质的东西只有三个:任务、附加元素和过滤器。

任务:一个 最小可执行 的单元即为一个任务。这个是最好理解的,所以不做过多解释。

附加元素:作用在任务上的不同维度的限制。这句话读起来有点拗口,举个简单例子,「去 XXX 取快递(截止今天 10:00)」,其中,「截止今天 10:00」就是在时间维度上对这个任务的一个限制。同样的,「项目」、「标签」等等这些都是作用在某个任务上的附加元素。

过滤器:组合不同附加元素的过滤规则。只有附加元素并没有什么实际的作用,但是有了过滤器之后,就可以编写不同的过滤规则来过滤指定规则的任务。例如,我想知道「最近 10 天内重要的事情」,那么过滤规则可能就是「Due date < 10 and flagged」。

了解了上面三个基本的概念,那么再重新审视各种任务管理工具,就可以从一个比较宏观的角度来看待了,这也可以避免切换工具造成的重新学习成本。

这三个概念和 Hum 在《用更现代的方式做任务管理》提出的「LTF(列表、标签、过滤)」理论十分类似,并且 Hum 用了更大的篇幅来叙事这个概念,有兴趣的可以订阅这个栏目阅读。

OmniFocus 3 实践

把上面任务系统的基本三要素运用到 OmniFocus 上,任务就是一个个的单独 Todo item,附加元素就是 Todo item 所属的项目、Due Date、Defer Date、Tags、Flag、Repeat rule 等,过滤器就是透视(Perspective)。

接下来的内容我会通过 OmniFocus 3 为载体,来具体介绍如何实现一个可靠的任务管理系统,并介绍一些实际实践过的 Workflow 流程。

项目的设定

如果想保证项目比较有序,分成三个层级即可:大的领域(Folder)- 子领域(Folder)- 项目(Project)

例如,我的项目分级如下:


OmniFocus 项目分类

主要分成了5个比较大的项目:系统、学习、工作、生活、兴趣,基本上可以涵盖涉及到所有的领域了。在每个大的项目中再细分出小的项目,这个可以根据自己的需要进行积分。OmniFocus 支持无限极的项目划分,但是个人建议不要超过3层,最后一层直接是任务就可以了,这样可以保证项目层级不会过于复杂。

可以看到很多项目下面都有用[]括起来的项目,这个是 Single List 项目,这样一些不属于某个项目里面的内容就可以放到这个列表里了。

一些项目设定的 Tips:

  • 如果不是 Single List,项目需要一个既定的完成条件,在某一时刻或某一条件下,这个项目是要能够被标记为 Completed 或者 Dropped,这样可以避免一个项目长时间地呆在任务系统中;
  • 项目中的任务最好是最小可执行的,如果是比较大的任务,可以利用 OmniFocus 的无限任务层级继续细分。

标签的设定

例如,我的标签如下:


OmniFocus 标签策略

一个任务在时间维度上应该有有截止日期(Due)和安排日期(Schedule)两个元素,Due 表示在某一天之前必须被完成,Schedule 表示被安排到某一天做,所以可以设定如下标签来完成 Schedule 的功能:

  • Schedule:
    • Today:被安排到今天
    • Recently:最近需要做的事
    • ThisWeek:被安排到这周
    • ThisMonth:被安排到这个月
    • ThisYear:被安排着这年

这样在做计划的时候,打上对应的标签,就可以使用过滤器过滤出对应的任务了,比如我想看「这个月和工作相关的任务」,那么就可以指定 Project 为「Work」项目,标签为「ThisMonth」,这样对应的任务就可以使用这个过滤器过滤出来,具体的过滤器设定下面会讲到。若一项任务没有被打上 Schedule 标签,则该任务不该被认为为一项可执行的任务,因为一项未被安排的任务在未来很有可能会被你忽略,所以,对于要添加进 OmniFocus 的任务,一定要打上 Schedule 标签,否则就不要添加进去。

另外一个可以借鉴的设定就是精力值标签:

  • Energy
    • LowEnergy
    • MediumEnergy
    • HighFocus

例如,我们工作了一整天之后,还剩一段时间才下班,精力已经下降到一个很低的值,这个时候已经不适合完成一些需要非常专注的工作了,但是一些工作上的杂事,例如打印东西,提交报表等简单的工作可以利用这个时间来完成,这个时候我们就可以设定一个过滤器,过滤出 Project 为「Work」,标签为「LowEnergy」的任务。

我们可以看到,标签系统可以极大地扩展附加元素的内容,给过滤器添加更多的过滤维度。标签系统的设定应该根据自己的需求来,如果设定的标签却没有在过滤器中用到的话,那么也仅仅是个任务添加了一个没有用上的附加元素而已,意义不大。

过滤器设定

例如,我的过滤器如下:


OmniFocus 过滤器策略

过滤器的目的就是组合各种条件,过滤出所需要的任务来,之前所有的任务上的附加元素都是为了过滤器而设定的。

同标签系统一样,过滤器的设定依然需要结合自己的情况来。我主要设定了以下几个过滤器,这些过滤器都是在实践中经常使用到的。

Routine 过滤器

这个过滤器主要被用于制定计划。例如:由于我每天晚上睡得比较晚,所以我创建了一个 Evening Review,来规划明天需要做的任务。

过滤器的详细设定如下:


Routine 过滤器设置

其中,「Routines」Folder 中就是设定的具体内容:
[图片上传失败...(image-360d2a-1554275186267)]

这一个过滤器的设定是和我的 Workflow 紧密相连的,如果你没有做 Morning Review 之类的习惯,可以不需要设定这个过滤器。

Today 过滤器

这个过滤器被使用的次数最多,过滤器的详细设定如下:


Today 过滤器设置

这个过滤器将会把符合以下条件的任务过滤出来:

  • 即将截止或者标注为 Today 标签的任务
  • 状态为 Available 的任务
  • 非 Routine Folder 下的任务

显示方式以 Project 为维度显示:


image

对比 Forecast Perspective,它只是把对应的任务都展示了出来,在任务的层级上没有自定义的那么清晰。


image

Work 过滤器

这个过滤器和 Today 类似,只不过指定了所属项目为「Work」文件夹下面的任务,这个主要是在工作中只想专注于和工作相关的任务。

过滤器的详细设定如下:


image

除了指定了特殊的项目目录,其他的设置和 Today 的设定没有区别。

To-Sth 过滤器

日常的使用中,我会把没有看的文章、需要写的东西、要读的书、要搜索的内容都存在 OmniFocus 中,所以需要一个过滤器能够快速过滤出这些内容。

首先使用这个过滤器需要先设置一套标签系统:


image

过滤器的详细设定如下:


image

实际的使用场景:比如我想阅读一些和 Python(一门编程语言)相关的内容,那么我只需要打开这个 Perspective,挑选标签为 To-Read,然后从搜索框中搜索 Python 关键字就可以了。

Future 过滤器

这个过滤器主要被用于制定计划,在 Weekly Review 和 Daily Review 中会被频繁地使用到。需要基于以下的标签设定:


image

过滤器的详细设定如下:


image

EasyDo 过滤器

这个过滤器会把一些简单的或者不需要太多精力的任务过滤出来。

过滤器的详细设定如下:


image

完成时间小于 15 分钟或者被标注为LowEnergy标签的任务会被过滤出来。

工作流

在整个 Workflow 中,主要分为三个部分:计划、执行、总结。

当按照上述思路完成以 OmniFocus 对任务管理系统的搭建后:

  • 每天我必须要完成的具体任务全部都在 Today 过滤器中
  • 只需要根据Routine的提示,便可得到日计划、周计划、月计划
  • 当无聊或想利用碎片时间完成一些简单的事情时,只需要去 EasyDo过滤器中去领取就可以了
  • 阅读清单、购物清单等等只需要去To-Sth过滤器中找就可以了
  • 并且可以从Future过滤器中知道日周月计划

计划

很多人都不重视计划这个环节,想到什么做什么,这样不仅会做事没有条理,也会分不清任务的优先级。

一般来说,如果不知道怎么做计划的话,有一个长期计划和一个短期计划就可以了。长期计划主要是一个大体的方向,可以是年度计划或者月度计划;短期计划则需要明确具体要做哪些事情,可以是周计划或者日计划。

实践过程中使用最多的就是周计划和日计划,以及月计划和年计划。在 OmniFocus 中,我设定了几个项目,分别是 Morning ReviewEvening ReviewWeekly ReviewMonthly ReviewAnnual Review

  • Evening Review

由于我晚上睡得比较晚,所以我会在每天晚上通过 Future过滤器,从ThisWeekRecently标签中的任务挑出一些作为明天的任务,并将它们打上Today标签。

  • Morning Review

通过Today过滤器,知悉今天要完成的任务

  • Weekly Review

通过 Future过滤器,从ThisMonth标签中挑选出本周的任务,并将它们打上ThisWeek标签

  • Monthly Review

通过 Future过滤器,从ThisYear标签中挑选出本月的任务,并将它们打上ThisMonth标签

执行

执行应该是整个 Workflow 中最重要的一个环节,如果只是计划了,但是最后任务却没有被完成,那做计划也只是白费力气。

执行的关键就是要在对的时间内做对的事,这也是为什么要设置那么多过滤器的原因,在工作的时候就只展示工作相关要做的事,在没有精力的时候就只展示简单易做的事情。

如果你做事情的时候很容易分心,可以参考一下番茄工作法,一般我会设置为专注 50 分钟,然后休息 10 分钟。默认的 25 分钟时间过短,可能刚进入状态就要被打断。

另外可以尝试使用「结构化拖延法」(Structured Procrastination)。结构化拖延法就是忽略优先级高的事,而是从小的事,优先级比较低的事情开始做,这样慢慢地进入工作的状态,然后再去完成优先级高的事情。

总结

OmniFocus 3 提供了自带的 Review 透视,建立每个项目的时候可以选择多少天 Review 一次。实践上,一般工作上需要每天跟进的项目,会把 Review 的时间设置为每天一次,一般的项目设置为一周 Review 一次即可。为了防止忘记 Review,可以把这个 Review 的任务添加到 Morning Review 或者 Weekly Review 中。

常用的脚本

脚本的安装方法:
step1: 将后缀为scpt的脚本文件拷贝到 OmniFocus 的脚本目录 (可以使用 OmniFocus 的 Help->Open Scripts Folder 直接打开);
step2: OmniFocus 工具栏上右键, 在弹出的菜单上选择Customize Toolbar…, 找到新增脚本对应的 icon 拖到工具栏上即可。

任务执行时间统计脚本

如果能够直接在OmniFocus中记录任务的执行时间, 并统计出任务和项目的执行时间就更好了, 所以有了本文所描述的工作。
共三个AppleScript脚本文件: start.scpt, stop.scptreport.scpt.(下载地址

  • start.scpt

开始一个任务, 此脚本将在该任务的标题前添加#Ongoing:, 表示该任务正在进行, 并在该任务的备注 (note) 属性尾部增加一个记录时间的字符串(或修改这个记录时间的字符串, 如果该任务之前已经开始执行过).

如果开始任务时该任务的 Defer Until 没有填写, 那么将其设置为当前时间, 作为报告中的任务开始时间.

  • stop.scpt

停止一个任务, 该脚本可以停止已经开始的任务 (标题前有”#Ongoing:” 文本的任务, 停止后删除任务标题中的”#Ongoing”文本), 并根据该任务备注 (note) 属性中的时间记录字符串计算该任务已执行时间.

注意: 任务的执行可以分为多次启动/停止, 一个任务的总执行时间是多次执行时间之和.

  • report.scpt

该脚本统计已完成的任务及其执行时间, 并累加各个项目中所有任务的执行时间作为项目执行时间.
对原脚本 (OmniFocus> Prepare Task Completion Report Version 2.0.0) 所做的修改如下:

  • 增加一个属性用于设置保存报告的 Evernote 笔记本名称;
  • 统计范围中增加 Year, 并设置 Today 为默认统计范围;
  • 根据 start 和 stop 脚本记录在备注 (note) 中的时间字符串, 在报告中为任务增加执行时间数据;
  • 统计项目执行时间, 其值为项目下的所有任务执行时间之和;
  • 将报告的标题改为统计的日期范围;
  • 如果某项没有设定值, 报告中将不显示该项数据;

如何使用

启动任务

  • 选中一个任务后, 点击工具栏的start 脚本图标.
  • 任务启动后, 会弹出任务开始执行通知.
  • 点击start脚本后, 任务标题前将添加#Ongoing:字符串, 并且任务备注 (note) 尾部将添加时间字符串.

停止任务

  • 在任务执行一段时间需要停止时, 例如被打断或暂时休息或完成了该任务, 点击工具栏的”stop”脚本图标. 停止后的任务会记录本次任务执行的时间, 可以在备注 (note) 尾部时间字符串中看到变化.
  • 任务停止后, 会弹出任务停止执行通知.

生成报告

  • 任何时候点击report脚本图标, 将会首先弹出报告时间范围选择窗口, 如下图所示.
  • 选择一个时间范围后, 点击”OK” 按钮, 将会生成统计报告并在 Evernote 的Omnifocus_reports 笔记本中创建一个统计报告, 如下图. 笔记本名称Omnifocus_reports 可以在脚本中修改.
  • 报告中, 每个任务如果使用了startstop 脚本记录任务执行时间, 将会显示执行时间, 并会统计一个项目的总执行时间, 如上图中下方的蓝色文本.

注意事项

  • 使用startstop脚本记录任务执行时间后, 将会在该任务的备注 (note) 的尾部添加时间字符串, 不要删除它或手动修改它, 并且一定不要将备注文本放在时间字符串之后, 否则会影响执行时间的统计. 统计报告中的备注文本会自动忽略掉时间字符串;
  • 任务开始后会在任务标题头部增加一个标记字符串#Ongoing:, 任务停止后自动删除, 不要手动修改它.
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容