【转】写代码如坐禅:你是哪一类程序员

2024-05-01 16:48
文章标签 代码 程序员 一类 坐禅

本文主要是介绍【转】写代码如坐禅:你是哪一类程序员,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 当编译占用你时间时你会怎么做。不只是编译,即使是在等待任何短暂的计算机操作结束,这段时间你会干些什么?

和你的工作日休息比起来这点时间是微不足道的,但是总的来说它还是能对你的生产率和幸福感带来巨大帮助的。

顺便说一下,这篇文章内容不是只针对开发者和程序的。它对任何使用电脑的聪明人都有效。后面还会附上图片。现在让我们开始吧!

我的代码还在编译
( 伯乐在线补充一枚相关漫画)

 

为什么要写这篇文章

我最近开始在我的工作习惯里使用某种时间管理技巧来提升我的生产率,减小压力,并帮助我的身体和大脑得到休息。我基本上想要在不被打扰的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)

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次邮箱?把这篇文章发给他。他之后会感谢你的。

原文来自:Are You a Zen Coder or Distraction-Junkie?


这篇关于【转】写代码如坐禅:你是哪一类程序员的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/952186

相关文章

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计