摘要:做一名禅修程序员意味着什么?那意味着,你要持守我从禅宗 习得的10条戒律,它们与计算机程序员的现代世界息息相关。
查看英文原文:The 10 rules of a Zen programmer
早晨,外面下着雨,我发觉自己正坐在办公桌上琢磨有关高效率工作(efficient working)的问题。在我成为自由职业者之前的那些日子,尽管做了许多工作,然而回首往昔,不过是一片狼藉罢了。
回想2006年我开始禅修之际,当时有好一阵子,这种念头清晰地浮现在我的脑海里:几百年前,老禅师就已知晓今天的程序员到底该如何工作。尽管我并不喜欢那些诸如“成为更好的程序员”之类的帖子,但是从那天早上起,我想概括我的一些想法。谨以此文作为自我提醒,但如果你对此有任何想法,欢迎不吝赐教。
一旦你已决定处理某项任务,就要尽你所能把它做好。不要同时启动几件事。一次只做一件事。一心多用不会使你变得更快,你只不过是在进行多线程式的工作。如果进行多线程式的工作,那么你将变得精疲力竭、错误倍出,而且为了从一个任务跳转到另一任务也会浪费时间。这不仅适用于编程,而且是条通用建议。
泽木兴道(Kodo Sawaki)禅师说过:要是你想睡就睡。当你准备睡觉时,就别盘算软件了。只管去睡。要是你想编码就编码。切勿虚度光阴——专心编码。要是你累得写不动程序了,那就睡吧!即使像Stephan Uhrenbacher那样知名的多任务处理者在此时也会决定进行单线程式的工作。我有着与Stephan类似的经历,并最终写出了名为Time & Bill的时间跟踪工具。其目的是跟踪我的时间,哪怕是像打电话那样的小任务也可轻松跟踪。现在我可以在每天伊始创建几个秒表,而且只需轻轻一点便可跟踪我的时间。但是过去的结果却是场灾难:有时直到我移至下一个任务为止,我仅仅在某个任务上工作了几分钟。现在我的情况已有所改善。与番茄工作法类似,我会计划若干时段,并且在那些时段里全神贯注地工作,不聊天、不瞌睡、不浏览应用商店上那些精彩的新游戏。
你在开始编写软件之前,需清除杂念。暂时达到心无旁骛的境界。要是你遇到什么麻烦,请勿受它影响。大多数情况下,烦恼会烟消云散。要是麻烦严重到挥之不去的地步,那就切勿工作。应尽量把问题解决。至少当你着手工作时,要让自己进入与世隔绝的状态。
邮件列表中是不是有些精彩内容?就让它留在那里吧!你可以回头再来了解那些精彩内容。停掉那些使你心烦意乱的玩意:关闭Twitter、Facebook、以及你的电子邮件。你甚至应该把手机调成静音,然后放进口袋。你可能会说这与第一点“专心”很相似。然而还有一个限制就是:在工作之前或午餐时,不要使用那些工具。它们把你与外部世界联系起来,而且很可能会带来一些新麻烦或是让你分心的事情。
像这样想:在大部分时间,当你清早醒来时,头脑是非常清醒的。否则,就需要借助某些运动让你清醒(我会进行长跑)。要是你觉得神清气爽了,就去着手工作并全力以赴地工作。当你不再工作时,再让尘世的喧嚣充斥你的心灵。当你完成一整天的工作之后,你就会发现那也不过如此。Twitter之流会消耗你很多能量。千万不要认为:就只一小小会儿。而事实并非如此!
你对此已是心知肚明。
(译注:确实如此!就我而言,只要一打开微博,几十分钟、甚至几个小时转眼即逝,而手头的工作却停滞不前。)
请回忆你是菜鸟的往日。或是铭记在心,设想自己还是只菜鸟。你觉得永远都学不够。每天都把自己当成菜鸟看待。总是努力从菜鸟的角度去看待各种技术。你可以接受使你的软件更好的修正,而且要是你想更轻松一些,那就脱离标准路径(译注:正所谓“初生牛犊不怕虎”)。即便是那些经历与你不同的人,他们也会有些奇思妙想。
你曾经有过两次以相同方式生成某个软件的经历么?即使你复制软件,也会多少有点儿不一样。
一些程序员有个大问题:他们拥有自我。不过没时间用于形成自我。更没时间让你成为摇滚明星。
到底是谁决定了你作为程序员的质量?是你自己么?当然不是。是其他人么?有可能是。不过你真的可以把一个苹果与一根香蕉放在一起比较么?不可以。由于你是独立的个体,因此你无法拿自己的整个身心与他人进行比较,你只能比较几个方面。
某个方面根本不能引以为豪。你擅长Java么?那非常好。其他人确实不如你,不过他们更擅长打保龄。是Java比打保龄更重要么?这要视情况而定。或许你用Java赚到更多的钱,不过其他人由于结识他的保龄球友,他们可能拥有更多的生活乐趣。
由于你是名极客,就真的值得骄傲么?拥有自我的程序员不会学习。正所谓“满招损,谦受益”。世人皆为吾师,不妨同时向高手和菜鸟学习。正如子曰,三人行,必有我师焉。
泽木兴道(Kodo Sawaki)禅师说过:你无关紧要——俗话说,别总拿自己当棵葱,不是谁都拿你炝锅的。
不妨想一想!
(译注:3、4两点看似独立,实则相互呼应,唯有先虚其心,然后慢慢地眼里才能容得下别人,看得到别人的长处,骄横之气也能慢慢散去,并真正达到无我境界。)
如果在你想得到些什么的同时,却忽视了“当下”的生活,那么你就已经输掉了这场比赛。只要竭尽所能,无需顾及你可能在很久以后才能达到的目标。
难道历经千辛万苦工作20年只为做股东?为什么你不能仅为享受工作之趣而全力以赴呢?其实,努力工作也能乐趣无穷。禅宗有言,一日不作,一日不食。
无需待到20年后再开启幸福之门。你现在即可幸福快乐,就算你不是股东、或是没有开上保时捷也一样可以幸福快乐。世事难料,你可能会大病一场,可能会被炒鱿鱼,也可能心力交瘁(如果你遵循本文讲述的所有这些内容,那么我猜发生这种情况的可能性会很低)。
在这些不幸的事发生以前,只要全力以赴地工作并乐在其中就好了。没必要盯着同事们的收入。没必要惦记你未得到的很棒的新职位。
毕竟,你终会有所成就。你最终将得到美好的回忆,或许还有个好职位——还有那杰出的20年。每天都是好日子。
如果你曾经直截了当地提到,你觉得在你的公司工作根本就不开心,那么你必须马上离开。决不要留在夺走你生活中的快乐的公司。当然,人们可以选择离开只有在发达国家才可能发生。不过要是你正生活在如此良好的环境中,那你就这么做吧。无怨无悔地离开。你没有时间可以浪费,因为或许你明天就会死去。
一旦你没有了职业目标,那么离开时便可逍遥自在。
要是你没什么可说的,就不要浪费其他同事的时间。这样做并不会使你看上去懦弱无能。每天你工作时,你需要设法做到不让他人心烦不安。想象一下,如果每人都试着这样做的话——那应该是个很棒的工作环境吧?尽管有时这是不可能的。但只要努力尝试,你就会乐意这么做的。
如果没有形成自我,那么闭嘴就很容易做到,还会谨慎对待你所说的每件事。不要把你的“经验”与自负相混淆,永远记住:你是只菜鸟。要是别人有了好主意,就该支持。
没错,你正在工作。不过与此同时你也正在生活和呼吸。即便你在工作中遇到了一些困难,你也需要聆听你的身体所发出的信号。你需要了解的那些对你有益的东西。这包括一切,包括譬如食物等生活必需品。你需要关心你自己以及你周围环境中的一切——因为毕竟你喝的水是奔流不息的河水。因为你只为自己而生。你独自生活,并且将会独自逝去。即使没有你,世界依然生生不息。
要避免在你不喜欢的情境下工作。要避免无偿工作,如果那意味着你会觉得很无聊,而且会夺走你休息时间的话。与那些让你不悦的事物一刀两断。难道无偿工作听起来只是个理论么?想想那些在其黄金时间从事开源软件开发的人们。要是你曾订阅过某些项目的邮件列表,那么你可能就会知道那里是何其热闹(至少有时候会如此)。要是你无法从中体会到乐趣——那就不要再做下去了。我知道有很多人,他们工作在并不喜欢的开源软件环境之下。此外,我用Time & Bill来跟踪我花费在开源项目上的时间,而且惊讶地发现我居然在那里浪费了如此之多的时间——尤其是在一些我不太喜欢的项目上。
有鉴于此,有些人认为,只有当他们拥有黄金时间,并且整晚与xbox游戏机和啤酒相伴时,才是他们唯一的乐趣。尽管这有时是个好主意,不过那未必在你一生时间里都是“乐趣”。要是你可以避免你不喜欢的情境,那就要避免它们(如上所述)。不过有时需要做些真的很糟糕的事。例如从你经理的Excel表格中手动复制/粘贴原始数据到phpmyadmin中。这项工作可能会花费你数天时间,而且确实很无聊,毫无乐趣可言。不过有时你需要做诸如此类的工作。你不能每当得到一个无聊的任务时就辞职不干。禅僧也不会羞于他们的工作。他们早上4点起床(有时早些,有时晚些,依僧院而定),接下来开始打坐参禅,接下来劳动(他们甚至将劳动视为参禅之法门)。他们有事要做,例如清扫厕所、或者在菜园务农、或者作为火头僧,他们要烧火做饭。他们全心全意地做事。无论他们做什么,他们做的时候都毫无苦恼,而且他们都(或应该)很高兴,因为每秒都是他们生命的瞬间,即便那一秒他们正在清扫厕所也是如此。
话虽如此:停止哭泣,要是你需要复制/粘贴excel,就只管去做好了。不要为此类事情浪费精力,它们都会过去。或者以成为最好的excel复制/粘贴者取而代之。
要是你患有心脏病,人们可能会说:“呃,是的,他确实工作很卖力,他甚至在夜里为我无偿工作”。但是没有人会领你到另一个世界。这最后一步要我们独自走完。在冥界之中你无法交换任何东西。甚至连个屁也不行。因此这就要取决于在每一秒中你对自己的照顾。要是你没了也就没了。不过既然你活着就该好好活着。没有时间可以浪费,必须争分夺秒。
在禅宗中,"留心(care)"是个集大成的词汇(而且我认为在所有的佛教形式中皆如此)。我无法表达我想说的一切。要理解"留心(care)"的不同含义是很难的。可能你最好还是使用“觉察(awareness)”一词。在生命中的每一刻,你必须知道自己在做什么。在你的生命中,你必须时刻保持正念。否则你就会浪费生命。不过当然,这取决于你的所作所为,随你的便吧!
是的,有人付给你薪水。有人告诉你需要做什么,而且他还可以解雇你。但是,没有理由放弃你自己的生活,或是因公害病。总之,你的老板无法控制你。即便你对自己可否进行自我管理心存怀疑——但切勿走上这条不归路。
回来接着谈你的老板:要是你允许他控制你,那他可能会把你的生活搞得一塌糊涂。而唯一的出路是,如果要你去做的事会有损健康或是违背你的道德标准,那么请说“不”。接下来会发生什么?最不济就是他把你解雇。那又怎样?如果你生活在西方国家,并且是名码农(当你阅读此文时,很可能你就是名码农),那么你将得到另一份工作。
对于将CSV格式的数据转换为HTML格式等诸如此类的任务,我并不想对它们说“不”。我要说的是,是否每周80小时的工作时间让你的身体吃不消,或者你觉得你的孩子需要更多的重视;或者你是否被迫解雇某些人,仅仅因为你的老板不喜欢他们;或者你是否是名咨询师,并且受雇为核电厂或坦克开发软件(有人可能会说为核电公司工作简直棒极了——这违背了我的道德标准,并且只是举例而已)。对于以上情况,你可以说“不”!
程序员不仅仅是程序员。你应该做些与计算机无关的事。在你血气方刚之时,不妨乘风破浪扬帆远航、钓鱼、潜水。还可以练习冥想、武术、或者演奏尺八(即Shakuhachi,是我国唐代时传入日本的一种竹笛)。无论你做什么,都要不遗余力。跟你在工作时间的状态一模一样。应严肃对待。爱好不仅仅是爱好,它还是在展示自我。要是有人说爱好无足轻重,谨防上当受骗!现如今,我们可以尝试各种各样的爱好。我已经录制了几张个人CD,还创作了几本科幻小说(不过小说尚未出版,我还得多多练习)。正是这些爱好塑造了现在的我,而且最终引导我练习禅修,并撰写出此博文。最近我在练习禅宗尺八,它在我的日常生活中占有至关重要的地位。
尽管花儿很漂亮,但只不过是朵漂亮的花——仅此而已。并无任何非凡之处。而你只是个会编程的人。或许你很优秀,但没有什么与众不同。你与我、或者这个星球上其他所有人都是同类。
你不仅要吃喝拉撒。当然,还要睡。(最好)在很久以后,你会驾鹤西游,你所创造的一切也将随之消失。甚至是象征不朽的金字塔很久以后也会消失。你知道那些建造金字塔的人的名字么?即便你真的知道,难道你知道了就那么重要么?并非如此。金字塔依然耸立在那里,或是随风而逝。平淡无奇。
你的软件也一样。银行正在用你的软件赚钱。不过在你驾鹤西游之后,没人会记得你。这没有任何不妥之处。正是“逝者如斯夫”!你应该对此了无牵挂。如果你正在遵循前9诫生活,那么你会发现最后这项修行既有益又有趣。现在仅有两件事,即时间的流逝,以及全神贯注地做事。
要是你的公司因财务问题而关门大吉,那没什么大不了。生活将会继续。其实根本无需xbox游戏机、汽车、或是别的东西。由于这个星球上大部分人生活在极度贫困之中。他们根本不在乎xbox游戏机,因为他们很乐意得到一些食物、乃至是水。
所以……你到底为什么与众不同?难道是因为你有幸出生在西方国家?还是因为你会写代码?不,没有什么与众不同。你可以放弃自负去自由自在地生活。尽情享受周围花儿的颜色和香味。当冬季降临时无需泣不成声,而春回大地时也不必欣喜若狂。那不过是四季更替罢了。请铭记在心,一旦某人拒绝了你的求职申请,是因为那家公司并未与众不同到你需要为那份工作而劳心费力。
我不是一名禅僧。我只是正在实践和学习之中。如果你觉得有些需要深入理解的内容,那么请向你本地的禅僧求教。当然,我会在博客中尽量为你解答,尽管如此,我还只是名初学者。无论如何,我很高兴能收到你的评论,并且要是你喜欢此文,可否愿意将本文链接发到微博上。感谢阅读!