禅修程序员十诫----转自图灵社区-程序员宅基地

技术标签: java  禅修  

做一名禅修程序员意味着什么?那意味着,你要持守我从禅宗 习得的10条戒律,它们与计算机程序员的现代世界息息相关。

早晨,外面下着雨,我发觉自己正坐在办公桌上琢磨有关高效率工作(efficient working)的问题。在我成为自由职业者之前的那些日子,尽管做了许多工作,然而回首往昔,不过是一片狼藉罢了。

回想2006年我开始禅修之际,当时有好一阵子,这种念头清晰地浮现在我的脑海里:几百年前,老禅师就已知晓今天的程序员到底该如何工作。尽管我并不喜欢那些诸如“成为更好的程序员”之类的帖子,但是从那天早上起,我想概括我的一些想法。谨以此文作为自我提醒,但如果你对此有任何想法,欢迎不吝赐教。

1. 一心不乱(Focus——集中精神)

一旦你已决定处理某项任务,就要尽你所能把它做好。不要同时启动几件事。一次只做一件事。一心多用不会使你变得更快,你只不过是在进行多线程式的工作。如果进行多线程式的工作,那么你将变得精疲力竭、错误倍出,而且为了从一个任务跳转到另一任务也会浪费时间。这不仅适用于编程,而且是条通用建议。

泽木兴道(Kodo Sawaki)禅师说过:要是你想睡就睡。当你准备睡觉时,就别盘算软件了。只管去睡。要是你想编码就编码。切勿虚度光阴——专心编码。要是你累得写不动程序了,那就睡吧!即使像Stephan Uhrenbacher那样知名的多任务处理者在此时也会决定进行单线程式的工作。我有着与Stephan类似的经历,并最终写出了名为Time & Bill的时间跟踪工具。其目的是跟踪我的时间,哪怕是像打电话那样的小任务也可轻松跟踪。现在我可以在每天伊始创建几个秒表,而且只需轻轻一点便可跟踪我的时间。但是过去的结果却是场灾难:有时直到我移至下一个任务为止,我仅仅在某个任务上工作了几分钟。现在我的情况已有所改善。与番茄工作法类似,我会计划若干时段,并且在那些时段里全神贯注地工作,不聊天、不瞌睡、不浏览应用商店上那些精彩的新游戏。
2. 心如止水(Keep your mind clean.——保持心无杂念)

你在开始编写软件之前,需清除杂念。暂时达到心无旁骛的境界。要是你遇到什么麻烦,请勿受它影响。大多数情况下,烦恼会烟消云散。要是麻烦严重到挥之不去的地步,那就切勿工作。应尽量把问题解决。至少当你着手工作时,要让自己进入与世隔绝的状态。

邮件列表中是不是有些精彩内容?就让它留在那里吧!你可以回头再来了解那些精彩内容。停掉那些使你心烦意乱的玩意:关闭Twitter、Facebook、以及你的电子邮件。你甚至应该把手机调成静音,然后放进口袋。你可能会说这与第一点“专心”很相似。然而还有一个限制就是:在工作之前或午餐时,不要使用那些工具。它们把你与外部世界联系起来,而且很可能会带来一些新麻烦或是让你分心的事情。

像这样想:在大部分时间,当你清早醒来时,头脑是非常清醒的。否则,就需要借助某些运动让你清醒(我会进行长跑)。要是你觉得神清气爽了,就去着手工作并全力以赴地工作。当你不再工作时,再让尘世的喧嚣充斥你的心灵。当你完成一整天的工作之后,你就会发现那也不过如此。Twitter之流会消耗你很多能量。千万不要认为:就只一小小会儿。而事实并非如此!

你对此已是心知肚明。
(译注:确实如此!就我而言,只要一打开微博,几十分钟、甚至几个小时转眼即逝,而手头的工作却停滞不前 :()。

3. 虚怀若谷(Beginners mind.——菜鸟心态。)

请回忆你是菜鸟的往日。或是铭记在心,设想自己还是只菜鸟。你觉得永远都学不够。每天都把自己当成菜鸟看待。总是努力从菜鸟的角度去看待各种技术。你可以接受使你的软件更好的修正,而且要是你想更轻松一些,那就脱离标准路径(译注:正所谓“初生牛犊不怕虎”)。即便是那些经历与你不同的人,他们也会有些奇思妙想。

你曾经有过两次以相同方式生成某个软件的经历么?即使你复制软件,也会多少有点儿不一样。

4. 心中无我(No Ego.——无我。)

一些程序员有个大问题:他们拥有自我。不过没时间用于形成自我。更没时间让你成为摇滚明星。

到底是谁决定了你作为程序员的质量?是你自己么?当然不是。是其他人么?有可能是。不过你的真地可以把一个苹果与一根香蕉放在一起比较么?不可以。由于你是独立的个体,因此你无法拿自己的整个身心与他人进行比较,你只能比较几个方面。

某个方面根本不能引以为豪。你擅长Java么?那非常好。其他人确实不如你,不过他们更擅长打保龄。是Java比打保龄更重要么?这要视情况而定。或许你用Java赚到更多的钱,不过其他人由于结识他的保龄球友,他们可能拥有更多的生活乐趣。

由于你是名极客,就真地值得骄傲么?拥有自我的程序员不会学习。正所谓“满招损,谦受益”。世人皆为吾师,不妨同时向高手和菜鸟学习。正如子曰,三人行,必有我师焉。

泽木兴道(Kodo Sawaki)禅师说过:你无关紧要——俗话说,别总拿自己当棵葱,不是谁都拿你炝锅的。

不妨想一想!
(译注:3、4两点看似独立,实则相互呼应,唯有先虚其心,然后慢慢地眼里才能容得下别人,看得到别人的长处,骄横之气也能慢慢散去,并真正达到无我境界。)

5. 无欲则刚(There is no career goal.——没有职业目标。)

如果在你想得到些什么的同时,却忽视了“当下”的生活,那么你就已经输掉了这场比赛。只要竭尽所能,无需顾及你可能在很久以后才能达到的目标。

难道历经千辛万苦工作20年只为做股东?为什么你不能仅为享受工作之趣而全力以赴呢?其实,努力工作也能乐趣无穷。禅宗有言,一日不作,一日不食。

无需待到20年后再开启幸福之门。你现在即可幸福快乐,就算你不是股东、或是没有开上保时捷也一样可以幸福快乐。世事难料,你可能会大病一场,可能会被炒鱿鱼,也可能心力交瘁(如果你遵循本文讲述的所有这些内容,那么我猜发生这种情况的可能性会很低)。

在这些不幸的事发生以前,只要全力以赴地工作并乐在其中就好了。没必要盯着同事们的收入。没必要惦记你未得到的很棒的新职位。

毕竟,你终会有所成就。你最终将得到美好的回忆,或许还有个好职位——还有那杰出的20年。每天都是好日子。

如果你曾经直截了当地提到,你觉得在你的公司工作根本就不开心,那么你必须马上离开。决不要留在夺走你生活中的快乐的公司。当然,人们可以选择离开只有在发达国家才可能发生。不过要是你正生活在如此良好的环境中,那你就这么做吧。无怨无悔地离开。你没有时间可以浪费,因为或许你明天就会死去。

一旦你没有了职业目标,那么离开时便可逍遥自在。
6. 谨言慎行(Shut up.——住口。)

要是你没什么可说的,就不要浪费其他同事的时间。这样做并不会使你看上去懦弱无能。每天你工作时,你需要设法做到不让他人心烦不安。想象一下,如果每人都试着这样做的话——那应该是个很棒的工作环境吧?尽管有时这是不可能的。但只要努力尝试,你就会乐意这么做的。

如果没有形成自我,那么闭嘴就很容易做到,还会谨慎对待你所说的每件事。不要把你的“经验”与自负相混淆,永远记住:你是只菜鸟。要是别人有了好主意,就该支持。

7. 明心见性(Mindfulness. Care. Awareness.——正念、留心、觉察)

没错,你正在工作。不过与此同时你也正在生活和呼吸。即便你在工作中遇到了一些困难,你也需要聆听你的身体所发出的信号。你需要了解的那些对你有益的东西。这包括一切,包括譬如食物等生活必需品。你需要关心你自己以及你周围环境中的一切——因为毕竟你喝的水是奔流不息的河水。因为你只为自己而生。你独自生活,并且将会独自逝去。即使没有你,世界依然生生不息。

要避免在你不喜欢的情境下工作。要避免无偿工作,如果那意味着你会觉得很无聊,而且会夺走你休息时间的话。与那些让你不悦的事物一刀两断。难道无偿工作听起来只是个理论么?想想那些在其黄金时间从事开源软件开发的人们。要是你曾订阅过某些项目的邮件列表,那么你可能就会知道那里是何其热闹(至少有时候会如此)。要是你无法从中体会到乐趣——那就不要再做下去了。我知道有很多人,他们工作在并不喜欢的开源软件环境之下。此外,我用Time & Bill来跟踪我花费在开源项目上时间,而且惊讶地发现我居然在那里浪费了如此之多的时间——尤其是在一些我不太喜欢的项目上。

有鉴于此,有些人认为,只有当他们拥有黄金时间,并且整晚与xbox游戏机和啤酒相伴时,才是他们唯一的乐趣。尽管这有时是个好主意,不过那未必在你一生时间里都是“乐趣”。要是你可以避免你不喜欢的情境,那就要避免它们(如上所述)。不过有时需要做些真的很糟糕的事。例如从你经理的Excel表格中手动复制/粘贴原始数据到phpmyadmin中。这项工作可能会花费你数天时间,而且确实很无聊,毫无乐趣可言。不过有时你需要做诸如此类的工作。你不能每当得到一个无聊的任务时就辞职不干。禅僧也不会羞于他们的工作。他们早上4点起床(有时早些,有时晚些,依僧院而定),接下来开始打坐参禅,接下来劳动(他们甚至将劳动视为参禅之法门)。他们有事要做,例如清扫厕所、或者在菜园务农、或者作为火头僧,他们要烧火做饭。他们全心全意地做事。无论他们做什么,他们做的时候都毫无苦恼,而且他们都(或应该)很高兴,因为每秒都是他们生命的瞬间,即便那一秒他们正在清扫厕所也是如此。

话虽如此:停止哭泣,要是你需要复制/粘贴excel,就只管去做好了。不要为此类事情浪费精力,它们都会过去。或者以成为最好的excel复制/粘贴者取而代之。

要是你患有心脏病,人们可能会说:“呃,是的,他确实工作很卖力,他甚至在夜里为我无偿工作”。但是没有人会领你到另一个世界。这最后一步要我们独自走完。在冥界之中你无法交换任何东西。甚至连个屁也不行。因此这就要取决于在每一秒中你对自己的照顾。要是你没了也就没了。不过既然你活着就该好好活着。没有时间可以浪费,必须争分夺秒。

在禅宗中,"留心(care)"是个集大成的词汇(而且我认为在所有的佛教形式中皆如此)。我无法表达我想说的一切。要理解"留心(care)"的不同含义是很难的。可能你最好还是使用“觉察(awareness)”一词。在生命中的每一刻,你必须知道自己在做什么。在你的生命中,你必须时刻保持正念。否则你就会浪费生命。不过当然,这取决于你的所作所为,随你的便吧!

8. 明哲保身(There is no Boss.——没有老板。)

是的,有人付给你薪水。有人告诉你需要做什么,而且他还可以解雇你。但是,没有理由放弃你自己的生活,或是因公害病。总之,你的老板无法控制你。即便你对自己可否进行自我管理心存怀疑——但切勿走上这条不归路。

回来接着谈你的老板:要是你允许他控制你,那他可能会把你的生活搞得一塌糊涂。而唯一的出路是,如果要你去做的事会有损健康或是违背你的道德标准,那么请说“不”。接下来会发生什么?最不济就是他把你解雇。那又怎样?如果你生活在西方国家,并且是名码农(当你阅读此文时,很可能你就是名码农),那么你将得到另一份工作。

对于将CSV格式的数据转换为HTML格式等诸如此类的任务,我并不想对它们说“不”。我要说的是,是否每周80小时的工作时间让你的身体吃不消,或者你觉得你的孩子需要更多的重视;或者你是否被迫解雇某些人,仅仅因为你的老板不喜欢他们;或者你是否是名咨询师,并且受雇为核电厂或坦克开发软件(有人可能会说为核电公司工作简直棒极了——这违背了我的道德标准,并且只是举例而已)。对于以上情况,你可以说“不”!

9. 玩物明志(Do something else)

程序员不仅仅是程序员。你应该做些与计算机无关的事。在你血气方刚之时,不妨乘风破浪扬帆远航、钓鱼、潜水。还可以练习冥想、武术、或者演奏尺八(即Shakuhachi,是我国唐代时传入日本的一种竹笛)。无论你做什么,都要不遗余力。跟你在工作时间的状态一模一样。应严肃对待。爱好不仅仅是爱好,它还是在展示自我。要是有人说爱好无足轻重,谨防上当受骗!现如今,我们可以尝试各种各样的爱好。我已经录制了几张个人CD,还创作了几本科幻小说(不过小说尚未出版,我还得多多练习)。正是这些爱好塑造了现在的我,而且最终引导我练习禅修,并撰写出此博文。最近我在练习禅宗尺八,它在我的日常生活中占有至关重要的地位。
10. 恬淡寡欲(There is nothing special.)

尽管花儿很漂亮,但只不过是朵漂亮的花——仅此而已。并无任何非凡之处。而你只是个会编程的人。或许你很优秀,但没有什么与众不同。你与我、或者这个星球上其他所有人都是同类。

你不仅要吃喝拉撒。当然,还要睡。(最好)在很久以后,你会驾鹤西游,你所创造的一切也将随之消失。甚至是象征不朽的金字塔很久以后也会消失。你知道那些建造金字塔的人的名字么?即便你真的知道,难道你知道了就那么重要么?并非如此。金字塔依然耸立在那里,或是随风而逝。平淡无奇。

你的软件也一样。银行正在用你的软件赚钱。不过在你驾鹤西游之后,没人会记得你。这没有任何不妥之处。正是“逝者如斯夫”!你应该对此了无牵挂。如果你正在遵循前9诫生活,那么你会发现最后这项修行既有益又有趣。现在仅有两件事,即时间的流逝,以及全神贯注地做事。

要是你的公司因财务问题而关门大吉,那没什么大不了。生活将会继续。其实根本无须xbox游戏机、汽车、或是别的东西。由于这个星球上大部分人生活在极度贫困之中。他们根本不在乎xbox游戏机,因为他们很乐意得到一些食物、乃至是水。

所以……你到底为什么与众不同?难道是因为你有幸出生在西方国家?还是因为你会写代码?不,没有什么与众不同。你可以放弃自负去自由自在地生活。尽情享受周围花儿的颜色和香味。当冬季降临时无需泣不成声,而春回大地时也不必欣喜若狂。那不过是四季更替罢了。请铭记在心,一旦某人拒绝了你的求职申请,是因为那家公司并未与众不同到你需要为那份工作而劳心费力。

免责声明

我不是一名禅僧。我只是正在实践和学习之中。如果你觉得有些需要深入理解的内容,那么请向你本地的禅僧求教。当然,我会在博客中尽量为你解答,尽管如此,我还只是名初学者。无论如何,我很高兴能收到你的评论,并且要是你喜欢此文,可否愿意将本文链接发到微博上。感谢阅读!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/houhaijiang/article/details/84187786

智能推荐

android学习笔记总结初学者必看,android学习笔记总结初学者必看.doc-程序员宅基地

文章浏览阅读123次。android学习笔记总结初学者必看android学习笔记总结初学者必看篇一:Android学习笔记总结初学者必看Android学习笔记总结第一步:Android(1) - 在 Windows 下搭建 Android 开发环境,以及 Hello World 程序搭建 Android 的开发环境,以及写一个简单的示例程序???在 Windows 下搭建 Android 开发环境 Android 项目..._安卓基础笔记

[转载]Matlab中的CVX工具包安装_matlab cvx工具箱安装-程序员宅基地

文章浏览阅读8.8k次,点赞6次,收藏2次。Matlab中的CVX工具包安装原文链接:https://blog.csdn.net/liusandian/article/details/51981300 毕设做压缩感知,不知道如何入手。已经安装了Matlab2012a(x64),装个CVX工具包,主要是想用还原算法。如果有一起做..._matlab cvx工具箱安装

XXE注入攻击与防御-程序员宅基地

文章浏览阅读117次。转载自:http://www.91ri.org/9539.html0x00 前言XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数据进⾏行处理时引发的安全问题.在XML1.0标准⾥里,XML文档结构⾥里定义了实体(entity)这个概念.实体可以通过预定义在文档中调用,实体的标识符可访..._xxe注入的防御手段不包含

torch 的 dim 和 numpy 的axis 表示方向不同_torch 中的dim和numpy中的axis-程序员宅基地

文章浏览阅读442次。1. torch中以index_select为例子torch.index_select(input, dim, index, out=None)- 功能:在维度dim上,按index索引数据- 返回值:依index索引数据拼接的张量 - index:要索引的张量 - dim:要索引的维度 - index:要索引数据的序号x = torch.randn(3, 4)print(x)indices = torch.tensor([0, 2])torch.index_s..._torch 中的dim和numpy中的axis

LSB隐写算法的实现(matlab源码和界面)_lsb隐写matlab-程序员宅基地

文章浏览阅读7.1k次,点赞15次,收藏113次。LSB隐写算法的实现(matlab源码和界面)Matlab的GUI界面效果展示放matlab源代码GUI界面的源码LSB算法原理分析Matlab的GUI界面效果展示放matlab源代码主函数部分main.m.// author:Lucifer diamondclc;%清除命令行窗口close all;%关闭所有打开的窗口clear all;%清除工作空间%%获取载体图像并将其转化为灰度图CarrierImg = rgb2gray(imread('lena.bmp')); % 获取载_lsb隐写matlab

docker搭建ElasticSearch 5.6.8 集群_docker构建es5.6.8镜像-程序员宅基地

文章浏览阅读664次。写在前面:为什么要用ElasticSearch?我们的应用经常需要添加检索功能,开源的Elastic Search是目前全文检索引擎的首选。它可以快速的存储、搜索和分析海量数据。ElasticSearch是一个分布式搜索框架,提供RestfulAPI,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。Elasticsearch: 权威指南..._docker构建es5.6.8镜像

随便推点

mysql学习(4)- 分组与聚集函数的查询_mysql分类和聚集进行查找-程序员宅基地

文章浏览阅读128次。1.常见的聚集函数以上计算都是忽略空值的,注意count(*)的计算是包含空值的,但是count(xxx)是不包含空值的。DISTINCT参数,指以上聚集函数计算时只包含不同的值。DISTINCT不能用于count(*)2.分组数据group by 与having如果需要对数据进行分组计算,则需要使用到group by位置在where 语句之后,oeder by之前如果分组数据中有NULL值,会把他单独分为一组来进行计算having为分组查询的条件,使用规则与where一致,但是where只_mysql分类和聚集进行查找

Python小白学习2——注意事项_python2输入需要注意什么-程序员宅基地

文章浏览阅读149次。Python是一门不需要编译的语言,在cmd使用Python xxx.py即可运行部分参考了博客https://baijiahao.baidu.com/s?id=1607395511044728085&wfr=spider&for=pc1、版本问题在网上看初学资料,发现网上大部分资料都是python2的教学资料,而发现自己下载安装的是python3。所以在跟着写代..._python2输入需要注意什么

蓝桥杯 九宫幻方_蓝桥杯三阶幻方-程序员宅基地

文章浏览阅读202次。蓝桥杯 九宫幻方 C++思路1.将所有满足条件的3阶幻方列举出来使用全排列函数next_permutation来实现,函数使用链接https://blog.csdn.net/Dear_Jia/article/details/795939732.遍历所有3阶幻方矩阵,统计与输入矩阵可以匹配的个数3.代码#include <iostream>#include <cst..._蓝桥杯三阶幻方

PHP判断字符串编码是否utf8并转换的方法_php判断字符串编码并转换成utf-8-程序员宅基地

文章浏览阅读639次。乐杨俊:一。先检查你的文件编码与数据库、页面编码是否一致。二。如果“一”没有问题,那么就需要先判断字符串的编码了,我们只要判断一种就可以了,关于检测是否为utf8编码的问题,烈火网以前发表过相关文章,但是不太好用,今天在网上找到一个比较完美的函数,代码如下:function is_utf8($liehuo_net) { if (preg_match("/^([".chr(228_php判断字符串编码并转换成utf-8

######## Running command: “make cmake_check_build_system“ in “/home/jjy/catkin_ws/build“########_running command: "make cmake_check_build_system" i-程序员宅基地

文章浏览阅读3.4k次。ros编译报错_running command: "make cmake_check_build_system" in "/home/zhaojiahui/fxnb/e

android 设置iptv vlan tag的命令,关于VLAN TAG的命令行设置-程序员宅基地

文章浏览阅读645次。本帖最后由 lessleep 于 2019-2-12 19:53 编辑R8000 刷了最新版ASUS固件。现在连接光猫需要设置WAN口的VLAN为2。请教正确的命令是怎么样的?目的是要把wan 端口后面的vlan改成2 还是下面vlan 2后面加上wan的端口?port 5是wan口,port8是CPU吗?下面是我重置路由器后,在iptv里设置完vlan为2 查询robocfg show的结果Sw..._r8000p vlan/iptv

推荐文章

热门文章

相关标签