程式設計師的禪修之路

thinkphp_dy發表於2014-05-06

早晨,外面下著雨,我發覺自己正坐在辦公桌上琢磨有關高效率工作(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

相關閱讀
評論(2)

相關文章