《高效能程序员的修炼》一关于多任务的神话

简介:

本节书摘来异步社区《高效能程序员的修炼》一书中的第2章,作者: 【美】Jeff Atwood 译者: 陆其明 , 张健 责编: 陈冀康, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

关于多任务的神话

高效能程序员的修炼
在《质量·软件·管理:系统思维(第1卷)》一书中,Gerald Weinberg1提出了一个经验法则,用以计算由于切换项目而引起的浪费。


3

根据Weinberg的计算,哪怕在你的工作负荷中只是增加一个项目,也会严重地影响你的效率。你会损失20%的时间。当你增加第三个项目的时候,你会有将近一半的时间浪费在任务切换上面。

即便你同一时间只做一个项目,这种问题也可能会发生。轻易被电子邮件、电话以及即时消息打断你正在进行的工作,其影响可能是深远的,就像BBC2的这个研究中所记载的那样:

英国精神病学研究院所做的这个研究表明,过度地使用科技会降低工作人员的智力。研究员得出结论:那些常被电子邮件和电话干扰的人,他们的智商会有10个点的下降—跟研究发现的吸食大麻所引起的损害相比,前者是后者的两倍还多。

Kathy Sierra写了一篇非常棒的帖子,来比较多任务并行与串行工作之间的差异。一年以后,她又写了一篇见解独到的代表性文章,提出多任务会使我们变笨:

或许这其中最大的问题,就是绝大多数一心多用的人都完全意识不到他们做得有多糟糕。

我们相信,我们能在写电子邮件的同时跟人通电话,而且不会影响沟通的质量。

我们相信,我们能一边看电影一边做家庭作业。

我们相信,我们能在和我们的孩子/配偶/情人/同事谈话的同时上网冲浪。

但是,我们不能!我们必然会在时间、质量以及深度思考能力各方面都受到损害。

关于程序员在切换任务时的损耗,Joel Spolsky拿它跟电脑做了类比:

这里的奥秘是:在你管理程序员的时候,你会发现切换任务会花费很长很长的时间。那是因为编程这类任务需要你在大脑里同时记住很多东西。你同时记住的东西越多,你编程的效率就越高。一个程序员在全力编程的时候,脑袋里面同时记着数不胜数的东西(程序里的一切),包括变量名称、数据结构、重要的编程接口、他们自己写的常用工具函数的名字,甚至是他们存放源代码的子目录名称。如果你送那个程序员去克里特岛3休假三周,他会把这些东西忘得一干二净。人类的大脑似乎把这些东西移出了短期的随机存储器(RAM),然后把它们备份到了磁带上;但再想通过磁带恢复那些记忆,也许要花上一辈子的时间。

通常情况下,我会拒绝“同时做多个项目”这样的要求。说“不”也许很难,因为软件开发者往往过于乐观,这是他们众所周知的职业性“毛病”。

我们常常高估自己的能力,而关于多任务的神话让我们的内心更加膨胀。但是,只要有可能,请远离干扰,并且避免同时做多个项目。如果实在避免不了,关于你在多任务并行的情况下实际能做多少事情,请你自己保持清醒的认识,也坦率地让其他的项目干系人知晓。你要知道,你很可能会力不从心!

Merlin Mann@hotdogsladies在Twitter上发的一条短讯:

“做得好!你把那些‘低优先级’的任务都标记出来了。上帝保佑,你最好把那些完全不值得做的屁事都忘了。”

相关文章
|
15天前
|
传感器 算法 安全
嵌入式工程师需要掌握哪些技术?
嵌入式系统广泛应用于生活各领域,如手机、汽车和医疗设备。入行嵌入式开发需掌握C/C++编程、硬件基础、操作系统知识、通信协议、调试技巧及特定领域知识。具备这些基础,通过学习与实践,可在嵌入式行业取得成功。
26 8
|
1天前
|
人工智能
编程领域长期霸榜的GPT之设计奥秘
编程领域长期霸榜的GPT之设计奥秘
|
15天前
|
存储 搜索推荐 程序员
SnippetsLab:程序员的秘密武器
SnippetsLab:程序员的秘密武器
21 0
|
7月前
|
机器人 程序员
大模型的出现,程序员的出路在何方?
随着人工智能技术的不断发展,大模型的出现已经成为了一个热门话题。这些大型模型需要大量的数据和算力来训练,但是它们真的会取代程序员吗?我认为答案是否定的。
332 2
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
是成就还是削弱?AI代码生成工具与程序员的「相爱相杀」
是成就还是削弱?AI代码生成工具与程序员的「相爱相杀」
120 0
|
人工智能 架构师 程序员
十年老友记 | @边城:恰当的编程是会产生幸福感的
十年老友记 | @边城:恰当的编程是会产生幸福感的
140 0
|
程序员 数据库
“科班出身”的程序员和“培训出身”的程序员的大型辩论(甩锅)现场
前几天阿粉说阿粉最近换了公司,而且入职之后干掉了公司里面的测试数据库的事情,而接下来的事就比较有意思了,来自“科班出身”的哥们和来自“培训出身”的我的大型辩论(SIBI)现场,也不能说是通俗的甩锅,但是确实有那么点意味。
“科班出身”的程序员和“培训出身”的程序员的大型辩论(甩锅)现场
|
算法 Linux 开发工具
嵌入式工程师有前途吗 嵌入式开发的职业发展方向是什么
嵌入式早在70年代出现到现在,有将近30年的发展历史,能够长久存在并且可持续发展。从工程师起步, 一般有几个发展方向,一个是成为技术方面的核心,领域内的专家;另一个是从项目中锻炼起来,成为项目主管或是管理型人才;再有就是利用自己的技术及行业经验去创业。
2979 0
|
程序员 开发工具 云计算