专注与心流:程序员生产力的权衡 [译]

作者:

Aaron Buxbaum

程序员对提升生产力的方法论兴趣浓厚 —— 如何更准确地估计任务、用更少的时间完成更多工作,以及提高工作质量。我也深入研究了这一领域。在阅读了大量书籍后,我发现了一些可能对其他软件开发者有用的有趣见解。

“完全投入于一项活动,忘我地参与其中。时间如梭,每个动作、移动和思考都是前一个的自然延续,就像演奏爵士乐一样。你全身心投入,发挥自己的技能到极致。”Mihaly Csikszentmihalyi 对于心流状态的描述

乍看之下,达成心流状态似乎是件好事。它令人愉悦,能让人在不感到疲惫的情况下完成大量工作。但从定义上来说,心流状态是一种非协作状态;当你需要关注 Slack 频道,或者参与结对编程时,你就不可能处于这种心态。此外,工程师有时会在“心流”状态中浪费一整天甚至更长时间。如果概念一开始就考虑不周或设计欠妥,心流状态反而会降低生产力。

许多生产力专家推崇的一种常用技巧是番茄工作法 (Pomodoro) —— 设定一个 25 分钟的计时器,专注于一个目标;计时器响起时休息 5 分钟,然后重复。每四个周期后,休息更长时间。番茄工作法本质上是打断心流状态,其理念是集中的工作效果优于长时间的心流状态。完全接受番茄工作法的人甚至认为,不管创意是否流畅,都应该在计时器响起时立刻停下来,最多只允许一两分钟整理思路和做笔记。

我发现番茄工作法的一个缺点是,每次短暂休息后,我的动力似乎都需要重新启动。在开始下一个番茄之前,我很容易分心,比如读电子邮件或处理其他暂时搁置的问题。但从积极方面看,一旦开始计时,那 25 分钟通常都非常高效。与努力达到心流状态相比,我发现一天中多次使用番茄工作法能让我完成更多工作。

我倾向于使用番茄工作法还有另一个原因 —— 许多知识工作者的时间大部分被浅层工作占据,分析显示这对公司或个人知识增长的贡献非常有限。Cal Newport 在《深度工作》中探讨了浅层工作和深层工作的概念。Newport 解释说,大脑倾向于寻求快速、确定的多巴胺刺激,感觉有成效的行为正是实现这一目标的方式。最典型的例子是花在阅读和回复电子邮件、Slack 消息和其他异步通讯方式上的时间。检查电子邮件实际上能给大脑带来一点多巴胺,这是一种奖励自己做可能带来社交价值行为的方式。电子邮件收件箱里可能藏着什么,这种不确定性正是上瘾的原因,也是为什么人们频繁阅读和发送电子邮件的原因。这与浏览社交媒体时的多巴胺效果类似!番茄工作法在此发挥作用,因为它要求在开始时设定一个明确目标,同时提醒工作者要意识到一些行为实际上并不生产力,并应在专注的工作期间避免这些行为。

经过几年的实践,我有一些建议程序员的生产力技巧:

  1. 关闭所有通知!这非常重要。不要有嗡嗡声、短信提示声或叮当声。在你的手机和电脑上都要这么做。你可以保留一些你真正关心的通知,但要非常小心。比如,你可能需要知道 PagerDuty 的警报,但不需要看到其他文本消息。
  2. 关闭应用图标上的数字提醒。你可以在 MacOS 和 iOS 的通知设置中做到这一点 —— 我关闭了所有应用(除了待办事项列表)上的小红点和数字计数器。特别是,我不希望在我的电子邮件客户端、短信应用、Slack 应用等上看到任何红点或数字。我可以稍后检查它们,或者在专注工作结束后再打开提醒。
  3. 谨慎处理剩余的注意力分散因素。例如,即使通知关闭了,Slack 在被提及时仍会发出声音。有时,这确实很重要,但通常并非如此。根据情况作出最好的判断,并倾向于关闭这些通知。
  4. 定时处理 Slack 和电子邮件。关闭这些应用的窗口,只在特定时间打开。有人建议每天只检查一两次,但在我的工作环境中,更常见的是每 30 到 60 分钟检查一次。如果你发现自己经常打开电子邮件窗口或频繁点击电子邮件应用,那么需要重新评估你与电子邮件的关系,特别是电子邮件作为释放多巴胺的概念。
  5. 对异步通信保持警惕。尽量避免发送简短的电子邮件将任务推卸给他人。例如,电子邮件调度往往需要几轮往返,这不仅浪费所有收件人的时间和注意力,而且效率低下。同样,发送一条简单的 Slack 信息,希望别人回复,实际上是将责任推给他人,同时也分散了他们的注意力。这种矛盾令人头疼 —— 如果你想得到某个问题的答案,但又不想直接打扰别人,你该怎么做?有一些很好的解决方案,例如 Twist。如果你能通过专门的工作平台进行沟通,比如 Asana 或看板,那么这将是一个更好的沟通场所,因为它不会分散别人的注意力。如果你所在的组织有良好的专注习惯,使用 Slack 也相对安全。
  6. 与他人沟通你的新沟通方式。许多应用程序,包括 Slack,都有“忙碌”指示器。使用这些指示器告诉你的团队成员你正忙着,可能看不到信息。有些人使用自动回复工具,其他人使用像红灯这样的物理信号。无论哪种方式,都要告诉你的团队当他们看到这些指示器时应该怎么理解,以便大家都能保持一致。
  7. 采用番茄工作法。我个人喜欢使用一个名为“Session”的应用,但你可以使用任何不会在专注时间结束前分散你注意力的工具。开始番茄时,写下或规划你将要处理的任务以及 25 分钟结束时希望达成的目标。如果你在处理任务时走神,就立刻回到手头的任务上,直到计时器响起;只有到了那时,你才可以去做其他事情。例如,如果你的任务是完成某个工作票证,那么检查电子邮件就不在任务范围内!因此,你不应该检查电子邮件。如果你觉得必须这么做,可以提前结束番茄,但任务中途不应有休息。试验硬性休息和软性休息(即在保持专注的情况下可以继续任务),看看哪种方式最适合你和你的工作环境。
  8. 进行结对编程。结对编程很有效,因为它能够吸引两个人的注意力。在结对期间检查电子邮件是不礼貌的,社交压力有助于双方保持专注。当注意力开始下降时,可以更换主导者。我发现,在结对会话中采用番茄工作法效果非常好 —— 在会话开始时,双方决定将完成什么任务。在每个 25 分钟的周期结束时,每个人各自休息 5 分钟,然后再次聚集并更换主导者。最终结果是,你有时间整合信息,并且两位开发者能够更有效地分享信息。