## 《指导生活的算法》4:数学家告诉你最好的时间管理

时间管理的话题对我们专栏的读者来说可能早就太熟悉了，但今天我想说个关于时间管理的“大统一理论”。

时间就是这么点时间，事情就是这么多事情，人就是你这么一个人，无非是花时间做事，那我们为什么还需要时间管理呢？这大概不是一个物理学问题，而是心理学问题。有任务压着就会产生焦虑，完成任务就能获得成就感，也许我们是为了管理心理，才需要管理时间。

所以有人说应该小事优先 —— 根据GTD（ Getting Things Done ）理论（中文版书名特别精准，叫《搞定：无压工作的艺术》），你要追求的是一个心如止水的境界：准备几份任务清单，只要时间地点合适，凡是能干的事儿就马上干，完成任务打了勾就可以把这件事儿给忘了 —— 特别是，凡是能在两分钟之内完成的任务，你就不应该再把它列入任务清单中，直接“搞定”它就不会再“压”你了。

可是也有人说应该要事优先 —— 每天一到办公室，就要先做完今天最“ 重要 ”的三个任务，完成了重要任务你才能真正省心。

还有人说应该急事优先 —— 很多任务是有期限的，你应该事情分为四类：重要而紧急，重要不紧急，不重要但紧急，不重要也不紧急。我们应该优先完成重要而紧急的事情。

可是也有人说重要而不紧急的事儿 才是能左右你成长的大事儿。

所有这些说法，其实都是心法，而不是算法。是艺术，而不是技术。那么从数学家的角度，有没有一套算法，来给时间管理找个最优解呢？

今天我们继续讲《指导生活的算法》（Algorithms to Live By: The Computer Science of Human Decisions ）这本书，作者是Brian Christian 和Tom Griffiths。数学家和计算机科学家对时间管理的问题有非常清楚的思路，我们来欣赏一下这个思路。

数学家问的第一个问题，是你到底想要什么。

如果你的任务都是有截止日期的，数学家的建议非常简单，那就是按照截止日期的早晚安排任务，先做最早截止的任务。比如我写专栏文章，就应该按照设定的发表顺序写。我们就把这个算法称为 “最近截止日期” 算法。

而不简单的问题是，如果有任务不能按时完成，我应该怎么办。从数学上说，按照截止日期顺序这么一个一个完成的算法，可以确保让我“拖延的最久的那个任务”的“拖延时间”，最小化。这句话说得有点绕口，实际意思就是说可能每个任务都会拖延一点，但是所有任务都不会拖的太久。

但很多情况下这不是我们想要的。也许我们想要的是能按时完成的任务越多越好，不能按时完成的任务越少越好，那么就要换一个办法。

比如说你的冰箱里有很多水果，它们都有自己的过期时间，所以你的目标是尽可能在过期之前，把它们都消灭了。但如果你真的消灭不了，你的目标就应该调整为尽可能减少扔掉水果的个数。

数学家对此的建议是，首先你还是用最近截止日期算法，也就是按照过期时间吃，哪个最先过期就先吃那个。吃了几天一旦你发现这么吃下去肯定吃不完 —— 你就应该扔掉剩下的水果中最大的那个，也就吃它需要花费时间的最长的那个水果。

也就是说，不管西瓜还有几天过期，你都应该先把西瓜扔了。然后继续按照最近截止日期吃，一旦发现又快吃不完了，再扔掉剩下的水果里最大的那个。

对应到完成任务，这就意味着如果你想要的是尽可能按时完成更多的任务，那你就应该先放弃那个占用时间最长的任务。这个算法，叫做摩尔算法（Moore's algorithm）。

一般任务的截止日期都是比较宽裕的，我们可以从容安排，那么就要有别的考虑。

首先，如果这个任务牵涉到别人的等待时间，我们就应该用“小事优先” —— 也就是完成时间短的任务优先的原则。

假设有两个人在你办公室门口等着跟你谈话，一个人想要谈3分钟，另一个人要谈10分钟。如果你先和3分钟的这个人谈，这两人在你处总的停留时间是16分钟（3+3+10）。但如果你先和10分钟的人谈，两人的总停留时间就变成了23分钟（10+10+3），这就浪费了。小事优先，可以确保让等待的时间之和最小化。

但是就算没有别人等，我们也应该小事优先 —— 因为你在等！你的心里一直被任务压着，你在等着任务完成。每完成一个小任务都能减轻你的心理负担。

打过魔兽世界游戏的人都有同感。比如你路过一段敌占区，突然冲上来一堆小怪打你。就算你不马上杀他们，他们短时间内也不能把你怎么样，可是他们在你身边打转会让你觉得难受。既然早晚都得杀他们，还不如早杀！小事优先，就是追求这么一个“done”的感觉。

可是如果不同任务的重要程度不一样，那就不能简单地小事优先。重要任务给你的心理负担也更大！在小事和要事之间，怎么权衡呢？

数学家的答案也非常简单。你先估算一下每个任务的“重要程度”，然后你算一算每个任务的“密度”。

一个任务的密度 = 重要程度 / 完成时间

然后你就按照任务的密度从高到低的顺序去做事。这就能让你总的心理负担最小。

一个衡量任务重要程度的简单办法就是这个任务能给你带来多少收入。比如你有两个任务。第一个任务你可以用1个小时完成，它能给你带来200元的收入；第二个任务你需要三个小时完成，它能带来300元的收入。那么数学家说，你应该先做第一个任务，因为它的密度是200，而第二个任务的密度只有100。

方法非常简单，但是这个思想很重要 —— 关键在于“量化”。你不能光说“要事优先” —— 到底多重要的事，才算“要事”？现在有了这个量化的方法，我们就知道，如果任务A的完成时间比任务B高一倍，那么A的重要程度必须也比B高一倍，我们才可能会优先考虑做A！

我们把这个算法，叫做“ 加权最短处理时间 ”算法。

这种计量方法非常符合我们的直觉。用钱来打比方，这其实就是说，做工作肯定要优先考虑单位时间收入最高的工作。

从“最近截止日期”算法到“摩尔算法”，从“小事优先”到“加权最短处理时间”算法，我们看数学家的思路都是先从一个简单的情况出发，再针对复杂情况进行改进。

那么如果情况更复杂一点，怎么办呢？答案就非常出乎意料了。

如果你的任务列表中既有轻重，又有缓急的区别，也就是既要考虑不同任务的截止日期，又要考虑它们的重要程度，你应该怎么办呢？

答案是没办法。也许你对遇到的每一个具体的任务列表能想出一个最好的排序方法，但是数学家们没有一个通用的算法能对每一个情况给出最优解。

这还不算。如果列表中有些任务和任务之间存在先后顺序的关联，比如你必须完成A任务才能去做B任务，这种情况也没有固定的算法可以解决。

还有，如果有的任务必须要等到一个特定的时间才能开始做，比如你需要等别人做出明确的决定后，再执行的任务 —— 这种情况，也无解。

时间管理，其实是一个非常困难的数学问题，比我们想象的困难得多。

如此说来，市场上有那么多不同派别的时间管理书籍还真是合理的，因为的确没有一个放之四海而皆准的好办法。到底应该先做重要而紧急的事儿还是先做重要而不紧急的事儿？数学家没有找到固定套路。你要非说你的原则好，数学家也没意见。

那今天我们还能得到什么呢？别急，只要给一个特殊的条件，数学家就能送你一条特别简单，也特别有用的生活建议。

这个条件就是允许临时中断一个任务，去做新的任务。

比如你正在干一件什么事儿，干到某一时间会来个新的事情要求你做，那么你是应该继续完成手头的工作呢，还是应该立即转向去做这个新的工作？这个问题是有解的。

数学家说，你只要按照同样的标准去比较这个新任务和你手里的任务就行了。

如果你使用的是“最近截止日期”算法，那你就比较一下新任务和你手里任务的截止日期。如果你使用的是“加权最短处理时间”算法，那你就比较一下新任务和你手里任务的密度。手里任务的优先级高，你就继续做手里的任务。新任务的优先级高，你就转头去做新任务。

（可是如果不允许中断任务，这个问题就是无解的 —— 现在八点半，你手里有几个任务，而你知道9点钟会来一个新任务。那你是先挑一个手里的任务开始做，还是等着新任务？数学家对此没有固定的算法。）

总结说来，今天我们最大的收获，也是数学家在时间管理上目前为止最大的一个成果，就是这个可以打断任务的“加权最短处理时间”算法。这个算法已经可以帮我们应对很多很多局面了：

但是这个算法并不完美。它假设任务转换是没有成本的，可是众所周知，在不同任务之间来回切换要花掉很多多余的时间。如果你对自己的工作比较有掌控力，不用随时被人打扰，那么“加权最短处理时间”算法还是非常有用。

至此，《指导生活的算法》这本书中最有意思的几个算法我们就都讲完了。前三次讲的都是数学家非常漂亮地、干净利落地出来把生活问题解决了，今天这最后一次结果有点无奈。

不过这也可以说是一个好消息，这说明（已知的）算法不能指导全部的生活！你有时候没有万全之策，只能去尝试和冒险 —— 以我之见，这样的生活更有意思。

### 💡 精华要点
- 数学家和计算机科学家对时间管理的问题有非常清楚的思路：
- 1. 考虑你到底想要什么。在这个层面上，你要考虑紧急性，小事和要事的区别，学会“加权最短处理时间”算法。
- 2. 在特殊的情况下，你还可以应用一个条件，即为允许临时中断一个任务，去做新的任务。

![图片](https://piccdn3.umiwi.com/img/201612/05/201612051728489627649716.jpg)
