热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[译文]程序员的禅修之路

在很久以后,你会驾鹤西游,你所创造的一切也将随之消失。甚至是象征不朽的金字塔很久以后也会消失。你知道那些建造金字塔的人的名字么?即便你真的知道,难道你知道了就那么重要么?你的软件也一样。银行正在用你的软件赚钱。不过在你驾鹤西游之后,没人会记得你。这没有任何不妥之处。

做一名禅修程序员意味着什么?那意味着,你要持守我从禅宗 习得的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游戏机,因为他们很乐意得到一些食物、乃至是水。

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

免责声明

我不是一名禅僧。我只是正在实践和学习之中。如果你觉得有些需要深入理解的内容,那么请向你本地的禅僧求教。当然,我会在博客中尽量为你解答,尽管如此,我还只是名初学者。无论如何,我很高兴能收到你的评论,并且要是你喜欢此文,可否愿意将本文链接发到微博上。感谢阅读!

英文原文:The 10 rules of a Zen programmer

本文地址:http://www.nowamagic.net/librarys/veda/detail/2436,欢迎访问原出处。


推荐阅读
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • Python 领跑!2019年2月编程语言排名更新
    根据最新的编程语言流行指数(PYPL)排行榜,Python 在2019年2月的份额达到了26.42%,稳坐榜首位置。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 新浪微博热搜暂停更新;即刻APP回归;Android 11 Beta版发布 | 科技新闻速递
    为您带来最新的科技资讯,涵盖社交媒体动态、软件更新及行业重大事件。CSDN携手您共同关注科技前沿。 ... [详细]
  • 本文详细介绍了如何使用Layui框架实现动态和静态数据表的分页功能,具有较高的实用性和参考价值。适合需要开发管理后台的开发人员参考。 ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 本文讲述了一位80后的普通男性程序员,尽管没有高学历,但通过不断的努力和学习,在IT行业中逐渐找到了自己的位置。从最初的仓库管理员到现在的多技能开发者,他的职业生涯充满了挑战与机遇。 ... [详细]
  • Facebook开发先进AI系统,深入解析个人生活视角
    Facebook正大力投资于增强现实技术,与Ray-Ban合作开发AR眼镜。目前,这些设备主要用于图像的记录和分享,但公司展望未来,认为这些装置将具备更广泛的功能。一个由研究人员组成的团队正在开发先进的AI系统,旨在深入解析用户的个人生活视角,从而提供更加个性化的体验和服务。 ... [详细]
  • 提升开发技能的八大策略与方法
    许多前端开发人员和客户都在寻求具备创新和技术能力的专业人才,但往往由于缺乏足够的曝光度和声誉,这些人才难以被潜在客户发现。本文将介绍八种有效策略和方法,帮助开发者提升技能并增强市场竞争力。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
author-avatar
君字翔宇_323
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有