关于多任务的神话
高效能程序员的修炼
在《质量·软件·管理:系统思维(第1卷)》一书中,Gerald Weinberg1提出了一个经验法则,用以计算由于切换项目而引起的浪费。
根据Weinberg的计算,哪怕在你的工作负荷中只是增加一个项目,也会严重地影响你的效率。你会损失20%的时间。当你增加第三个项目的时候,你会有将近一半的时间浪费在任务切换上面。
即便你同一时间只做一个项目,这种问题也可能会发生。轻易被电子邮件、电话以及即时消息打断你正在进行的工作,其影响可能是深远的,就像BBC2的这个研究中所记载的那样:
英国精神病学研究院所做的这个研究表明,过度地使用科技会降低工作人员的智力。研究员得出结论:那些常被电子邮件和电话干扰的人,他们的智商会有10个点的下降—跟研究发现的吸食大麻所引起的损害相比,前者是后者的两倍还多。
Kathy Sierra写了一篇非常棒的帖子,来比较多任务并行与串行工作之间的差异。一年以后,她又写了一篇见解独到的代表性文章,提出多任务会使我们变笨:
或许这其中最大的问题,就是绝大多数一心多用的人都完全意识不到他们做得有多糟糕。
我们相信,我们能在写电子邮件的同时跟人通电话,而且不会影响沟通的质量。
我们相信,我们能一边看电影一边做家庭作业。
我们相信,我们能在和我们的孩子/配偶/情人/同事谈话的同时上网冲浪。
但是,我们不能!我们必然会在时间、质量以及深度思考能力各方面都受到损害。
关于程序员在切换任务时的损耗,Joel Spolsky拿它跟电脑做了类比:
这里的奥秘是:在你管理程序员的时候,你会发现切换任务会花费很长很长的时间。那是因为编程这类任务需要你在大脑里同时记住很多东西。你同时记住的东西越多,你编程的效率就越高。一个程序员在全力编程的时候,脑袋里面同时记着数不胜数的东西(程序里的一切),包括变量名称、数据结构、重要的编程接口、他们自己写的常用工具函数的名字,甚至是他们存放源代码的子目录名称。如果你送那个程序员去克里特岛3休假三周,他会把这些东西忘得一干二净。人类的大脑似乎把这些东西移出了短期的随机存储器(RAM),然后把它们备份到了磁带上;但再想通过磁带恢复那些记忆,也许要花上一辈子的时间。
通常情况下,我会拒绝“同时做多个项目”这样的要求。说“不”也许很难,因为软件开发者往往过于乐观,这是他们众所周知的职业性“毛病”。
我们常常高估自己的能力,而关于多任务的神话让我们的内心更加膨胀。但是,只要有可能,请远离干扰,并且避免同时做多个项目。如果实在避免不了,关于你在多任务并行的情况下实际能做多少事情,请你自己保持清醒的认识,也坦率地让其他的项目干系人知晓。你要知道,你很可能会力不从心!
Merlin Mann@hotdogsladies在Twitter上发的一条短讯:
“做得好!你把那些‘低优先级’的任务都标记出来了。上帝保佑,你最好把那些完全不值得做的屁事都忘了。”