程序员编程效率的大敌:中断与上下文切换

程序员编程效率的大敌:中断与上下文切换

首先解释一下中断和上下文切换:

  • 中断: 编程时被打断, 比如被聊天软件/电子邮件/电话/当面打断等;
  • 上下文切换:即任务的切换,有自己主动切换,有伴随中断的新任务;

这两个是编程效率的大敌,程序员都很讨厌专注编程时被打断。至于到底影响多大,有文章专门对次进行了专门的深入分析:

中断的成本与应对

软件开发是一个高度抽象的过程,需要高度的专注力。研究表明,中断后至少需要10-15分钟才能回到原来的工作状态。如果大脑中维护着很多逻辑和状态时被其他事物中断,而当前多段未完成的代码以复杂的方式组合在一起时,那么回到心流状态会更加的困难。

Friday Funny: This Is Why You Shouldn’t Interrupt a Programmer 这片文章里的漫画非常形象,也阐述了一个观点:

正如大多数开发者所理解的,当你致力于解决一个问题、研究一种新技术或者修复一个复杂的 bug 时,你的大脑正忙于处理许多可能的解决方案,并排除那些不可行的方案。最终,它会找到一个可行的解决方案。所有这些思考发生得太快,以至于没有时间写下任何东西,所以请不要因为我们没有在键盘上打字而打断我们。

但是,现实中你总是会被打断,尤其是国内的大厂,有些中断都是不可抗力。在知乎上看过很多程序员吐槽白天各种开会扯皮电话,以至于得晚上加班写代码。对于这个问题,我观察了周围技术高手的应对措施和大牛们的工作方法,就是写工作日志,写出关键思考和线索啥的就可以,帮助你从中断回来接着思考开开发。用个普通的editor纯文本写就行,我个人就喜欢用Sublime这个非常轻量快速的编辑器写,配合层次缩进非常好用。

上下文切换的成本与应对

当在复杂的编程任务之间切换时,返回到心流状态通常比从简单的中断事物返回更费脑力。完全切换到其他东西需要刷新大脑的缓存(短时记忆)并加载一个全新的上下文。这个过程需要时间、精力和精神能量,而这些能量是有限的。

如何快速重建上下文

对于程序员来说,在任务切换后重建上下文通常涉及回到以前编辑或调试过的旧代码。在开始编辑之前,程序员会导航到多个位置以重建上下文。

  • 不轻易关机甚至关相关的程序,任何打开的工作相关程序窗口都不要关,这基本已经是共识;
  • 利用心理学中编码特异性原理,创造相关任务相似的环境与条件,固定位置环境专心写代码;
  • 尽量提升短期记忆和工作记忆,通过关联前验知识加强记忆,加强对记忆分块与索引的能力;

编码特异性原理介绍:https://www.wikiwand.com/en/Encoding_specificity_principle

尽量的提升上下文密度

(1) 要让IDE/Editor尽量显示多的代码行,减少无效元素的干扰,增加对上下文有用的有效信息:

  • Jetbrains的新UI,简约聚焦: https://www.jetbrains.com/help/pycharm/new-ui.html
  • Jetbrains的 View --> Appearance --> Enter Zen Mode
  • VS code的 View --> Appearance --> Zen mode
  • Sublime的 View --> Enter Distraction Free Mode
  • VIM 基本天然就是偏向全屏幕,配合极致的组合快捷键

一张著名的照片是 John Carmack 在 1995 年使用 28 英寸 1080p 显示器制作 Quake。

Carmark28

为什么他会在 1995 年以大约 1 万美元的价格选择 45 公斤的显示器?更高的屏幕空间允许同时显示更多代码,从而产生更密集的上下文。当您能够存储和访问更详细的上下文时,工作效率会大大提高。这就像在为考试学习或执行任何需要使用来自公共领域的多个信息源的任务(例如解决难题)时拥有更大的桌子来存放文件。

(2) 将关键上下文信息钉在屏幕上,类似电视里常见的照片线索墙,术语Mosaic Investigation Wall

推荐一个屏幕截图工具: https://www.snipaste.com

把关键的资料,设计图,核心代码片段定在屏幕上。聚焦深度思考,开发review代码。类似的工具还有很多,我见过周围的同事基本都有类似的习惯,因为这真的非常有帮助,屏幕截图核心信息全部贴到关键的位置。

在开发复杂代码的时候,尤其涉及到非常多业务细节时,把关键的信息钉到屏幕上,充分利用屏幕所有空间,大脑一眼快速载入关键信息,或者在编程时需要参考是直接一眼就获取。非常有利于提高效率。

知乎这个问题:电视里整理线索时,会把钉在墙上的资料用线连起来,然后找到交汇点,是什么方法?专门讨论了这个,效果上也是增强了上下文密度,也用到了心理学中编码特异性原理,相似的环境中,大家一看照片线索墙,马上载入上下文进入状态。

总结

编程时:

  1. 尽量避免被打断,养成写工作日志的习惯,随时快速记录关键逻辑和线索;
  2. 尽量避免频繁切换工作内容,学会借助各种工具尽可能的提升上下文密度;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值