程序员给非极客讲打岔的真正代价

本文是翻译,版权归原作者所有


打岔是程序员效率低下的最大起因之一。好的,公平起见,它们很可能是所有人效率低下的一个较大因素,只是相对而言,它们对程序员的危害更严重。为了理解我的意思,让我们看看某位销售人员,他花在电话或去参加会议的时间有许多天了,有个会议,在此之前需要看下笔记,对于销售人员的打岔 意味着 花费时间处理打岔,摇摇头,以及“我刚才要做什么……哦,想起来了。”对于经理,每天常常是一系列的无止境的打岔。我具备一定的管理能力,还是发现当我坐下来吃午餐的时候,仍然没有开始做当天计划的第一件事情。Paul Graham有一个非常棒的文章,是关于经理和他称之为“制造者”(makers)的人,以及明确包含程序员在内的一组人 的每天不同情况。

对于一个程序员,打岔是不同的。你坐在那里,12个调用进入调用堆栈。一个显示器上是一组精心挑选的数据,用来输入到一个复杂表单,负责生成情景。另一个显示器上是你喜欢的有dark主题的IDE,调试器里的当前代码行标着令人愤怒的黄颜色。你为了重现这个情景花费了50分钟——你最终敲入合适的输入值,理解事件被触发的顺序,foreach和while循环每次花几分钟就可以得到正确的值,在异常被触发、便于你处理剩余的代码库部分前,设置好断点。这时候,就是这么凑巧,你明白了订单集合里为什么有22个,你知道_underbilledCustomerCount的确切值是什么,因此你已经匆忙记下来这个字符“8xZ204330Kd”,因为它是随机生成的、由数字和GUID组成的验证码,你不需要理解也不想理解,你仅仅需要知道它是什么就可以了。这一时刻,你开始变得兴奋起来,因为你即将揭开一个你非常确认的第三方类库调用引起的空引用异常的秘密——

“嗨!!!怎么样了?听着,你知道客户订单崩溃是,恩,非常糟糕的,对吧?我能知道确切的修复时间吗?”

[caption id=”attachment_219” align=”alignnone” width=”550”]打岔 打岔[/caption]

操!!!!

项目经理吓到你了,当你准备操作下一个命令时,你点击了“step over”而不是“step into”!他一直在唠叨他自己、客户或一些你根本没有去听的东西,因为你在努力控制情绪,你丢失了所有调试的上下文。而重新去返回刚才的那个步骤或许是30分钟而不是50分钟。但是没有用了。PM(项目经理)的上司看到PM在和你说话,就走了过来,开始了一场热烈的、关于你桌子旁边的Initrode account状况的讨论,声音很大,充满了可笑的BS宾果游戏术语和一些“底线区【注1】赢得了比赛”的体育隐喻。终于安静下来了,你已经臣服于六西格玛的三级黑带【注2】,你知道你需要定一份披萨,等所有人7点钟下班了你再重新开始,因为那时候你能平静地工作。你现在能做的就是可怜地摇头叹气,“8xZ204330Kd到底是什么,我为什么要把它写下来?”

但是有一个侮辱到受伤的时刻。当你试图给PM解释 配合对你的效率有多大的破坏时,他用鼻子对着你哼哼,并告诉你不要危言耸听。他来回踱步,想知道为什么程序员竟如此自命不凡。不管你试着给非技术同事解释多少次,他们仍然不知道你在说什么。当你的工作一部分是整天跑前跑后来,了解状态更新和相同的需求,就不太容易理解 程序员的工作模式有多么地不同。我一直处于双方之间,现在我每天花大量时间来做计划和安排,我不得不鼓起勇气去团队待的地方,定期打断他们来获取一些情况,便于我能够用在邮件或增加到已解决问题列表当中。PM、经理等,都有真正的问题,他们大多数想给合作伙伴、客户或内部员工提供及时的支持,按照程序员的特有性格,这些问题都会引起打岔。

好了,不要急,因为我有一个办法,你可以真正向他们解释清楚打岔是如何危害你的效率的,和他们相比。换句话说,对你而言,如何让人明白打岔不是一个可以很快继续刚才工作的暂停,而是一套完整的达到刚才那一步的努力。下面就是办法。

找到PM、经理、销售、随便什么人坐在他的桌子旁边,告诉他规则。打开记事本,按顺序敲入3或4位数字,比如:

123 234 345 543 432 321 999 888 777

现在,告诉他记住这些数字。他可以看屏幕、对自己说话、低声念,但是他不能写下任何东西,也不能打上任何东西。他或许会笑,告诉他你赌一顿午饭,赌他不能在5分钟内记下这些数字,然后看一眼并记下答案。或许他就止住了笑容开始记了。

坐下,把你的手放在脑袋后面,给他大概半分钟。听他在低声记。然后,抓起你的手机,拨打他的分机号。如果他不接,就问问他是否计划接电话,因为这很重要。他叽叽咕咕一会儿,然后不得不重新开始。

再给他约30秒,然后说,“恩,比你想象的难吧,啊?你记到哪个数字了?你知道我总是听到哪个数字?333.一些数字的东西,或许它是221,或许全部加起来有9365.是吧!【注3】哦,废话,对不起,你正集中精力。我还是保持安静吧。”

给他一分钟。抓起你的电话,开始大声地说话,电话那头没有人,只是模拟通电话。开始背诵虚构的电话号码。要表现得害羞一些,并道歉。

再给他一分钟。突然说你今天工作很消沉,问他是否仍然想让你增加四张或五张到其他的六张或七张即将到来的绩效展示幻灯片的三项工作,哦,不好,又是数字,你错了。

仍然给他一分钟。然后告诉他只剩下20秒了,或许是30秒?25也是可能的。无论怎样,他会用完时间的。哦好了,你猜他失败了。感谢他的午餐,但是不让他买单,如果他许诺在你写代码时,就像整天用脑追踪数字一样,不要时不时地做一些刚才你对他做的事情。

原文地址:http://www.daedtech.com/programmers-teach-non-geeks-the-true-cost-of-interruptions 注1:底线区(end zone):http://zh.wikipedia.org/zh-cn/美式足球 注2:六西格玛:http://zh.wikipedia.org/wiki/六標準差 注3:amirite:amirite 是 Am I right ?连读的缩写,表示一种征询的语气(多半是希望得到肯定的回答),例句:嘿,伙计们!那玩意儿真酷,不是吗?!http://article.yeeyan.org/view/remex/103685

译文:程序员给非极客讲打岔的真正代价 》| 腊八粥