電腦程序員的十條禪法

程序員是一份特別辛苦的職業,也是一個承受各種壓力的群體。每週6天工作,無休止的加班,甚至過勞死,程序員的身心健康面臨很大的問題。禪是另一種生活方式,在物慾橫流的今天,禪對於程序員有著特殊的意義和價值。

幾百年前,禪宗大師開示眾生:該說「不」時且開口,生命掌握在你手中。

今天依然如此。禪修並非史蒂夫·喬布斯這樣的業界精英的專利,你也可以。 禪修並非只能在週末進行,任何時候都行,甚至是現在,是的,就在此刻,從程序員禪的10條法則開始。

1.專注

禪修程序員一旦開始工作,就應該全力以赴,做到最好。請不要同時展開多項工作。一次僅做一事就好。一心多用不會讓效率更高,只會使你應接不暇。超負荷工作會讓人疲憊不堪、容易出錯,而且在不同的工作之間頻繁切換也會浪費時間。這是條通用的建議,不僅僅適用於編程工作。

澤木興道禪師教誨:若需睡覺,盡管睡。當決定休息的時候,不要再去想軟件的事,盡管睡覺。要是打算編程,就盡管去編,不要再做白日夢,專注它。一旦你疲倦不堪而無法編程,你就需要睡覺了。即使是以一心多用出名的Stephan Uhrenbacher,也會決定進行單線程式的工作。我有和Setphan類似的體會,於是自己寫了一個時間跟蹤工具—Time & Bill。我的目標是方便地跟蹤時間消耗,包括像打電話這樣的小事。現在,每日伊始我會創建幾個秒錶,鼠標一點就可以跟蹤時間的使用。起初慘不忍睹,有時 我在一項工作上只花了幾分鐘就轉到另一項工作上。現在我做得好多了。與番茄工作法類似,我計劃了幾個時段,努力保持專注,其間不閑聊,不睡覺,不去查看AppStore上好玩的新遊戲。

2.心無雜念

在動手編程之前,你需要清空頭腦,摒棄一切雜念。如果你有什麼麻煩事,不要讓它影響你。在大多數情況下,煩惱會自行消失。如果雜念太多,無法驅除,就暫且不要工作。一定努力清除它們。而你一旦開始工作,請暫且忘記身外的世界。

郵件列表中有令人興奮的內容?別管它,你可以晚些時候再興奮。關掉所有會佔據你頭腦的垃圾程序:推特、臉書和電郵。你甚至應該將手機設為靜音並放進口袋裡。或許你會說這條規則類似於第1條「專注」,然而這條中還應有一個限制:在工作前或午餐時不要使用這些工具。這些東東把你連接到花花世界,帶來新的煩惱或耗精力玩意兒。

設想一下,當清晨醒來時,通常你的頭腦會很清醒。如果不然,可以做些運動。等你感到神清氣爽了,請盡所能立馬開展工作。工作結束後,你才可以去想那些亂七八糟的東西。當歷經繁忙而充實的一個工作日後,你會發現原來那些東西其實並非多麼有趣。推特、臉書之類會消耗我們大量的精力,別以為只要分把鐘,絕非如此。

3.初學者心態

別忘了自己還是初學者的那些日子。或者如果你目前就是個初學者,請堅守這份新人情懷。你所學到的遠遠不夠。如果你已經是個專家了,不妨每天也把自己當成初學者。堅持以初學者的心態來對待技術問題,這樣你就能更容易去接受那些讓軟件更好的修改,不落俗套。即使那些經歷不如你的人也可能會提出一些好主意。有哪一個軟件的兩次構建方法會完全相同呢?即使你去複製(仿製)軟件,建構過程也不會完全相同。

4.無我

一些程序員存在的大問題是:過於自我。但其實,我們沒有時間過於自我,沒有時間成為一個搖滾明星。

誰能決定你的編程水平呢?你自己?不是。別人?可能吧。你可以拿蘋果跟香蕉比嗎?不能。你是個個體。你無法將整個自己與他人去比較,只能說某些方面的比較。

有個技能有啥可自豪的?你擅長Java?酷,別人是不如你,但他擅長打保齡球,你行嗎?Java比保齡球更重要嗎?恐怕要視具體情況而定。你可能因為Java賺得多一些,但別人可能從生活中獲得了更多的樂趣,因為他有一群保齡球友。

你真的對自己是個極客感到自豪嗎?過於自我的程序員容易故步自封。請保持謙虛,向他人學習,不管他是個老手,還是菜鳥。

澤木興道禪師教誨:「你並不重要。」

自己想想。

5.不要設置職業目標

如果你總是想得到些什麼以至於忽略了當下的生活,你已經輸了。對於工作,全力以赴即可,別去管將來很長一段時間後才可能達成的目標。

難道拚命工作20年,就是為了成為公司股東?為什麼不能因為樂趣而勤奮工作呢?如果真心喜歡,即使辛苦也會樂在其中。「一日不作,一日不食」,禪宗如是說。

沒有必要等到20年後再去尋找快樂。即使不是公司股東,即使沒有保時捷跑車,現在的你也能擁有快樂。天有不測風雲,你可能突然大病一場,可能被解僱,也可能會面臨油盡燈枯(如果你遵循了所有這些忠告,我猜這種可能性會大大降低)。

除非這些不好的事情發生,否則只管盡力去工作,並樂在其中。沒有理由去和同事攀比收入,也沒有理由對未得到的高薪職位耿耿於懷。

畢竟,所得終將會來。你將收穫美好的回憶,或許還有個好職位—以及那精彩的20年。每一天都是美好的。

如果某天你認為在公司工作已毫無樂趣可言,請果斷離開。千萬不要待在奪走你生活之樂的公司。當然,這要在發達國家才現實,因為這裡的人完全可以自由跳槽。如果你正生活在這樣的優越環境中,果斷下決心吧。盡管離開,無怨無悔。時間不可輕易浪費—生命無常,或許明天它就會消逝。

如果你沒有設定職業目標,轉身離開將會容易很多。

6.敏事慎言

如果沒有什麼要說的,就不要去浪費同事的時間。這樣做並不會讓你看上去懦弱無能。在每天的工作中,盡量不要去無端惹人心煩。試想一下,要是每個人都努力做到,那將是一個多麼好的工作環境啊?雖然有時這是不可能的,但請努力做到,你會喜歡的。

如果你不過於自我,就很容易做到謹言,只關注當講之事。不要把你的「個人經驗」變成了「自負」。永遠記住:你是一位初學者。如果他人有好主意,請保持隨喜心。

如果沒有什麼要說的,就不要去浪費同事的時間。這樣做並不會讓你看上去懦弱無能。在每天的工作中,盡量不要去無端惹人心煩。試想一下,要是每個人都努力做到,那將是一個多麼好的工作環境啊?雖然有時這是不可能的,但請努力做到,你會喜歡的。

如果你不過於自我,就很容易做到謹言,只關注當講之事。不要把你的「個人經驗」變成了「自負」。永遠記住:你是一位初學者。如果他人有好主意,請保持隨喜心。

7.正念·觀照·覺察

是的,你正在工作。但與此同時,你也在呼吸,在生活。即使工作再忙再累,也要傾聽身體發出的信號。你要知道哪些東西對你是有好處的,所有的,包括像食物 等生活必需品。要關心自己及周圍環境中一切,畢竟,你所喝之水就來自於周邊這條河流。記住,你是為自己而生的—一個人生來,也將一個人死去。即使沒有你,地球依舊轉動。

請避免在你不喜歡的那種環境下工作。如果某類無償工作已經讓你毫無樂趣可言,而且又剝奪了你的睡眠時間,那就拒絕它。放下所有那些讓你不快樂的事情。你以為無償工作只停留在理想中嗎?想一想那些在空閑時間編寫開源軟件的人。要是你曾訂閱過某個開源項目的郵件列表,你就會知道那兒有多少激烈爭論(至少有時如此)。如果你覺得它沒有什麼樂趣,就不要再做了。我認識不少人,他們在自己不喜歡的開源環境中依舊貢獻著。利用Time & Bill軟件,我再次跟蹤了自己在開源項目上花的時間,結果真是令人驚訝。我在那兒浪費了大量的時間,尤其是在許多自己不太喜歡的項目上。

鑒於此,有些人認為只有當有空閑時間,晚上有Xbox玩、有啤酒喝才會快樂。偶爾為之這尚且算是個好主意,但未必在人生的每時每刻這都算是「樂趣」。如果你能避免不喜歡的環境,請避開它們。話說回來,有時我們確實需要做一些無趣的事。例如,手工將經理給的Excel電子錶格數據複製/粘貼到 phpMyAdmin中。這可能要花上幾天,而且無聊至極。這種事沒有樂趣可言,但有時你確實需要去做。你總不能因為被分配一個乏味的任務就辭職。

禪僧也不羞於他們的工作。他們凌晨3點起床(有時早一些,有時晚一些,取決於僧院),然後即開始靜坐和勞動(他們甚至將勞作當作禪修的一部分)。或者清掃廁所,或者料理菜園。如果是一名火頭僧,還要做飯。無論做什麼,他們都一心一意。沒有痛苦,樂在其中。對他們而言,每一秒都是生命中寶貴的一刻,逝去即永不再回,即便是在掃廁所時。

換言之:停止抱怨,如果你需要複製/粘貼Excel,做就是了。無須為這樣的事情心神不寧,一切都會過去,就讓自己成為最好的Excel複製/粘貼者吧。

要是你在工作中心臟病發作,有人也許會說:「是的,他真是一個勤勞的員工,甚至在晚上為我免費加班」。沒有人可以指引你去另一個世界,最後一步是由我們自己走的。你無法拿這個世界中的任何東西與另一個世界進行交換。在生命中的每一秒你都要多多保重。如果你死了,人也就沒了,一切成空。但如果你還活著,你就是活生生的一個人。沒有時間可以浪費。

在禪宗中,「觀照」是一個重要的詞彙,並且我認為在各種佛教宗派中都是如此。我無法用言語來表達這個詞所要表達的一切內容。要理解「觀照」的方方面面含 義是很難的。也許用「覺察」這個詞更好把握一些。每時每刻,你都要覺察自己的所作所為。在你的一生中必須保持正念,否則就是在浪費時間。當然,究竟該怎麼做,完全取決於你自己。勉力為之。

8.做自己的老闆

是的,某人付你薪水,告訴你需要做什麼。而且他還可以解僱你。但這都不是你放棄自己的生活,成為工作狂的理由。總之,老闆對你沒有控制權。你甚至也可以懷疑你對自己有無控制權—打住,不要走火入魔。

回到談老闆。如果你一味縱容的話,老闆可以讓你的生活變得老糟糕。但是有一個解決辦法。如果他要你做一些恶心或有違個人道德底線的事情,你大可說 「不」。這會有什麼後果?最壞的結果無非是被他開除。那又如何?如果你生在發達國家,如果你是一個程序員(要是你正在閱讀這些文字,你大概跑不了),你會找到另一份工作。

我並非說對將CSV數據轉換為HTML格式之類的任務說「不」。我指的是,一週工作80小時,導致你精神崩潰;你的孩子需要你的照料時;或者僅僅因為老闆不喜歡誰就要你開掉他;又或者身為一名諮詢師,卻受僱為核電廠或坦克開發軟件(有些人可能會說為核電企業工作好極了,但這違背了我的道德底線,這裡只是舉例而已),等等這些,你大可以說「不」。

9.玩物養志

程序員不止是一個程序員。你應該嘗試一些跟計算機無關的事情。在你的閒餘時間,可以颺帆出海,去潛水,或者靜坐冥想,練練武術,吹吹尺八。不管你做什麼,都要盡情盡意,就像在工作時間那般投入。認真去做。愛好不僅僅是愛好,它也展示了你究竟是怎樣的一個人。不要被任何說愛好不重要的人矇騙。現在我們有能力擁有愛好。我已經錄製多張CD,還寫了幾本科幻小說(後者尚未出版,我還得多加練習)。這些事情塑造了今天的我,並最終導致我參禪,寫成本書。近來我時常練習禪宗尺八,它在我日常生活中佔據重要的地位。

10.淡泊寧靜

花朵再美也不過是一朵花而已,並無特別之處。而你,是一名程序員,也許很優秀,那也沒什麼特別的。你、我以及生活在這個星球上的其他人,都沒什麼兩樣。

你需要吃喝拉撒。當然,你還需要睡覺。很久以後你終究難免一死,你擁有的一切全都會失去。很久以後,甚至金字塔都會消失。你知道建造金字塔的人們的名字嗎?好吧,就算你知道,但這很重要嗎?一點都不。金字塔佇立在那兒,或者不佇立在那兒,有什麼特別的呢?

這同樣適用於你的軟件。銀行用你開發的軟件賺錢,當你離開後,沒有人會再記得你。這本來也沒什麼錯,只不過時間流逝,逝者如斯矣。不應該對此感到煩惱。如果你遵循了上面的9條規則,就會明白:那個優秀、有趣的項目已經過去了。現在,是時候繼續前行專注他事了。

公司因為財務問題關閉了,沒什麼大不了的,生活仍將繼續。Xbox、汽車等並非不可或缺。這個星球上的大多數人還很貧困,他們不關心Xbox,得到食物甚至只是飲水都會讓他們快樂不已。

那麼,為什麼你是特別的?因為你命好出生在一個發達國家?因為你可以編寫代碼?不,沒有什麼特別之處。請放棄「我執」,自由自在地生活,享受花兒的美色和馨香。當冬天來臨時,不必傷心難過;等春天回歸,亦不必欣喜若狂。不過乃四季交替,順其自然就好。請記住這一點,尤其在有人拒絕你的求職申請時。沒有哪家公司是如此特別,值得你非要得到它的青睞。

《程序員之禪》[德] Christian Grobmeier