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

程序之禅
服务器君一共花费了515.118 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

做一名禅修程序员意味着什么?那意味着,你要持守我从禅宗 习得的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赚到更多的钱,不过其他人由于结识他的保龄球友,他们可能拥有更多的生活乐趣。

由于你是名极客,就真地值得骄