【分享】写代码如坐禅:你是哪一类程序员?
和你的工作日休息比起来这点时间是微不足道的,但是总的来说它还是能对你的生产率和幸福感感带来巨大帮助的。
顺便说一下,这篇文章内容不是只针对开发者和程序的。它对任何使用电脑的聪明人都有效。后面还会附上图片。现在让我们开始吧!
为什么要写这篇文章
我最近开始在我的工作习惯里使用某种时间管理技巧来提升我的生产率,减小压力,并帮助我的身体和大脑得到休息。我基本上想要在不被打扰的100%注意力集中的一两个小时里工作,然后就是20到30分钟的休息。
然而,我几乎立刻就进入了一个巨大的问题里:当我正在编译或部署什么东西时,我会自动地打开邮件客户端,facebook,新闻阅读器,新闻站点中的某一个或几个。这是一个坏习惯。它很难改掉。它扰乱了我本来专注的注意力。
所以我决定搜索相关资料。在 StackExchange 有一个关于“编译时应该做什么”的论坛。投票最多的答案是“减少编译时间”一类的。然而,这些答案并不能解决更多的普遍问题:在电脑上工作时总是有些事项是需要时间来等待的。
与之不同的,论坛上的人多半建议那些时间可以做些什么(类似收发邮件或是看新闻),这是一个差劲的想法。一个好的建议是这个——“同一时间干多件事是不好的”。我赞同这个观点。但其他人呢?不认为?好的。这个答案令人失望。所以在这篇文章里,我将深入探索这个问题并且向你展示最理想的方法。
两种类型的程序员
有两种极端类型的程序员——“禅宗的程序员”,我们称为心如止水的程序员,还有“不能克制分心的程序员”,我们称为心绪不定的程序员。通常认为两者都人数不多,并处于钟形分布曲线的两端。果真如此?
错。实际上,心绪不定的程序员是难以置信地普遍存在着。
图片的效果要比文字有用,所以我现在用图片来说明两种程序员的精神世界的状态。
心如止水的程序员
心如止水的程序员会怎么做?
他写代码。这是他做的唯一的事情,这也说明了一切。也许更重要的问题是什么事情他没有做:他心无旁骛,专注于代码的修改和编写。一到两个小时的纯代码时间,然后才是20-30分钟的休息,通常是离开电脑。之后他会继续开始写代码。(以上所说的时间只是一个例子。他可以用其它方式安排时间-不过他总是能平衡并搞定长时间的生产率。)
他的思维像平静的水缓慢地流动。当然它不像那种恒久不变的凝固的冰。
心绪不定的程序员
即使你的精神世界现在看起来像一个心如止水的程序员,只要你在编译的时候打开了Facebook或者检查了你的邮件还是做了其它什么事情。几分钟之后它就会像这样:
女士们先生们,这就是你检查你的邮件和打开Facebook后的状况。如果你还拥有一堆实时通知,即时通讯,还要去检查你的RSS源和推特,结果就是大脑像上面图中变成碎片的灾难一样。
你可能还没有完全从这张图恢复过来。不在特定的某天,任何时候都有可能发生。即使你把精神世界所有无用的东西最小化到任务栏,它仍会留在那里,不停地引诱你,消耗你的精神资源。朋友,时间就这样走了,你会困惑它是怎么不见的。
顺便说一下,如果你是一个心绪不定的人,你还是可以看看我们网站的网页漫画!不必立刻回来把这篇文章读完。别忘了订阅那个漫画源!看完所有的漫画后可以分享给你的朋友并聊聊!做这些事不会过于分心的,真的!
心如止水的程序员与心绪不定的程序员之间的区别
心如止水的程序员更倾向于长期的幸福感和生产率。他有能力高度集中注意力,关注目标。
心绪不定的程序员更倾向于短暂的满足感,长期这样不能到达全部的潜力并且会对他自己的身体和精神带来双方面的伤害。他不能定下心来集中注意力。
为了彻底领悟这点,我们首先需要理解我们的大脑是怎样工作的。
我们的大脑是怎么工作的
事实上我们不能完全知道,不过,基于我们现在已有的理解,心理学家已经提出了一些有用的类比方法,可以帮助我们领悟复杂的东西。
电脑的类比
你的大脑像一台电脑。当然,它要比一台个人电脑复杂多了,不过电脑的比喻说法可以让我们形容许多在大脑里运行的进程。有些东西像硬盘,有些东西像内存和中央处理器,还有进程和线程,它们的确需要一些时间来访问信息并计算数据。
很明显我们的大脑拥有一定的容量在任一时刻集中注意力。你可以很好地集中在某一东西上,或是不太好地集中到几样东西上,但你不能两者都做到。把注意力从一个任务转到另一个任务甚至会影响认知能力,特别是两种毫不相干的任务。
只要你把意识关注在某样东西上,就会花些时间处理它和它所分配的资源并会从内存和后台进程里初始化它。它可以存在几个小时甚至几天。最近的关注到的东西在任何时刻都会不断出现的。即使你没有注意到它们在你的大脑里流动,它们一直都在那儿——而且它们占用资源,使你不能集中注意力。
抽屉的类比
另一种有用的比喻说法是柜子里的抽屉。你的大脑像存放东西的抽屉。每个抽屉都是拥有数据且互相连接的,基于某种上下文关系和概念。在特定的时间里,一些抽屉是打开的,一些是关闭的。打开的抽屉代表着你当前的精神空间,它们很容易访问到。
主要的问题是关闭抽屉是需要很长时间的,而打开它们是非常快的。
所以,当你在工作时,注意力转到新的地方,它会立即打开一堆抽屉。当你回到工作状态时,那些抽屉仍然是开着的。这样唯一的好处是可以提高你的创造力和头脑风暴——但是不需要的抽屉开着会有影响的。它们抑制左脑的思维并降低注意力。
编译时应该做什么
在等待电脑执行操作的时间里,你的行为可以判断出你是一个心如止水的程序员还是心绪不定的程序员。
主要的意见是:
1.不要分心
2.短暂的休息
保持注意力并不是那么难——你必须要切断你大脑的电源,或者保持注意力集中在你的代码上。不过,关闭大脑效果更好。这样会进入一个微冥想状态,在短暂休息之后它仍会有效。
为什么要进入冥想?好的,你的大脑每天都在咀嚼代码,为什么不给它一个休息呢?此外冥想科学上被证实能不断增加幸福等级。想象一下每天进行两次30-60秒表面上看起来不重要的冥想所带来的长期优势吧。
现在,短暂的休息时应该做些什么?从以下内容中选择任何事,按你的想法组合在一起。你可以把它们按照这个顺序全部做一遍,这取决于(也可以不在意)这些行为所需要的时间。
1.站起来
2.眺望远处
3.把双手放在脑后,斜靠在椅子上
4.伸长双腿,把双手尽量举高
5.闭上双眼
6.轻揉眼睛
7.慢慢地把头向各个方向转,舒展颈椎
8.闭上双眼然后深呼吸
9.倒一杯水(要小心路上别被同事分心了)
你也可以做任何主要身体参与而不影响思维的事——静力锻炼,变戏法,决斗,哈哈
顺便说一下,如果你的老板不给你足够的时间做以上的任何事,那么推荐他来看这篇文章。让自己更快地恢复精神并保持注意力,比看起来在工作其实已经分散注意力并很快就感到累的情况要好很多。
伸展放松是很有益处的。我上一次见我的理疗师时她发现我的肩膀很多地方很紧绷。她告诉我这可能是因为我坐在电脑前双手总是弯曲造成的,所以肌肉缩短而且不能用力。那我应该怎么做最好呢?举高我的双手,试着举到最高。这是我在编译或是等待电脑执行操作时常做的一件事。
你可能已经听说过当你在用电脑时进行有规律伸展放松和短暂休息是一个不错的想法。问题是怎么做到——即使你设置了一个计时器,但假如到时你正处在一个复杂的事情,正做到一半的时候怎么办?这样看来就无法实现了。然而,如果你在编译时短暂休息一下,就能很好地做到了,你甚至可以把它养成一种习惯,让它变得更“自然”!现在编译就开始能提醒你做伸展放松了。这太令人不可思议了。
编译时你不应该做的事情
我其实想用力点击我的主页,这样做能让事情变得简单,这里有一张你在编译时不应该做的事情的列表。以这种方式思考:这些事情不仅会使你不能集中注意力,还会让你的思维和身体不能很好地短暂休息。
1.阅读你的RSS源
2.阅读新闻(任何新闻)
3.收发邮件
4.浏览各类社交媒体(Facebook,twitter,google+,linkedin,reddit,stackoverflow,github)
5.观看视频
做以下两件事要比上面的好一点,但依然不推荐:
1.和同事聊天
2.读一本物理书
专注的注意力和专注地修改
我马上就要结束这篇我所想的每日工作流程的理想方法——禅宗程序员的文章了。
保证生产率和效率的关键是注意力100%集中在你现在正在做的事情上,做完后再把注意力完全转移到其他地方。注意力从一件事情到下一件事情的过渡不能有任何的拖泥带水。
把你的工作时间分成1-2个小时一段。注意力100%集中在这些时间段里。然后是20-30分钟的休息,完全可以做任何事情。在休息时间你可以浏览你的邮件和社交媒体,当然,散个步打个盹吃些健康的点心会更好。休息结束后,检查任务管理软件(比如,我用的是我的Swift To-Do List)里下一个工作是什么,再开始另一段需要百分百注意力集中的工作。在较大程度上,这与番茄工作法有点相似。
休息不是可以选择要不要的。别想去跳过它。你的身体需要休息。即使你在做你喜欢的工作,你也需要休息一下——在这种情况,你会在接下来的时间段里有动力做更多事。
你的工作流程看起来应该像这样:
(任务1 - 任务2)- 休息 - (任务2 - 任务3 - 任务4) - 休息 -(另一个1-2小时的时间段) - 休息 ……
不要让它完成起来是像这样混乱随机,让人看不下去的的:
任务1 - 邮件 - 任务1 - Facebook - 任务1 - 任务2 - 短暂休息 - Facebook - 任务2 - 邮件 - reddit - 任务3 - 邮件 - 休息 - 任务2 - 邮件 - 任务3 - 推特 - 黑客新闻 - 推特 - 任务1 - 任务3 - 休息 - 任务4
如果你的工作流程是像上面这样,那你既不能完全放松也不能做完你能完成的事情。这是最低级的方法。这不仅浪费了你的潜力和时间,也让你长期身体会不适。
我不想撒谎。集中注意力真的不容易。它很困难,因为当你没有集中注意力时,你基本上会朝着相反的方向过去。习惯和根深蒂固的惯例像潜意识一样难改变。
好消息就是,你还可以练习。你可以学习怎样去集中精神。这是每个人都可以学的技能,而且它非常有用,值得为之努力。
——转载于Jiri Novotny+,作者由于Windows平台任务管理软件的困扰。他把这篇用户文章投递在 ComponentOwl.com,因为他的Swift To-Do List要使用 Component Owl上基于.Net框架的Better ListView作为它的核心组件。
另附:你有没有身边的人会每天要检查50次邮箱?把这篇文章发给他。他之后会感谢你的。