The Zen Programmer 程式設計之禪書摘


Posted by KD Chang on 2020-10-18

前言

之前因緣際會閱讀了 The Zen Programmer 程式設計之禪 這本書,光看書名很可能會認為書中主要討論是宗教靈性相關議題,但其實主要的篇幅還是討論如何將一些禪修相關的概念融入在工作生活當中。先說明一下,書中內容其實偏向身心靈和習慣養成的層面,不會提到有關程式設計相關技術或是軟體開發的方法論,可以當作輕鬆的散文或是小品文來閱讀,擷取合適的部分運用在工作生活當中。本文將摘錄一些書中提到的觀念並結合筆者工作生活上的經驗一起分享給讀者,若有興趣的讀者可以一起交流討論或是更深入去閱讀相關書籍。

為什麼要學習禪修程式設計?

書中作者開宗明義就介紹了為何自己會開始學習禪學?主要原因在於自己在工作、生活和健康上遇到極大的挑戰。在生活上不斷上演:不斷工作 -> 無止盡的加班(可能是需求變更、專案管理不當等) -> 大魚大肉、喝酒、通宵玩樂放鬆犒賞自己 -> 不斷工作 -> 無止盡的加班 的迴圈循環(對於某些工時和工作壓力大的讀者來說這樣的場景或許有些熟悉)。在這樣的循環中感覺人生就像是行屍走肉一般,最後健康也出了狀況。直到有一天因緣際會開始嘗試改變並認真看待如何透過學習禪學來改變自己的人生。

那究竟為什麼要學習禪修程式設計呢?作者認為學習禪修程式設計可以有助於提升工作和生活品質。透過冥想禪修打坐等方式搭配良好的工作習慣磨練專注度和平靜心性。千萬記得程式開發背後是透過人來進行,人的狀態往往會影響程式設計品質良窳,人在憤怒、情緒不穩定和極度高壓力下往往寫出的程式品質會有許多問題。

看看以下的例子:

Joe 是一個軟體工程師,當他開完每天早上的例行 Scrum 站立會議後回到座位上,開啟 Email 回覆了幾封信件,突然間隔壁座位 PM 的電話響起,由於同事剛好不在只好幫忙代接電話。接完電話開始著手修復剛剛 PR 產生的 bug,剛開始閱讀一下 API 文件,朋友 Mark 分享一則有趣的新聞,點擊進去看後看著看著又瀏覽到 Twitter 上的一些新訊息。突然想到不知不覺下一個會議即將到來。等開完會後再回到辦公桌前,Joe 努力喘口氣但卻已經記不得剛剛做的事情和工作的思路。

看到這裡或許也會有讀者感到心有戚戚焉,一天工作時間往往在回覆 Email、處理私人或家庭瑣事、無止盡的會議、零食區/茶水間的同事八卦閒聊中流逝,實際可以專注在技術開發的時間可能不到 3、4 小時。所以有許多工程師/程式設計師偏好在深夜工作,某種程度就是因為深夜的干擾會比白來來的少,工作起來更有效率。

除了冥想禪修打坐等方式,我們也可以透過建立一些良好的工作習慣來保護自己的時間,提高工作效率。

  1. 排除不必要的會議
  2. 界定不被打擾的時間
  3. 建立讓自己可以進入心流的儀式
  4. 保有充足的睡眠

程式設計師的十條禪修法則

除了舉了許多工作生活的案例和將禪修運用在提高工作效率的小技巧外,作者最後也彙整了程式設計師的十條禪修法則(與其說是法則,不如說是人生累積的一種智慧)可以讓讀者運用在程式設計師的職涯發展和日常工作上,以下筆者擷取書中一些概念並加入自己的一些工作生活經驗和體悟與讀者分享。

專注

一心一用,該工作時就努力投入,該休息時就好好休息,多工處理往往會事倍功半。

心無雜念

適度的使用社交軟體雖然有趣,但若在工作時一直想著其他人的動態或是訊息往往會讓自己無法專注在工作上。

初學者心態(虛懷若谷)

還記得剛學習不同技術時的好奇心和熱情嗎?隨著經驗的累積和人生不同責任的堆疊,許多程式設計師/軟體工程師已經失去了探索新事物和新技術的熱情。不管你的經驗或是年資得多寡,請持續保持初心者的心態,世界很大,在資訊科技的職涯中永保謙遜和對於新事物的熱情才能走的長遠。

無我

有些程式設計師/軟體工程師在工作上若有一定經驗時,有時可能會變得過度堅持自己對於技術的想法或是意見。世界上沒有最好的程式語言或是工具,只有最適合的。保持無我的心態才能在進行技術評估選擇或是會議討論時提出中性且對於團隊最好的建議。

不要設定職業目標

所謂的不要設定職業目標不是說對於自己的職涯發展沒有任何規劃,而是比較偏向每天的工作應該都要享受當下的樂趣並接受不同職位的挑戰。例如:若為網頁前端工程師不用限制自己只能做前端,也可以嘗試了解後端或是 DevOps 相關工作。若你在工作上已經感到沒有學到東西或是沒有舞台可以發揮時,或許可以思考轉換跑道的可能性。若是設定硬性的職業目標往往會讓自己無法果斷的離開。

敏事慎言

避免對於不熟悉業務的新人頤指氣使和參與辦公室政治和八卦,請記得在職場上往往做人比做事更重要。

正念、觀照、察覺

在工作生活中請無時無刻都要留意身心發出的訊號,若是因為頻繁的熬夜加班讓自己的身體發出警訊時千萬別忽略它。此外,把握生命中的每一刻,盡情的專注投入其中。

做自己的老闆

做自己的老闆不代表自己要獨自創業,而是對於自己所做的事情擁有選擇權。舉例來說,技術是一種中性的工具,但若是運用在從事架設非法行為的網路服務或是侵犯到你道德底線的任務時,你應該勇於說不。不要為了錢或是其他利益,而放棄了自己的良知。

玩物養志

除了技術和程式設計外可以多培養額外其他的興趣:烹飪、旅行、登山、健行、閱讀、音樂、電影等,可以讓工作和社交生活可以更加豐富有趣,同時也可以拓展自己職涯生活的視野和可能性。記得技術只是工具,好的產品最重要的是解決客戶和產業的問題,這當中背後的商業邏輯和產業知識就是不同領域經驗的累積。

淡薄寧靜

不管是你曾經追求的頭銜或是公司職位甚至是職場上某件讓你耿耿於懷的事情或是前同事,隨著時間過去已不再需要過分執著。生命脆弱,人生苦短。對於人生,好好把握當下,盡人事聽天命。

總結

以上摘錄了一些 The Zen Programmer 程式設計之禪這本書中提到的觀念並結合筆者工作生活上的經驗一起分享給讀者,若有興趣的讀者可以一起交流討論提出不同的想法和觀點,分享自己的經驗或是更深入去閱讀相關書籍。在資訊量爆炸和注意力稀缺的時代,保有良好的習慣十分不易,定期檢視自己的工作流程是一種解法。希望每位讀者在軟硬體開發和程式設計這條路上都能走出屬於自己的一條路!


#zen programmer #禪修 #程式設計之禪 #閱讀心得









Related Posts

D15_ Unit4

D15_ Unit4

關於 React 小書:將 JSX 傳入函式,再把回傳的 JSX 放到頁面

關於 React 小書:將 JSX 傳入函式,再把回傳的 JSX 放到頁面

SQL-injection lab(6)

SQL-injection lab(6)




Newsletter




Comments