博碩文化

禪不是紙上空談,而是切實的修煉──身心兩方面的修習。

僅僅讀書是不可能掌握禪的。意識到這一點,我試著尋求各種辦法使自己的頭腦保持良好狀態,進行禪修──甚至是在辦公室中。

電子郵件:2分鐘規則

讀一封電子郵件,回應某個事件請求,或是給一位生意夥伴打電話祝他生日快樂,像這樣的一些微任務會迅速地轉移你的注意力。要是你感到這些微任務確實必須去做,並且實際上你已經著手了,那麼,有一個原則:如果任務能夠在兩分鐘內完成,則完成它;如果需要花超過兩分鐘,就把它寫到一個待辦事項清單中。

此策略的唯一問題是,你可能會遇到有太多此類任務。有一次,我幾乎每三分鐘就收到一封電子郵件。每收到一封電子郵件,郵件客戶端都會通知我。我閱讀它們,將99%的郵件立即歸檔。其餘的都是重要的郵件,但可能要等上幾個小時。

按照兩分鐘規則,我的做法是對的。我被分神了,因而允許自己清理收件匣。但分神太多了,我於是決定減少在郵件上花費的總時間。這只要在一天的大多數時間裡,關閉郵件客戶端就可以了。

我花了一些時間來設定郵件過濾器,讓許多電子郵件可以自動被歸檔或刪除。在參與開放原始碼專案時,你可能會收到大量的電子郵件,因此按照自己的偏好過濾或標記郵件,就顯得特別重要。過濾器可以幫助我們晚些時候閱讀郵件,但又不至於忘了它。

如果你得到了一個乾淨的收件匣,說明你設定得很好。

除了過濾,我還利用了三個特殊的標籤:「待讀」、「待列印」和「稍後」。偶爾我會檢查這些標籤。

另外,我在自己的Web伺服器上建立了個人維基網頁。在那裡儲存了一些資料,作為虛擬筆記本。有些人更喜歡Evernote,它的知識儲存功能更強大。我個人偏愛維基,不過如果是想要儲存網路連結,我會使用Pocket。

不要變成極端主義者

我是一部工作機器。每星期工作很長時間。有時在非常時期,例如星期六晚上,我會寫電子郵件。但是,如果在同一個晚上,我收到來自公司一名全職員工的回應,我會有點為他擔心。在古怪的自由工作者和可靠的員工之間,還是有區別的。

作為一名自由工作者,我可以按照需要安排時間。有時我甚至可以打開電腦工作二十小時。

作為一名全職員工,我沒有這樣的自由。不管發生什麼,我需要工作四十個小時。當然,我有假期之類的休息,但四十小時的定時工作加上加班始終縈繞在我心頭。在很多情況下,你不能去休息室小憩一會兒。當你接到一通電話,說你的孩子生病了,你不能逕自開車回家──人們通常在遠離自己真正生活的地方上班。在沒有行動技術的時代,朝九晚五或每週工作四十小時的舊模式是可以發揮作用。當你回家了,你也就走了。但現在你有四十個小時的工作,還有一些加班,而且你總是透過老闆提供的閃亮平板電腦重回工作狀態。

一方面,有固定的「核心業務時間」;另一方面,有「永遠上線」的工作機制。這種結合為我們帶來了麻煩。

我所共事過的許多人都非常自豪於能在週末假日處理大量的電子郵件、改寫規格、提供服務,並且還能夠與客戶討論新功能。疲憊程度似乎成了定義一天是否過得有意義的標準。

疲憊程度對我們如此重要,何故?

今天,軟體專案規模已經非常巨大,那麼跟這有關係嗎?當你用自己的雙手製作東西時,你可以看到結果,可以為它自豪,可以秀給別人看。

另一方面,花費一週的時間清理程式碼,但不添加任何新的功能,不會有人來到你的辦公桌前祝賀如此輝煌的清理工作。相反地,幾個星期的工作價值有時會被描述為「只是一個能發送報告的按鈕」。建構產品是很多人的工作。有時你只是為無人能看到的部分撰寫程式碼,整個產品絕不是你一個人完成的。既然有這麼多的同事,你實在很少有機會可以把功勞攬在自己身上。你需要以不同的方式度量自己參與的工作,比如說,我做了一百次程式碼提交,寫了一百封電子郵件,並且為該軟體版本開了十次會議。

在理想的世界裡,我們的軟體架構,包括由小團隊手工精心建構的產品,是值得開發者引以為豪的。如果其他人可以看到我們精心製作的軟體,就更好了。如果你有二十名開發者,只有一個元件需要建構,你就會遭遇碎片化問題。沒有人能識別這一堆混亂的程式碼,人們的責任也被碎片化了。

過度投入,以及我們對於成功的定義,使得Scrum變成了一台渦輪加速器,同時也變成了一種風險。

敏捷的世界有一把鎚子──Scrum,它讓每一個問題變成釘子。從專案管理的角度看,在很多情況下,Scrum是工作流程的完美最佳化。從開發者的角度看它也很好:你搞定了工作。但是,如果團隊不重視人的因素,Scrum也有其風險。作為普通人,我們不能簡單地把四十小時的工作量放到四十個小時工作時間的一週內。需要留出時間來檢查我們的工作,要進行少量的重構,要通讀已經看過的程式碼。有時需要思考!我們無法估計需要思考的時間,也不知道需要思考多少。是否需要重新評估整個模型?你今天是否具有完整的思維能力,或者你很疲倦,因為睡眠情況不好?我們必須承認自己是人,而不能把自己分解成數據。

Scrum以時時刻刻的頻率檢視你的任務。它吸引你解決所有問題,直到完成為止。但是,嘿,這是軟體開發。如果我們觀察它們,事情會發生變化。如果我們因為太累而無法在星期二高效地工作,就會發生這樣的事。當你做Scrum計劃時,不要忘記Scrum角色背後都是活生生的人。如果你理解這一點,你就會做出更好的評估。

軟體是用頭腦製作的。這是一種創造性的工作,甚至當我們在開發過程中,應用其他創造性的工作時(例如前人所總結的設計模式),也是如此。有時候我們的工作是幾乎不用動腦的。但我們都知道,我們應該不斷地檢查同事的程式碼,識別錯誤模式或其他問題,使我們的軟體更可靠、更易理解。軟體的藝術通常是減少程式碼的藝術。當你持續面臨時間壓力,並且要不斷實現新功能的情況下,你做不到這一點。

解決的方法很簡單:如果你不能停止專注於工作任務,不妨看看你的家庭、休閒生活等等。把它們作為一項任務,計劃它,執行它,儘量享受它。將人力因素計算到你的Scrum衝刺中。不用加班衡量你的成功,週末關掉手機。到了下週一,你永遠都會更有生產力。

如果你作為團隊的一員,建構一個規模過於龐大的系統,難以產生自豪感,那麼,改變這種狀況。軟體系統不僅是可維護、可擴展和可靠的,還必須是愉快的!一個好的系統,是我們熱愛為之工作的系統,如果我們感到自豪,就能為之做出貢獻,它不應該錯誤百出。那些喜歡在花園散步的園丁才是最好的園丁。(摘錄整理自第四章)

 

程式設計師之禪(The Zen Programmer)

Christian Grobmeier/著

榮耀、朱豔/譯

博碩文化出版

售價:320元

 

 作者簡介 

Christian Grobmeier

Christian Grobmeier在1998年出售了他的第一個網站,此後他的職業生涯歷經了網站開發者、顧問、架構師及經理等職位。

然而在每週工作75小時後,他意識到自己變得有如喪屍電影裡的行屍走肉,於是他開始禪修,並從中經歷到實質的轉變。

如今Christian是一名自由工作者,成立了自己的公司。在閒暇時間,他會進行禪修,並在大學裡研讀心理學。

熱門新聞

Advertisement